Repository navigation
imozuru 2.0.0
1.0のimozuruは原文を集め、抜き書きとして見せるところまでを受け持っていました。
AIの判断能力は形式知・ノウハウを収集することで強化されます。
原文に書かれた形式知・ノウハウを集めて、AIの判断の材料にすることが、1.0までの主な目的でした。
2.0のメジャーアップデートでは受け持つ範囲を広げ、人間が見ることに重点を置いて強化しました。
2.0の要点
- 人間が読んで理解する: 詳細レポートが調べた分野を読み手の水準に合わせた3編の解説にします。解説の1文ごとに原文の根拠が付きます。
- 人間が見返す: 調査記録のダッシュボードがすべてのトピックの進み具合と終了理由を1枚のページに並べます。
- どこからでも見る: ダッシュボードをスマホから閲覧できます。
- 同じ見た目で読む: 抜き書き・詳細レポート・map.md・log.mdを、ダッシュボードと同じ見た目で表示します。
追加
- 詳細レポート(
digest.py・digest.html)- 調べ終えたあとに、前提知識の違う読み手ごとに3編の解説を書きます(Lv1は前提知識の無い人、Lv2は近い分野を知っている人、Lv3は専門の人)。
- 解説の1文ごとに原文の引用を付け、引用が原文に在るかを機械で照合します。照合に通らない文が1つでもあれば、ページを作りません。
- 各編の末尾に、理解を確認する問いを置きます。
- 検索の全記録(検索語ごとのヒットの全件と、保存・取得失敗・未取得の区別)を、サイトごとの集計と一緒に載せます。
- 検索の記録(
queries.jsonl)digest.py addとchain.py --logが検索語ごとのヒットを全件残します。
- 調査記録のダッシュボード(
dashboard.py)- 調査の置き場(既定
~/research)を読み、トピックごとの記録を1枚のページにまとめます。 - ホームに、終了理由・原文の取得元・周回数の集計を並べます。
- サイドバーからトピックを選ぶと、トピック詳細(論点・周回数・原文・文書)が開きます。
- 詳細レポートや抜き書きは、ダッシュボードの枠の中で開きます。
- サイドバーの検索は題名・疑問・用語・人物・媒体を対象にします。ひらがな・ローマ字・変換途中の入力でも一致します。
- サイドバーは画面に収まる分ずつページで送ります(ボタン・ホイール・上下のスワイプ)。
- スマホでは横のスワイプでサイドバーを開閉し、画面の最上部で下へ引くと記録を再読み込みします。
- ヘルプに、スマホとパソコンの画面の図と各部の説明を載せています。
- 調査の置き場(既定
- ダッシュボードの配信(
dashboard.py --serve)- 127.0.0.1で、合言葉付きのURLとして配信します。Tailscaleなどで中継すれば、スマホから閲覧できます。
- 受け付けるHostは
127.0.0.1・localhost・*.ts.netと、環境変数IMOZURU_SERVE_HOSTSに並べた名前だけです(DNS rebindingへの備え)。 IMOZURU_SERVE_TOKENで固定する合言葉は16文字以上にします。短いと起動しません。- 調査のフォルダや文書がシンボリックリンクなら、一覧にも配信にも書き出しにも入れません。
- ホーム画面に追加したときのアイコンと、ブラウザのタブのアイコンを付けました。
- アプリとして入れる(
dashboard.py --serve)- パソコンのChrome・Edgeと、スマホで、ダッシュボードをアプリとして入れられます。入れたアプリは合言葉を入力せずに開けます。
- 右上に入れるボタンを置き、初めて開いたときは画面の下に案内を出します。案内は閉じると二度と出しません。
- ブラウザが入れる画面を出せないとき(iPhoneのSafariなど)は、そのブラウザでの手順を表示します。
- PDFで保存
- 文書の表示中に、左下のボタンで文書をPDFで保存(印刷)できます。根拠の引用は開いた状態で、枠を付けずに字下げして刷ります。背景の質感や操作のボタンは刷りません。
- iPhoneとSafariでは、文書だけのページを開いてから印刷の画面を出します。ダッシュボードの枠の中の文書を刷ろうとすると、画面全体が刷られるためです。
- 抜き書き・詳細レポート・map.md・log.mdは、ブラウザの印刷でも同じ形で刷れます。
- 感想・要望を送る
- 右上のボタンから、作者のGoogleフォームへ感想・要望・不具合を送れます。送るのは書いた内容とimozuruのバージョン・ブラウザの種類だけで、調査の題や中身は送りません。
- 送り先は環境変数
IMOZURU_FEEDBACK_FORMで差し替えられ、offで消せます。
- 文書だけの書き出し(
dashboard.py --bundle)- ページと、各トピックの詳細レポート・抜き書き・map.md・log.mdだけを別の場所へ書き出します。原文(
sources/)は含めません。
- ページと、各トピックの詳細レポート・抜き書き・map.md・log.mdだけを別の場所へ書き出します。原文(
- PMCの記事の全文(
fetch.py・#12、@hattorimayumi0105 さん)- PMCの記事のURLは、確認画面で止まるため、Europe PMCの全文XMLから取って見出し・段落ごとの .md にします。
- XMLの実体の宣言は文字コードに関係なく断り、要素の数と入れ子の深さに上限を設けています。
- map.mdの「題:」と「読み:」
- 「題:」はサイドバーとトピック詳細の見出しに使う短い題名です(20字まで)。
- 「読み:」は、検索で漢字の語をひらがなやローマ字でも一致させるための読みです。
- 文書の共通の見た目(
skin.py・palette.py)- 抜き書き・詳細レポート・map.md・log.mdを、ダッシュボードと同じ見た目で表示します。
- map.mdとlog.mdは、見出し・箇条書き・表に組んで表示します。
変更
- 文書とダッシュボードで内部の呼び名を使っていた所を、読み手に通じる言葉へ置き換えました。
- 要る主張 → 調査の論点
- 付いた・一部だけ・付かなかった → 根拠あり・一部のみ・根拠なし
- 場 → 媒体
- 古い言葉で書いた
extracts.jsonもそのまま読めます。
- 全角の「#」「:」などを含む壊れたURLが1本あっても、ダッシュボード・詳細レポート・md の表示と取得が止まらないようにしました。
- 原文のリンクはHTMLでもPMCのXMLでも http(s) のものだけを残します。
- 原文を取るときは、つなぐ直前に名前を引き直して同じ宛先の検査をかけ、確かめたIPへじかにつなぎます。名前の引き先を途中で変える手(DNS rebinding)で、手元のサービスの中身を取られないようにしました(#13、@akira0222 さん)。プロキシを通すときは名前をプロキシが引くので、この手は防げません。
- PDFを画像にするpdftoppmが途中で失敗したときは、書き出せたページだけでOCRを成功扱いにせず、OCR全体を失敗にします(#14、@Boba7567 さん)。
- 環境変数
IMOZURU_DASH_THEMEに知らない値が入っていても、ダッシュボードが起動するようにしました。 - 原文の保存がPDFと文字起こしの2つ目で失敗したときは、前の原文に戻します。
- ページの書き出しの一時ファイルを、毎回別の名前で作るようにしました。
- 抜き書きのページで、英語の引用に英語の言語指定を付けました。読み上げと書体の選択が英語として行われます。
- 抜き書きのページと詳細レポートから、ページの作りを説明する前置きの文(「ここに並ぶ引用は、すべて原文をそのまま切り出したもの」など)を削りました。