5.4 KiB
論文データベース共通処理
1. 役割
このプロジェクトはPDFファイルそのものを保持しない。
PDFはconfig.pyのCONFIG.path.pdf_rootで指定された外部ディレクトリに
保存されている。
papers.dbを唯一のマスターデータベースとする。
papers.orgは閲覧・検索・レビュー用であり、マスターデータではない。
分野名、カテゴリ、要約観点、relevance基準はconfig.pyの
CONFIG.domainを唯一の定義元とする。
2. 処理前に必ず行うこと
- プロジェクトの
config.pyを読む。 CONFIGを読み、処理条件と分野設定を確認する。- 処理対象は
publish.pyがtmp/text/へ準備する。 tmp/text/にない論文は処理しない。- 設定不足や存在しないパスがあれば処理を開始しない。
3. TASK=process_new_papers
AIが行う処理は、tmp/text/の解析とJSON生成までとする。
tmp/text/paper-*.txtだけを処理対象とする。- 各テキスト先頭の
PDF_PATHをJSONのpdf_pathに使用する。 - 書誌情報、要約、キーワード、分類、Webリンクを抽出する。
- 各論文について
tmp/paper-*.jsonを生成する。 - 作成したJSONファイルと処理結果を報告する。
原則として元PDFは直接読まない。次の場合のみ、PDF_PATHに
記載された1ファイルを参照してよい。
PDF_TEXT_EMPTYがyesTEXT_INSUFFICIENTがyes- テキストが文字化けしている
- タイトル、著者、発行年、要約を確認できない
他のPDFやディレクトリは探索しない。
AIは次を実行しない。
- DB登録スクリプト
- DB検証スクリプト
- Org出力スクリプト
papers.dbの直接更新
JSON生成後のDB登録、検証、Org出力はpublish.pyが実行する。
4. PDFパス
papers.dbのpdf_pathには、CONFIG.path.pdf_rootからの
相対パスだけを保存する。
絶対パスは保存しない。PDFは削除、移動、改名しない。
5. 抽出項目
必須:
- title
- authors
- first_author
- year
- journal
- doi
- pdf_path
可能なら:
- volume
- issue
- pages
- publisher
- article_type
- language
- abstract
- ORCID
- affiliation
AIが付与:
- summary_ja
- keywords
- category
- relevance
- priority
6. JSONフォーマット
{
"doi": null,
"title": "",
"authors": [
{
"name": "",
"orcid": null,
"affiliation": null,
"is_corresponding": false
}
],
"first_author": "",
"year": null,
"journal": "",
"volume": null,
"issue": null,
"pages": null,
"publisher": null,
"article_type": "journal article",
"language": "en",
"abstract": null,
"summary_ja": "",
"keywords": [],
"category": "Other",
"relevance": 3,
"priority": "C",
"pdf_path": "",
"source": "local PDF",
"landing_url": null,
"pdf_url": null,
"url_source": "unknown",
"access_status": "unknown",
"url_checked_at": null
}
authors
authorsは必ず配列とする。複数著者は論文中の順番で並べる。
取得できない場合は、nameをunknownとした要素を1件入れる。
first_author
authors配列の先頭のnameと一致させる。
著者不明の場合はunknownとする。
keywords
必ず文字列の配列とする。取得できない場合は空配列とする。
category
config.pyのCONFIG.domain.categoriesから、最も適切なものを
1つ選択する。該当するカテゴリがない場合は
CONFIG.domain.default_categoryを使用する。
DOI
- 推測しない。
- 小文字化する。
https://doi.org/などの接頭辞を除去する。- 不明な場合は
nullとする。
year
整数またはnullとする。
article_type
例:
- journal article
- review
- report
- conference paper
- book chapter
- other
7. Web上の論文リンク
DOIがある場合、landing_urlはhttps://doi.org/{doi}とする。
PDF URLは推測しない。実際に公開されていることを確認できた場合のみ
pdf_urlへ保存する。
url_sourceの例:
- doi
- crossref
- unpaywall
- publisher
- institutional_repository
- government_repository
- manual
- unknown
access_status:
- open
- restricted
- unknown
8. 日本語要約
CONFIG.domain.summary_length_jaを目安とする。
CONFIG.domain.summary_focusに記載された観点を優先する。
本文から確認できないことは推測しない。
9. RelevanceとPriority
relevanceは0から5の整数とする。
判断基準はCONFIG.domain.relevance_criteriaを使用する。
Priorityは次の対応に固定する。
- A: relevance=5
- B: relevance=4
- C: relevance=3
- D: relevance=0から2
10. JSONの妥当性
次を厳守する。
authors: 空でない配列keywords: 配列year: 整数またはnulldoi: 文字列またはnullcategory:CONFIG.domain.categoriesのいずれかrelevance: 0から5の整数priority: A、B、C、Dのいずれかis_corresponding: 真偽値pdf_path: PDFルートからの相対パス
11. 禁止事項
papers.dbの削除- 場当たり的なスキーマ変更
- PDFの削除、移動、改名
- DOIや論文内容の推測
- Orgをマスターとして扱う
- 人が入力したメモの削除
authorsやkeywordsを文字列として出力することpdf_urlを推測で生成すること