238 lines
5.4 KiB
Markdown
238 lines
5.4 KiB
Markdown
# 論文データベース共通処理
|
|
|
|
## 1. 役割
|
|
|
|
このプロジェクトはPDFファイルそのものを保持しない。
|
|
|
|
PDFは`config.py`の`CONFIG.path.pdf_root`で指定された外部ディレクトリに
|
|
保存されている。
|
|
|
|
`papers.db`を唯一のマスターデータベースとする。
|
|
`papers.org`は閲覧・検索・レビュー用であり、マスターデータではない。
|
|
|
|
分野名、カテゴリ、要約観点、relevance基準は`config.py`の
|
|
`CONFIG.domain`を唯一の定義元とする。
|
|
|
|
## 2. 処理前に必ず行うこと
|
|
|
|
1. プロジェクトの`config.py`を読む。
|
|
2. `CONFIG`を読み、処理条件と分野設定を確認する。
|
|
3. 処理対象は`publish.py`が`tmp/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_EMPTY`が`yes`
|
|
- `TEXT_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フォーマット
|
|
|
|
```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`: 整数または`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をマスターとして扱う
|
|
- 人が入力したメモの削除
|
|
- `authors`や`keywords`を文字列として出力すること
|
|
- `pdf_url`を推測で生成すること
|