はじめに
以前論文検索アプリケーションの開発と解説記事を作成したのですが、そこでArxiv APIそのものがとても有用であることに気付きました。そこでArxiv APIを用いた、論文自動収集アプリケーション(CUI)の開発について簡単にまとめます。
github:https://github.com/nomnomnonono/Arxiv-Downloader
方針
- Arxiv APIを用いることで論文情報を簡単に取得できるが、Arxivには数え切れない量の論文が投稿されているため、その全てを取得しようとするのは非効率
- そこで検索クエリを工夫して、論文タイトルに含まれるキーワードやカテゴリを指定することで、自身が欲しい論文に絞って収集することを考える
- 前回収集時の時刻を保存しておくことで、次回実行時に前回実行時からの差分のみを取得する
- configファイルで検索クエリ等の各種設定を用意することで、論文カテゴリ(Segmentation, GAN, etc.)ごとの収集を別で実行できる
実装
後で書きます。
使い方
まずconfigファイルの例を以下に記載します。
base_dir: data # データ保存先のベースとなるディレクトリ名
before: '20230525215921' # 前回収集時刻
download_pdf: false # pdfの保存をするか否か(とても時間がかかる)
max_results: 1000 # 最大取得件数(基本的にはかなり大きくする)
query: 'ti: fairness AND (cat:cs.LG OR cat:cs.AI OR cat:cs.CV)' # 検索クエリ
tag: fairness # configファイルを識別する一意なタグ
実行結果は以下のようなディレクトリ構造で保存されます。
base_dir
├ {tag}.csv
└ tag
├ a.pdf
├ b.pdf
...
プログラム実行後にはconfigファイルのbefore (前回収集時刻)
が自動で更新されるようになっています。
ユーザが実際に任意に変更するquery (検索クエリ)
について簡単に説明します。(詳細な情報はこちらをご覧ください)
例のconfigファイルでは、タイトルにfairnesss
が含まれている
ti: fairness
かつ
Arxivで定義されているカテゴリがcs.LG, cs.AI, cd.CV
のいずれか
cat:cs.LG OR cat:cs.AI OR cat:cs.CV
であるような論文を取得するように設定しています。
他にも著者や投稿日時等を用いて検索を行えるので、自身にあった使い方をしていただければと思います。
おわりに
ここまで読んでいただきありがとうございます!
簡単なアプリケーションのため解説も丁寧ではないのですが、是非ご活用していただければと思います