Jevを自社SaaSに組み込んだ 投稿とクチコミ返信の「気をつけたい表現」に注意を出す

前回は、TypeSafe AIのJevを自社サイトの問い合わせフォームに組み込み、営業メールを仕分けた話を書きました。今回は、その一歩先です。お客様が毎日使っている私たちの製品に、Jevを組み込みました。
組み込んだのは、複数店舗のGoogleビジネスプロフィールやSNSをまとめて管理するLocalBaseです。店舗の投稿文やクチコミへの返信を書くと、薬機法や景品表示法などの6つの法令・ガイドラインに「関係する可能性がある表現」が含まれていないかを、その場でチェックして知らせます。機能の名前は「コンプライアンス表現チェック」。9月26日から本番で動いています。
最初に6つの法令をまとめて確かめる判定は、1回あたり約0.01円、1秒前後です。そして作ってみて分かったのは、表示を使えるものにするために手を入れたのは、AIではなく、私たちが書いた「判定の基準」のほうだった、ということです。
投稿・返信・テンプレートの3か所で、6つの法令に「関係する可能性」を見る
LocalBaseを使っていただいている店舗には、クリニック、エステ、整体、教育のような業種が少なくありません。こうした業種の投稿やクチコミへの返信には、効果・効能をうたう表現や「地域No.1」のような表現が、悪気なく入り込みやすい。特定のトラブルがきっかけではなく、入りやすい場所だからこそ、書いた時点で気づける仕組みがあったほうがよいと考えました。
チェックするのは、次の3か所です。
- GoogleビジネスプロフィールやSNSへの投稿文: 投稿前の確認画面で
- クチコミへの返信文: 返信の「登録」ボタンを押したときに
- 返信テンプレート: 保存したときに。自動返信はテンプレートが人の目を通らずに送られるので、ここが唯一の確認の場になります
見ているのは、薬機法、医療広告ガイドライン、景品表示法、健康増進法、不正競争防止法、金融商品取引法の6つです。
Jevに渡すのは、店舗の業種(Googleビジネスプロフィールの主なカテゴリ名)と、チェックしたい本文です。クチコミへの返信をチェックするときだけ、返信先のクチコミの本文も参考として一緒に渡します(理由は次の章で書きます)。店舗名、クチコミの投稿者名、画像は、項目として渡しません。前回の問い合わせフォームと同じで、判定に要らないものは最初から外に出さない、という考え方です。
たとえば、評価のために作った架空の投稿文で試すと、こうなります。
当店オリジナルの美白クリームを使った施術で、長年悩んでいたシミが消えたとご好評いただいています。秋のご予約受付中です。
この文は、薬機法に関係する可能性が0.90と判定されました。確認をおすすめする文として示されるのは1文目だけで、2文目の「秋のご予約受付中です」は0.03です。
1回で6つを聞き、怪しい法令だけ文ごとに聞き直す
Jevは文章を書かないAIです。決まった形の質問を投げると、答えと、その確からしさ(0〜1の確率)だけを返します。この性質に合わせて、チェックは2段に分けました。
1段目では、6つの法令をまとめて1回で聞きます。法令ごとに「この本文は、この法令に関係する可能性があるか」という質問を1つずつ用意し、6問を1回のリクエストで送ります。質問には、その法令が対象とする範囲と、「こういう表現は当たる」「こういう表現は当たらない」という例を添えています。
1段目で0.5以上の法令があったときだけ、2段目に進みます。本文を1文ずつに分け、その法令だけを文ごとに聞き直して、どの文が引っかかっているかを特定します。2段目は文の数だけ問い合わせが増えるので、注意が出るときは結果が出るまでに数秒かかります。
画面には、確率が0.8以上なら「関係する可能性が高いもの」、0.5以上0.8未満なら「関係する可能性があるもの」として、法令の名前と確認をおすすめする文が出ます。

注意がないときは、緑の枠で「問題となりそうな表現の文章は見つかりませんでした」と出ます。

当初は、どの言葉が問題かを示すために、NGワードの辞書を別に作るつもりでした。判定はJevに任せ、該当箇所の色付けは辞書で、という併用です。ところが、「文脈から判定できれば、それでいい」と考え直しました。文ごとにJevにかけ直せば、辞書がなくても該当する文は示せます。辞書は作らずに済みました。
クチコミへの返信では、心配していたことが1つありました。クチコミ側に「シミが消えました!」のような効能の言葉が書かれていると、返信のチェックがそれに引きずられるのではないか。そこで、返信をチェックするときは、クチコミの本文を「参考(判定の対象外)」と明記して一緒に渡しています。評価では、クチコミ側にだけ効能の表現があり、返信はお礼だけ、という例で、6つの法令すべてが0.2未満。返信の側だけを正しく見てくれました。
表示を整えたのはJevではなく、基準の書き方だった
組み込む前に、評価用の例文を用意して採点しました。例文はすべて評価用に作った架空の文で、お客様の実際の投稿や返信は使っていません。明らかに問題のある例に加えて、「乾燥による小じわを目立たなくする(効能評価試験済み)」のような、表現としては認められる範囲の際どい例もわざと混ぜています。投稿が46件(問題を含む25件、問題のない21件)、クチコミ返信が22件です。
最初の基準文(v1)では、注意を出すか出さないかは46件すべてで正しく判定できました。ところが、「余計な法令まで付いてくる」ケースが13件ありました。たとえば「腰痛が治る」のような効能の表現に、薬機法だけでなく景品表示法も付いてくる。法律の上でどこまで重なるかをこの機能で判断するわけではないので、Jevが間違っているとも言い切れません。ただ、画面にいくつも法令が並ぶと、使う人には煩わしいだけです。
そこで基準文を書き直しました(v2)。法令ごとに「どこまでを受け持つか」をはっきり分け、効能の表現は薬機法の側で受け持つ、という具合に守備範囲を切り分けたのです。v2では、法令の組み合わせまで期待どおりに一致したのが46件中41件でした。残る5件は、どれも景品表示法が余分に付いたもので、その確率は0.53〜0.65。一方、本来の法令のほうは0.94〜0.97と高く出ていました。
ここで役に立つのが、確率に応じた2つの区分の表示です。0.8以上を「可能性が高い」、0.5以上0.8未満を「可能性がある」と分けて見せれば、本来の法令が上に、余分な景品表示法は控えめに並びます。重なりを消すのではなく、優先順位を付けて見せる、という判断です。このルールで見ると、46件すべてで本来の法令が期待どおりの区分に入り、期待した法令も漏れなく含まれていました。注意を出すべきとした25件の見逃しもありませんでした。クチコミ返信の22件も、注意を出すかどうかはすべて期待どおりでした。
正直に書いておくと、v2を作る途中で、私たちが用意した「正解」のほうが基準文と矛盾していたものを3件直しています。採点の物差しが揺れていた、ということです。AIの評価で結果が合わないとき、間違っているのがAIなのか、正解として用意した側なのかは、分けて見直す必要がありました。
このあたりで、私の実感ははっきりしました。v1の時点でも、注意を出すかどうかは全件合っていました。直す必要があったのは、Jevを変えることではなく、法令ごとの守備範囲をどう言葉にするか、でした。基準文の精度、と言ってもいいかもしれません。AIに判断を任せるとき、難しいのは「どのAIを選ぶか」より、「何を当たりとし、何を外れとするか」を言葉で書き切ることのほうでした。
なお、Jevの日本語の精度について、提供元は最適ではないとしています。前回の問い合わせフォームの評価(架空の73件)では、正規の問い合わせ44件に営業やスパムのタグを付ける誤りはなく、営業14件とスパム15件はすべて検知できました。今回の評価(架空の68件)でも、注意を出すかどうかは全件期待どおりでした。ただ、どちらも私たちが作った例文での話です。本番の文章でどこまで通用するかは、これから確かめます。他のLLMとの精度の比較はしていません。
「違反」とは言わない、登録も止めない
当社は法律の専門家ではありません。なので、画面の見せ方には判定の仕組みと同じくらい気を使いました。私が決めた方針は3つです。
- 「違反」「違法」「NG」という言葉は使わない。表示するのは、あくまで「関係する可能性」
- すべての表示に注記を付ける。「AIによる自動チェックの参考表示です。法令・ガイドラインへの適合や違反を判断するものではなく、表現の安全性を保証するものでもありません。必要に応じて弁護士等の専門家にご確認ください」と書く
- 注意の色は赤ではなく、黄色系にする
そのうえで、登録そのものは止めません。投稿は、確認画面にチェックの結果が後から表示されますが、結果を待たずに登録できます。クチコミへの返信は、注意がなければそのまま登録され、注意があるときだけ「このまま登録する」か「修正する」かを選ぶ画面が出ます。チェックに失敗したときも、投稿や返信の登録はそのまま続きます。
止めない理由は、このチェックが法律の判断ではないからです。可能性の高い表現を示すことはできても、最終的に「この表現で出してよいか」を決めるのは、店舗の方と、必要なら専門家です。AIの判定で業務を止めてしまうと、外れたときの損失が大きすぎます。
代わりに、判断する人の手元に結果が届くようにしました。LocalBaseには、子アカウント(店舗の担当者)の投稿や返信を、親アカウント(本部の管理者)が承認してから公開する使い方があります。この承認制を使っている場合は、承認を求めるメールと承認の一覧に、チェックの結果も載ります。本部の方が、結果を見たうえで承認するかどうかを決められる作りです。
最後に
ここまでが、実際に作って確かめた事実です。ここからは私の考えになります。
Jevのような判定専用のAIは、最初の判定が1回0.01円、1秒前後という軽さなので、書くたびに毎回チェックを挟めます。これが文章を書くタイプのAIだったら、費用も待ち時間も気になって、ここまで気軽には入れられなかったと思います。軽いからこそ、店舗の方が文章を書いたその場に置ける。そこに、この種のAIの使いどころがあると考えています。
一方で、作ってみて一番時間を使ったのは、AIの呼び出し方ではなく、「関係する可能性がある」とは何か、を言葉にすることでした。法令ごとの守備範囲、際どい表現の線引き、評価の正解そのもの。ここが曖昧なままだと、どれだけ賢いAIを使っても、結果はぶれます。AIに判断を任せたい業務があるなら、まずその判断の基準を、人が読んでも迷わない言葉で書けるかどうかを試してみてください。書けたなら、少なくとも評価を始められる状態にはなっています。そこから先は、実際の業務に近いデータで確かめていくことになると思います。
本番で動き始めたばかりなので、実際の投稿や返信でどのくらい注意が出るのか、どこで外れるのかは、これから見ていきます。数字が集まったら、あらためてこのブログで報告します。