[Paperpile]論文の引用関係をネットワークで可視化するアプリケーションを作成しました

公開:2021/01/06
更新:2021/01/06
4 min読了の目安(約4100字TECH技術記事

Citation Viewer

Animation

この記事は

  • iwashi_serが執筆しています.
  • Paperpileに登録している論文情報を可視化するアプリケーションを作成しました.
    その経緯や,アプリケーションの使い方,技術的な補足説明を行います.

TL;DR

  • アプリケーションはこちら

  • 使い方はこちら

  • Pythonで解析を行いたい方はこちら

背景・モチベーション

  • 論文の解析,特にネットワーク解析は古来よりある研究分野であり,著者の関係や論文の関係などをグラフ化し,経路検索やネットワーク中心性の計算や,シーズ探索を目的としているものがあります.
  • 今回の私のモチベーションは,自分が読んだ(登録した)論文の範囲の中の関係性を可視化して整理したいと思った,というものです.世の中には論文を検索して,その論文の引用関係などを可視化するアプリケーションなどはたくさんありますが,自分が読んだ範囲で,というものは見当たらなかったため自分で作ることにしました.
  • 自分の手持ちの論文を俯瞰することで, 自分の調べたことをマクロな目線で整理することを目的としています.
  • もともとは自分の手元で確認する用に作っていたのですが,どうせならということでOSSで公開しました.

関連研究・プロダクト

Connected Papers


論文の引用関係だけではなく,独自に計算した類似性をエッジを貼る特徴量として用いてるところが興味深いネットワークです.

CitNetExplorer


Eckらによる論文の引用関係の可視化.商用利用でなければ無料で利用できます.

Microsoft Academic


意外と知られていないのですが, Microsoftが提供する論文データベース.これはグラフネットワークではないのですが, スクレイピングが禁止されているGoogle Scholarとは異なり, 論文のメタ情報がAPIで取得できる経路が用意されていて,それがAzureと同じ課金でできるので便利です.

手法

  • PaperpileからExportしたjsonファイルを元に, DOIをキーとしてCrossref( https://www.crossref.org/ )からメタ情報を取得し, グラフを作成します.
  • DOIが存在しない場合は,Crossrefの検索APIでタイトルからDOIを同定しています.これは完全に正確ではなく,登録していた論文と異なる場合があります.(検索関連性スコアが一番高いものを利用しています)
  • ネットワーク可視化にはd3.jsのversion 5を利用しています(いつの間にかv5出ていたんですね……).
  • フロントエンドはAngular 10を利用しています.バックエンドはありません(いまのところ).

このアプリケーションは何が新しいのか

  • paperpileのjsonを利用している,すなわちデータソースの部分のみだと思います.zoteroやMendleyなどでは古よりやり尽くされているように思います.
  • また, ブラウザベースでクライアントヘビーで使っているので,インストールは不要で,かつ,ユーザー情報をサーバーで扱わずに,かつサーバーに負担をかけずに各自のPCスペック・ネットワーク速度に依存した作りをすることで(各自の環境が整っていることを前提とした上で)いつでも快適なブラウジングを可能にしています.

使い方

環境

  • Windows, Mac OS, Linux, iPad OS
  • Google Chrome

手順

  1. Paperpileからjsonファイルをエクスポートします.
    Paperpile -> Settings -> Export -> Export to JSON
    Setting
    Setting

  2. Citation Viewerにアクセスし,先ほどエクスポートしたjsoファイルを開きます.

これらの処理は全てクライアントで行われるので,jsonファイルやその他個人情報がサーバーに送信されることはありません.
Setting

画面説明

Setting

  • 各ノード(まるい円)は論文,各エッジ(線)は引用関係を表します. 矢印がA -> Bのようになっていた場合,Aという論文がBという論文を参照していることを示します.
  • ノードの大きさはインパクトファクターを表します.厳密には被引用数と比例します.これはPaperpileに登録してある論文集合内の被引用数ではなく,Crossrefから取得したメタデータに含まれる被引用数です.
  • 'Fetch Success'は,Paperpileに登録していある論文のDOIから正しくメタ情報が取得できたことを示します.
  • 'DOI not in paperpile'は,Paperpileに登録してある論文にはDOIが設定されていなかったので,CrossrefにてタイトルからDOIを同定したものになります.この同定の精度は必ず正しいというわけではありません(類似名の論文が存在するため).
  • 'Cannot Find DOI'は, タイトルからDOIが同定できなかったものです.

どうすればネットワークが改善するか

  • まずは論文のDOIを正しく設定することです.引用関係はDOIをキーとしているので,DOIを豊富に設定するほど,ネットワークは充実したものになります.

機能リクエスト

Future Work(今後の展望)

  • Paperpileのタグを私はよく使っているので,この情報も可視化したいです.
  • 毎回jsonファイルのアップロードは正直手間なので,Paperpileの認証機能やAPIが公開されることを望んでいます(リクエスト済み:https://forum.paperpile.com/t/i-have-created-an-application-to-visualize-citation-relationships-from-paperpile-json-files/5989)
  • グルーピングして整理できる機能を追加したいです
  • メモの追加やネットワークの保存機能を追加したいです
  • zotero対応
  • 論文フィルター機能
  • ダークモード(やってみたんですがどうやっても見にくく苦戦中です……)

結論

  • 自分が欲しいと思っていたものを作れるというのはとてもいいことだと感じました.
  • そもそもPaperpileは本格利用していないのでまだ整理するほどでもないのですが,それでも俯瞰してみると,「あ,自分が読んだこの論文はこういう流れでつながっているのか」と一眼でHistoryを追えるのはとても有意義であるように感じました.
  • あと,この論文はこんなに世の中にインパクトを与えた論文なのか…….という気付きを得ることもできました.

最後に……

  • このアプリケーションのさらなる発展のために投げ銭(ほしい物リスト)を募集しています!!
  • このアプリケーションを使ってみて少しでも良いと思ったり,今後の展開に期待いただけたなら,わずかでも寄付いただけると励みになります.(Amazonギフトは15円から受け付けています!!)

Wish List