CiNii Articlesから共著関係ネットワークの可視化
みたいなWebアプリを作りました。
CiNii CoAuthor Network
http://ciniicoauthornetwork.appspot.com/
id:haseharu先輩のアイディアやアドバイスによるところばかりです。ありがとうございます!
キーワードを入力すると(時間はかかりますが)以下のような感じでネットワーク図といくつかの統計指標を出力します。
データ抽出の条件は以下のとおりです。
- 検索結果の上限は1000件
- ノードが著者(大きさ・色は論文数によって決めています)、エッジが共著関係にある論文数を表しています。
- 重複データはタイトル完全一致を条件として除去
- 著者名の先頭がアルファベット・カタカナで始まっているデータは除去*1
- 同姓同名の著者は区別していません。
- 単著の論文が1件のみのデータはネットワーク図には表示していません。
こんな感じなのであくまでも参考程度の情報です。おおざっぱに特定領域における研究コミュニティの雰囲気を感じるのに使ってみて貰えればと思います。先にあげた「図書館 システム」というキーワードでは筑波大を中心としたグループと九大を中心としたグループがあることが見てとれます。
使ったツールなど
- Google App Engine — Google Developers
- Python Programming Language – Official Website
- Overview — NetworkX:ネットワークの構築や分析に、Pythonのライブラリ。
- CiNii - メタデータ・API - CiNii Articles 論文検索のOpenSearch:分析用データの収集
- D3.js - Data-Driven Documents:ネットワークの可視化。
- Bootstrap:レイアウトやフォームデザインに。
ソースコードはgithubで公開しています。
https://github.com/otani0083/ciniicoauthornetwork
参考情報
- d3.jsで力指向グラフを使って遊ぶ~force layout & zoom & pan | Scimpr Blog
- D3.jsでForce-Directed Graphを使ってラブライブ!のキャラ関係を可視化する - AOI-CAT's diary
- Gallery · mbostock/d3 Wiki · GitHub
私的メモ
- Google App Engineで日本語入力をするときにencode("utf-8")でユニコード文字列にエンコードすること。
- webapp2のテンプレートでエスケープシーケンスをそのまま入力するときには{{hoge|safe}}と入力すること。
- Google App Engineでファイル出力が出来ない。>>htmlにJsonデータを直接書き出すことでとりあえず暫定解決。htmlがひどいことに…。
*1:結果として著者数の平均値が1より小さい値をとることがあります。