Microsoft Academic APIを利用してみた
Microsoft Academic APIは,Microsoftの文献検索用の検索エンジンであるMicrosoft Academic Searchのデータを外部プログラムから利用するための,いわゆるWeb APIです.
以前は登録制で,使用目的などをメールでMS社に伝えると,IDが送られる形式だったそうですが,現在はMicrosoft Azure Marketplace上でWebサービスとして提供されているようです.*1
このAPIについてはあまり情報が多くないため,できることについてまとめておこうと思います.
Microsoft Academic APIでできること
とりあえず
https://api.datamarket.azure.com/MRC/MicrosoftAcademic/v2/Paper?$filter=ID%20eq%20224857
このURLを実行してみるとよい.
これは,Paperというスキーマから,idが224857となる論文の情報を取り出すリクエストである.
こんな感じで,文献,著者,論文誌,引用についての情報をMASのデータベース(RDB)から抽出できる.
一応,リファレンスは存在して,詳細については
MicrosoftAcademicSchemaRef.docx - Microsoft Word Online
に記載されている.
しかし,Paper_Refのスキーマ情報がなかったり,完全なものではない様子.
APIを試してみる
最も手っ取り早くこのAPIを試してみる方法として,Webインタフェースを用いる方法がある.
Microsoft Academic APIは,Webインタフェースを持っており,クエリに対する結果をテーブルの形で確認することができる.
今回は,わかりやすさのため,この方法を紹介することとする.
※外部プログラムからAPIを利用するだけなら,(適切なクエリがわかっていれば)以下の手順は必要なく,上のようなリクエストを送信するだけでよいことに注意.
- Microsoft Azure Marketplaceへサインインする.
Microsoftアカウントがあれば,そのアカウントでログインできる.
ない人は取得を.
- 「サインアップ」をクリックして次の画面に移動し,利用規約を読んだ上で,「サインアップ」をクリックする.
- 「マイアカウント」 -> 「マイデータ」 -> 「Microsoft Academic」から,「使用」をクリックする.
- 下のような画面が表示されたらOK.
この画面では,GUIのインタフェースで,文献情報の検索結果と,同じ検索を行いたい時のクエリとなるリクエストURLを表示している.
例えば,文献引用数が200以上の論文誌を検索したい場合には,「PaperJournalCount」スキーマのタブをクリックし,「paperCount」カラムにフィルターをかければよい.
このページ上部に表示されているURLにGETリクエストを送信すると,検索結果に対応するデータがXML形式(かJSON形式)で返される.
このXMLをスクレイピングツールなどでいじって,欲しい情報を取り出せばよい.
使用する上での注意点
このAPIは無料で利用でき,トランザクション数にも制限はない.
しかし,同一IPアドレスから分間300以上のトランザクションを要求されると,503を返すとのこと.実際のURLを見てもらうとわかるが,クエリパラメータの記法がわかりにくい*2.
サポートされる OData クエリ オプション
JSON のサポート
↑のあたりは参考になった*3.このAPIで用いられている"PaperID","AuthorID"は,Microsoft Academic Searchで用いられているものと一致している*4.
例えば,
http://academic.research.microsoft.com/Author/1272548/eric-lander
は,Eric Landerについての著者詳細ページだが,APIにおける"Author"スキーマにで,IDが"1272548"の著者を確認すると,これもEric Landerとなる.
参考
Microsoft Academic Search API dataset in Windows Azure Marketplace