Skip to content

imozuru 2.0.0

Choose a tag to compare

@MaryCache MaryCache released this 25 Oct 05:41
· 22 commits to main since this release

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/)は含めません。
  • 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つ目で失敗したときは、前の原文に戻します。
  • ページの書き出しの一時ファイルを、毎回別の名前で作るようにしました。
  • 抜き書きのページで、英語の引用に英語の言語指定を付けました。読み上げと書体の選択が英語として行われます。
  • 抜き書きのページと詳細レポートから、ページの作りを説明する前置きの文(「ここに並ぶ引用は、すべて原文をそのまま切り出したもの」など)を削りました。