はじめに
学術研究では、参考文献の管理は重要である一方、手間がかかる作業です。特に論文を書く際には、文献の引用形式をさまざまなデータベースから取得することがよくあります。この問題を解決するため、get-bibtex という Python ライブラリを開発しました。これにより、研究者は複数の学術データベースから BibTeX 形式の引用情報をすばやく取得できます。
なぜ get-bibtex を選んだのか?
1. 複数データソース対応
- CrossRef(最も網羅的な DOI データベース)
- DBLP(コンピュータサイエンス文献データベース)
- Google Scholar(API キーが必要)
2. スマートなワークフロー
3. シンプルで使いやすい
4. ファイルの一括処理
# 从文件读取并保存
workflow.process_file(
input_path="papers.txt",
output_path="references.bib"
)
主な機能
スマートなフォールバック機構
- あるデータソースの取得に失敗した場合、自動的に別のデータソースを試す
- 引用情報を可能な限り多く取得できる
進捗の確認
- tqdm で処理の進捗を表示する
- 一括処理の状況をひと目で把握できる
エラー処理
- 詳細なログを記録
- API の制限やネットワークエラーを適切に処理
出力の整形
- BibTeX を自動で整理して整形
- 出力形式の一貫性を確保
活用シーン
論文執筆
論文を書くときは、DOI やタイトルから直接引用情報を取得できます。
文献レビュー
大量の文献引用をまとめて処理できます。
Attention メカニズムに関する論文の引用情報を取得
次に挙げた論文の引用情報を取得する場合を考えます。
- FedMSA:フェデレート学習におけるモデル選択と適応システム
- Attention Is All You Need:Transformer の先駆的な研究
- Non-Local Neural Networks:非局所ニューラルネットワーク
- ECA-Net:高効率なチャネル Attention メカニズム
- CBAM:畳み込みブロック Attention モジュール
CrossRef で取得(DOI 経由)
出力例:
DBLP で取得(タイトル経由)
from apiModels import DBLPBibTeX
fetcher = DBLPBibTeX()
# CBAM
bibtex = fetcher.get_bibtex("CBAM: Convolutional Block Attention Module")
print(bibtex)
出力例:
ワークフローで複数の引用情報を取得
ファイルの一括処理
複数の引用情報を含むファイルを処理するワークフローを作成できます。まずワークフローを作成して、データソースを追加します。
入力例: papers.txt
出力例: references.bib
インストール方法
pip を使う場合:
pip install get-bibtex
Poetry を使う場合:
poetry add get-bibtex
ベストプラクティス
メールアドレスを登録する
Pythonfetcher = CrossRefBibTeX(email="your.email@example.com")これにより、API アクセス優先度が高くなります
ワークフローを適切に使用する
Pythonworkflow = WorkflowBuilder() workflow.add_fetcher(CrossRefBibTeX()) # 主要源 workflow.add_fetcher(DBLPBibTeX()) # 备用源信頼性の順にデータソースを追加します
一括処理時は遅延を追加する 大量の引用情報を処理するときは、API の制限を回避するため、内蔵の遅延機能を使うZQ
SerpAPI キーを取得する Google Scholar の機能を使うには SerpAPI キーが必要です。取得手順は次のとおりです。
SerpAPI アカウントを登録する
- SerpAPI 公式サイト にアクセス
- 右上の "Sign Up" ボタンを押す
- 登録情報(メールアドレス、パスワードなど)を入力する
適切なプランを選ぶ
- 無料プラン:月に 100 回検索
- 有料プラン:必要に応じて異なるプランを選ぶ
- テストや個人利用には、通常無料プランで十分
API キーを取得する
- ログイン後、Dashboard にアクセス
- "API Key" のセクションで自分のキーを確認する
- キーをコピーしてコードで使用する
使用例
CodeBlock Loading...注意点
- API キーを慎重に管理し、公開共有しない
- 利用量を監視し、制限を超えないようにする
- リクエスト間隔を適切に設定する(1 秒以上推奨)
- 本番環境では環境変数を使って API キーを保存する ```python import os
apikey = os.getenv("SERPAPIKEY") fetcher = GoogleScholarBibTeX(apikey=apikey)
使用上のヒント
- CrossRef と DBLP を優先して使う
- 結果が見つからないときだけ Google Scholar を使う
- 一括処理時は API の使用制限に注意する
python # 推荐的工作流顺序 workflow = WorkflowBuilder() workflow.add_fetcher(CrossRefBibTeX(email="your.email@example.com")) workflow.add_fetcher(DBLPBibTeX()) workflow.add_fetcher(GoogleScholarBibTeX(api_key="your-serpapi-key"))
今後の展望
- 対応データソースの追加
- 引用形式変換機能の追加
- GUI の提供
- カスタマイズオプションの拡充
おわりに
get-bibtex は、学術執筆における文献管理の簡素化を目指しています。単一の論文を書く場合も、文献レビューを行う場合も、文献の引用情報を効率よく取得・管理できます。GitHub からプロジェクトの開発に参加し、提案や問題の報告をお寄せください。
関連リンク
- GitHub リポジトリ:get-bibtex
- 問題の報告:Issues
- PyPI ページ:get-bibtex