自動タグの本格始動
意識が高かった上京直後に妄想していた、ブログの自動タグ付与プロジェクト。
初言及は2020年ですが、本格的にそれについて書いたのは2021年が最初のようです(#06262 / 2021年02月08日)。
Pythonの自然言語処理ライブラリを使って、
ブログ本文を解析して連想するキーワードを羅列し、それに順位をつけて上位をタグにするという構想。
当時は確かBERTという言語モデルが注目されていた時代で、
GPTは水面下ではすでに誕生していましたが、ChatGPTの登場は翌年秋なので体感的には「AI以前」の時代です。
AIをブログに解析させるという方向性では、
ブログを時代順に解析して自分哲学の真理(個人の憲法)とも言える主張を探し出す(#06271 / 2021年02月17日)、
というような構想を思いついたこともありましたが、
いずれも実現できるのは10年20年未来の話だと思っていました。
しかしまさか翌年にそのためのツールが登場するとは……。
特にCodexの登場によって自分がコーディングする必要が無くなったので、
こうした大きなプロジェクトも比較的気軽に取り組むことができるのは本当にありがたいかぎりです。
「なんでもない日に着手できる」というのは悪い完璧主義を抱える自分がAIから受けている大きな恩恵です。
さっそくいくつかの仕様を決めて読み込ませて、Python製スクリプトが完成しました。
1記事でも全記事でも解析できるようにしたので都度1記事ずつ解析してテスト動くようにはなっていますが、
まだまだ出来としてはイマイチで、Codexを使ってもなお実用化には時間がかかりそうです。
現時点でChatGPTのようなLLMはコンテキスト長に限界があり、
1300万文字もあるこのブログのように巨大データをそのまま読み込んで解析することはできません。
無理やり読み込ませたとしても、情報は圧縮されてしまうのでタグ付与のようなテキスト解析には向いていないわけです。
まあ、1記事ずつ読み込ませて「この本文に適したタグは?」とタスクを与えればやってくれそうですが、
8100本もあるいま、それは途方もない手作業が発生するため現実的ではないわけです。
仮に自動化できたとしてもAPIは有料で、想定トークン量を考えるとかなりの金額がかかってしまいます。
そこで、自然言語処理ライブラリを利用したPythonスクリプトでローカルで動かしてみているのですが、
たとえば半角スペースのある固有名詞を正しく切り分けられなかったり、
名詞以外を排除しても「1日」のような明らかにタグではない単語が入ってきてしまったりと、
なかなか一筋縄ではいかない雰囲気を感じています。
現代語を多く詰め込んだコーパス(特定言語のビッグデータ)を読み込ませるとか、
ローカルLLMを導入してコンテキストを節約した形でループ処理によってタグ付与させるとか、
いろいろなアプローチは考えられるので少しずつ試していこうと思っています。
もし実現したら適当につけられたものも少なくない過去記事すべてのタグを合理的に振りなおせるので、
タグごとの記事の横断読みが捗りそうです。
まぁ、自分が過去記事を読み返すことにしか需要が無い作業なので優先度はめちゃくちゃ低いですが、
Codex活用の一環としてやれるときに細々とやっていこうかなと。