jeyseni's diary

「ジェイセニ」と呼んでください。批判ではなく提案をするのが生き甲斐です。

アルゴリズムは自分で考えたい--ブラックボックスのChatGPTを使わない理由

出版社で編集の仕事をしている筆者は,とにかくPCがなければ仕事にならない。社会人になった1980年は,まだMS-DOSの時代で,PCのプログラム言語はBASICしかなかった。

 いろいろな文章処理をPCでさせるのに,非常に役立ったのが「正規表現」を扱うsed / awk / grep などのソフトだった(batファイルをexeファイルに変換--フリーの情報提供に感謝 - jeyseni's diary 2023/7/21)。文章の中からひらがなだけを消去したり,空白行だけを除いたり,といったフィルタリング処理や,単語の置き換えなどを柔軟に行うのに,おまじないのようなスクリプト表現を作る必要があるのだが,何回か失敗するがうまく行ったときの達成感はなかなかのものだった。

 現在は,この正規表現系の処理の大部分はWord上でできる。ワイルドカードと書いてあるが,実質は正規表現である。しかも,マクロの中に処理を組み込めるのもありがたい。使わなくなったものも含めて,筆者のWordのマクロには100個ものマクロが入っている。

 Wordのありがたいことは,プログラムしなくても処理を記録することでマクロができあがることである。マクロを編集してみると,意味の分からない行が大量に入っている。しかし,たとえば単語の置き換えであれば,元の単語と置換語の単語の部分さえ置き換えれば,応用が効く。それを繰り返し行えば,何十個の検索・置換も数秒で完了する。文章の体裁を整える文章整理という仕事にはもってこいである。

 ただし,この「何十個」を管理するのはやはり大変である。Wordの「差し込み印刷」みたいに,外部のExcelファイルでデータを管理して処理できればいいのだが,筆者にはその仕組みを作るだけの力はない。

 そこで登場するのがファイルメーカーである。ファイルメーカーでは,処理するデータが100個だろうと1000個だろうと,テーブルという形でデータベース化していれば,そのデータを1つずつピックアップして検索・置換,という処理をさせればいい。リレーショナル型のデータベースなので,テーブルは別データベースファイルでもいいし,内部に組み込んでもいい。

 この辺りのアルゴリズムは,ほぼ独学で作って使ってきた。現在は,Web上で検索すれば答えが出てくることも多いので,本当にいい時代になったと思っている。Wordのマクロについても,Web上の情報を大いに使わせていただいている。プログラマーになれるわけではないが,アルゴリズムは自分で考えたいと思っている。

 ChatGPTの登場で,この文章処理系の業務が激変しようとしている。出版社でも,企画,編集,制作,法務の各部署でChatGPTを利活用しようという動きが盛んである。何しろ,1つの企画書を作るのに1時間もかかっていたのが,わずか1分でそれなりの形でできあがるというのだから,驚きである。

 たとえば,書籍を作る場合,最後に索引のページを付ける。これまでは,執筆者が重要と考える言葉に印を付けてもらい,これをピックアップし,ふりがなを付け,五十音順に並べ直し,このデータで索引ページのレイアウトを作るという作業をしていた。

 索引に掲載する言葉は最重要語なので,必ずそのページを開けるように執筆者は言葉を選ぶ。しかし,執筆者が意図した言葉と違う言葉で読者が検索したいと思うかもしれない。電子版なら全文検索すればいいが,紙版ではこの「索引」が命となる。

 そこで筆者(当方)は独自に,全文を単語単位に分解し,それをガサッとソートし,単語レベルで索引に掲載すべきかどうか判断して項目を決めることにしている。

 この処理アルゴリズムを決めるのは,筆者自身のルールである。日本語の文章が面白いのは,重要語がひらがなで書かれることが極端に少ないことと,1文字~3文字の単語の多くは一般語であることである。

 この独自のアルゴリズムをWordのマクロで書くのは,筆者には無理だった。ファイルメーカースクリプトでは逐次処理なので非常に時間がかかる。しかし,アルゴリズムさえ正しければ,一晩でも丸1日でも動かし続ければ処理が完了する。筆者が,PCを相棒とし,頭脳の半分をPCに頼っているのは,こんなところである。アルゴリズムのアイディアを筆者が作り,処理はPCに頑張ってもらうという共同作業である。

 単語を抜き出してから,これを絞り込む作業は人力なので数時間かかる。その後,その単語がどのページにあるのかを全文検索してリスト化するアルゴリズムも作って動かしている。最初に作ったときは下手くそなスクリプトだったので抽出処理に一晩かかったが,今は10分程度で終わるようになり,実用的に使っている。

 おそらく,ChatGPTを使えば,「この書籍の全文データから重要語を200個選び,その言葉が載っているページのリストを作れ」と命令すれば,1分もかからずに索引ができてしまうのではないか,と思われる。また,何も指示しなくても,リストのソート順は単語の読みの五十音順にきれいにソートされているだろう。間違った読みでソートすることもほぼないと思われる。

 果たしてこれでいいのかな,というのが今の気持ちである。どういう基準で重要語としたのかがAI任せになっているところが最も気持ちが悪い。後でチェックすればいい,と言われるが,何だかこれではAIに使われているようで面白くない。

 ほかに,書籍を作る際には,文献一覧のチェックや,書籍の情報のチェック(著者名,出版社名,出版年など)をチェックするのだが,10個ぐらいまでなら出版社側で検索し直してチェックするが,これが30個,50個にもなると,よほど時間がある場合を除いて執筆者の原稿そのものを信じてノーチェックで進めることも多い。この辺りのチェック業務は実に機械的なので,ChatGPTにやってもらえばいいかなとも思う。ただ検索して照合するだけだからである。ちなみに,文献一覧は執筆者側でもすでに文献整理ソフトから出力するだけのことも多く,ほとんど間違いがあることはない。

 ちなみに,索引の単語のふりがな付けも,筆者独自のアルゴリズムで実施しているが,これはChatGPTにやらせたい業務である。漢字には音読みと訓読みがあり,多くの場合は音読みに置き換えれば済む。しかし,名前や地名は訓読みが多いし,単語によって促音便(小さい「っ」に変わる)や撥音便(「ん」に変わる)などの特殊な音便が日本語にはある。同じ「血」でも血液は「けつえき」だし血管は「けっかん」と促音便になる。これをルール化するのは相当難しい。そこで,筆者のアルゴリズムでは,県名→名字→促音単語で先に読みを置き換えた後に,漢字約2000字を1文字ずつを音読みに置換するというアルゴリズムを考えた。これも全部で10分ぐらいかかる処理だが,処理中にアナログ的な雑用を処理したり,コーヒーを入れに行ったりしている。ルビ付けを自動でしてくれるサイトも使ってみたが,筆者が関わっているような分野の熟語の読みには対応していなかった。

 google検索もBing検索も,ChatGPTとリンクするようになったが,筆者は相変わらず以前の検索アルゴリズムを使っている。検索結果を順番に眺めて,必要と自分が判断できる情報にしかアプローチしない。

 こうなったらもう意地でも使わないと宣言しているのである。仕事の責任は自分で取りたいからで,「それはChatGPTが間違ったからです」と言い訳したくないからである。考え方がやはり古いのだろうか。