音声認識のほうに手を入れたら、それまで文字起こしに「短歌」と書かれていたところが「単価」に、 「大将」が「対象」に、「帰省」が「規制」に直ったんですよ。人が読んでも何の話をしているのか 分からなかった箇所が、注釈なしで意味の取れるふつうの日本語に戻っていて、これは素直に嬉しかったです。
で、その文字起こしを使って、そこから項目を拾う抽出の採点を回したら、成績が落ちたんです。
入力を良くしたのに、点が下がった
これ、順番としておかしいじゃないですか。文字起こしが正確になるほど、そこから項目を拾う側の 仕事は楽になるはずで、成績が悪くなる理由なんてひとつも思いつかないんですよ。
なので最初は、抽出のほうが壊れたんだと思いました。抽出の指示は前の文字起こしを何度も読みながら 調整してあったので、語彙がまるごと入れ替われば、その調整が静かに外れる余地は十分にあります。 そう思って、落ちたぶんの項目が文字起こしのどこにあるのかを、片っ端から検索していきました。
そうしたら、全部あったんですよね。しかも前より明確に書かれていて、決定の根拠にあたる発言まで、 以前は潰れて読めなかったものがそのまま残っている。拾えてはいたんです、点にならなかっただけで。
新しいモデルにしたら、全部 0%
そのあと抽出モデルを新しいものに差し替えて、同じように採点してみたんですが、結果の JSON を 開いた瞬間、見る場所を間違えたのかと思いました。タスク 0%、決定 0%、リスク 0%、会議 2 件で 全部です。1 項目も合っていない、という意味の 0% なんですよ。
そんなはずはないので、抽出結果と正解を左右に並べてみたら、ほとんど同じことが書いてあるんです。 同じ対象について、同じ変更を、言い方だけ変えて書いてあって、どちらを読んでも同じ会議の 同じ決定の話をしているのが分かる。それが 0 点でした。
採点器を開いた
それで、正解と抽出結果を突き合わせている関数を読みにいきました。やっていたのは、両方を 正規化して、片方が片方に部分文字列として含まれているかどうかを見ることで、語の順番が 入れ替わるだけで外れる作りです。
その下に、手書きの別名の配列がありました。正解データ 11 件ぶん、外れるたびに手で足してきた もので、そこに「短歌」が入っていたんですよね。
これ、私が書いたものなんです。古い文字起こしが「単価」を「短歌」と書いていたので、それに合わせて 足した別名で、直った文字起こしはもう「短歌」とは書きません。正しく「単価」と書かれた文には、 この別名は当たらない。転写を直せば直すほど、物差しのほうが外れていく作りになっていたわけです。
今までのモデル比較、全部だめだったのでは
手が止まったのはここでした。別名はそのモデルの言い回しに合わせて手で足されているので、 同じモデルを測り続けているかぎり、点はちゃんと出ます。実際、物差しを直したあとで元のモデルを 測り直しても、数字はほとんど動きませんでした。壊れていたのは、モデルを入れ替えたときの比較だけなんです。
ただ、それまでに何度も、抽出のやり方を変えて、測って、下がったから戻す、ということを やっていましたし、モデルも変えていました。あれは全部、何を見ていたんでしょうね。良くしたものが 下がって見えて、悪くしたものが横ばいに見える物差しの上で、上がったか下がったかを議論していたことになります。
そのとき考えていたのは、だいたい、この書き方でしか拾えないなら、よその会話では動かないし、 作りたいのはそういうものじゃないはずだ、ということでした。
照合を 2 段にした
直し方としては、照合を 2 段にしました。まず埋め込みのコサイン類似度 0.45 以上のペアを候補として 広く拾って、そのうえで候補を強いモデルに渡して「同じ具体的な事項を指しているか」を一組ずつ 判定させる。緩く拾って、厳しく落とす、という形です。
会議 1 件で候補が 112 組出て、確定したのは 18 組でした。残りの 94 組は「近いけれど別物」として 弾かれていて、「ログイン画面の修正」と「認証機能の追加」を同じ項目に数えないための段がここです。
直したあとの数字は、タスクが適合率 22% / 再現率 54% で、低いです。ただ、これは信用できる 低さになりました。
二ヶ月後、また新しいモデルで
八月に、また抽出モデルを新しいものに差し替えました。評価には「これは抽出してはいけない」と 指定した項目を踏んでいないかを見る検査があって、そこに引っかかった件数がゼロだったので、 一瞬、良くなったと思ったんですよね。思ってから、手が止まりました。
禁止項目には「予算と効果が未知数」と書いてあって、前のモデルは「予算と効果が未知数である」と 書いたので引っかかったんですが、新しいモデルは「予算と効果が読めない」と書いたので 素通りしていたんです。同じ違反なのに、言い換えが上手いほうだけが無罪になっていました。
六月に直したのは、正解との照合だけだったんですよ。禁止項目の照合は部分文字列のまま隣に 残っていて、二ヶ月ぶんのモデル比較を、再現率は意味で、適合率は字句で測りながらやっていた ことになります。しかもこの穴も、モデルを新しくしたときにだけ顔を出すんです。
なので次に文字起こしが直って嬉しくなったときも、数字が上がったのか物差しが緩んだのかを、 私はまた判別しないといけないんですよね。