Files
2026-07-30 10:51:43 +09:00

5.4 KiB

論文データベース共通処理

1. 役割

このプロジェクトはPDFファイルそのものを保持しない。

PDFはconfig.pyCONFIG.path.pdf_rootで指定された外部ディレクトリに 保存されている。

papers.dbを唯一のマスターデータベースとする。 papers.orgは閲覧・検索・レビュー用であり、マスターデータではない。

分野名、カテゴリ、要約観点、relevance基準はconfig.pyCONFIG.domainを唯一の定義元とする。

2. 処理前に必ず行うこと

  1. プロジェクトのconfig.pyを読む。
  2. CONFIGを読み、処理条件と分野設定を確認する。
  3. 処理対象はpublish.pytmp/text/へ準備する。
  4. tmp/text/にない論文は処理しない。
  5. 設定不足や存在しないパスがあれば処理を開始しない。

3. TASK=process_new_papers

AIが行う処理は、tmp/text/の解析とJSON生成までとする。

  1. tmp/text/paper-*.txtだけを処理対象とする。
  2. 各テキスト先頭のPDF_PATHをJSONのpdf_pathに使用する。
  3. 書誌情報、要約、キーワード、分類、Webリンクを抽出する。
  4. 各論文についてtmp/paper-*.jsonを生成する。
  5. 作成したJSONファイルと処理結果を報告する。

原則として元PDFは直接読まない。次の場合のみ、PDF_PATHに 記載された1ファイルを参照してよい。

  • PDF_TEXT_EMPTYyes
  • TEXT_INSUFFICIENTyes
  • テキストが文字化けしている
  • タイトル、著者、発行年、要約を確認できない

他のPDFやディレクトリは探索しない。

AIは次を実行しない。

  • DB登録スクリプト
  • DB検証スクリプト
  • Org出力スクリプト
  • papers.dbの直接更新

JSON生成後のDB登録、検証、Org出力はpublish.pyが実行する。

4. PDFパス

papers.dbpdf_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は必ず配列とする。複数著者は論文中の順番で並べる。 取得できない場合は、nameunknownとした要素を1件入れる。

first_author

authors配列の先頭のnameと一致させる。 著者不明の場合はunknownとする。

keywords

必ず文字列の配列とする。取得できない場合は空配列とする。

category

config.pyCONFIG.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_urlhttps://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: 整数またはnull
  • doi: 文字列またはnull
  • category: CONFIG.domain.categoriesのいずれか
  • relevance: 0から5の整数
  • priority: A、B、C、Dのいずれか
  • is_corresponding: 真偽値
  • pdf_path: PDFルートからの相対パス

11. 禁止事項

  • papers.dbの削除
  • 場当たり的なスキーマ変更
  • PDFの削除、移動、改名
  • DOIや論文内容の推測
  • Orgをマスターとして扱う
  • 人が入力したメモの削除
  • authorskeywordsを文字列として出力すること
  • pdf_urlを推測で生成すること