開発の動機
社内の規則などを記述した PDF のドキュメント群があり、それを一括して検索できるシステムを作ろうと考えた。
処理の手順
イントラウェブサイトから PDF ファイルを DL する工程。
今回、ウェブロボットのように、あるドキュメントからその中のリンクをたどって新しいドキュメントをダウンロードすることはしない。与えられた複数の URL の PDF ドキュメントを毎日ダウンロードする。
PDF をテキストファイルに変換する工程。
ダウンロードした PDF ファイルをテキストファイルに変換するのには、pymupdf を使う。
変換したテキストファイルを sentence-transformers に読みこませる文章にする工程。
変換したテキストファイルは、一行が文章であったり、言い回しで完結するとは限らない。そこで、PDF から変換したテキストファイルを、spacy と ja-ginza を用いて、一行が文章になるように修正する。
テキストファイルを sentence-transformers に読み込ませる工程。
sentence-transformers は、文章あるいは言い回しを vector に変換して登録し、検索文から変換した vector に呼応する文章あるいは言い回しを検索するものである。そのため、最初に文章あるいは言い回しとその vector を登録しておく必要がある。
プログラム
ロボット
決められた PDF を1日ごとにダウンロードして保存し、sentence-transformers に読み込ませるテキストファイルを作る。
ウェブ
検索要求を受け付ける。
クライアント
ウェブから検索要求を受けとり、検索要求を TCP/IP 通信で サーバーに伝える。
サーバー
1日ごとに新しいテキストファイルを読み込み、検索に備える。リクエストが来たら検索を実行し、検索結果を返す。
ロボット
決められた PDF をDLし、検索サーバーが読み込めるテキストファイルを作る。