HUOXIU

インテリジェントな顧客サービスシステムの構築方法(パート3):NLPにおけるエンティティ情報の抽出と応用

前回までの2つの記事では、ユーザーの意図のセグメンテーションと認識、そしてそれに基づいて設計されたマルチターン対話プロセスについて説明しました。この記事では、自然言語処理(NLP)におけるエンティティ情報抽出とその製品への応用について引き続き議論し、インテリジェントなカスタマーサービスシステムの構築方法に関するシリーズの第3回をお届けします。

AIが人間の話し言葉をどのように理解するのか、疑問に思ったことがあるかもしれません。ショッピングモールでロボットに「3階に行きたい」と言ったら、ロボットはどうやって私の言いたいことを理解するのでしょうか?「NARSに行きたい」と言ったら、ロボットはどうやってNARSが何なのか、そしてどこにあるかを理解するのでしょうか?さて、ここでエンティティの概念について考えてみましょう。

まず、エンティティ情報とはどういう意味でしょうか?エンティティ情報とは重要な情報を指し、一般的に2種類に分けられます。1つは携帯電話番号、メールアドレス、日時など、基本的に業務とは関係のない一般的な情報です。もう1つは業務に関連し、実際のシナリオに合わせてカスタマイズされた情報です。

これをどう理解すればいいのでしょうか?例を挙げてみましょう。最初のシナリオでは、飛行機のチケットを予約する必要があるときに、次のように言うとします。

明日の北京発上海行きの午後発の航空券を予約してください。電話番号は13344445555です。旅程表を[email protected]までお送りください。
条件に一致する次のフライトが見つかりました...

このシナリオでは、「明日」と「午後」は時間情報、「北京」と「上海」は位置情報、「13344445555」は携帯電話番号を表しています。これらの情報は一般的に標準的であり、ビジネス要件によって変更されることがないため、通常はアルゴリズムに組み込まれ、対応する変換を識別して実行します。上記のシナリオでは、AIはまず日時を識別し、「明日」を「2020年3月27日」、「午後」を「14:00~18:00」に変換し、他の情報とマージします。データセンターは航空会社にリクエストを送信し、結果(基準を満たすフライトのリスト)を返します。

この認識プロセスは、人間が言語学習を通じて反射的に日付、電話番号、場所を識別できるため、一見単純なものに聞こえます。しかし、AIにとっては、これらは最初は単なる同じ単語に過ぎず、これらの情報を区別して抽出するには高度なアルゴリズムが必要です。ここでの認識率は、アルゴリズム設計における言語理解の豊かさと密接に関係しています。例えば、AIが最初に「明日」と「昨日」を認識しながら「前日」や「明後日」といった表現を無視した場合、あるいは「2020年2月2日」を認識しながら「2020年2月2日」という表現を無視した場合、認識率は直接的に低下し、具体的には…愚かさの増加として現れます。

この変化には興味深い点があります。人が自然言語で日付や時刻を表現する場合、必ずしも標準的な論理に完全に一致するとは限りません。例えば、0時10分にスマートアシスタントに「明日にアラームを設定して」と指示した場合、「明日」はおそらく「今日」を意味します。また、2020年1月にスマートアシスタントに「12月の請求書を確認して」と指示した場合、実際には2019年12月を指していることになります。スマートアシスタントを「人間らしく」感じさせるには、こうした言語習慣を考慮する必要があります。Siriはこれを非常にうまく行っています。アラーム設定のシナリオでは、「今朝8時にアラームを設定するということですか?」と確認してくれます。

2つ目のシナリオに戻り、ビジネスに関わる主体に焦点を当ててみましょう。例を続けると、ミルクティーを1杯購入したいと思っていて、スマートアシスタントを使う場合、会話は次のようになります。

易典店のミルクティーをお願いします。四季ミルクティーの大きいサイズ、砂糖たっぷり、小豆添え、氷なし。
はい、注文しました。

ここで、「一点点」(Yi Dian Dian)はミルクティーのブランド、「四季奶青」(Si Ji Nai Qing)は商品名、「大杯」(Large cup)は1杯の量、「全糖」(Full sugar)は糖度です。これらの表現は完全にビジネスコンテキストに依存するため、特定の状況以外では意味を失ってしまいます。例えば、天気について話している時に突然「一点点」(Yi Dian Dian)と言っても、相手は理解できません。「北京」のように常に北京を指すような言葉とは違います。つまり、このような情報は実際の状況に合わせてカスタマイズする必要があるということです。つまり、AIにミルクティーのブランド、ミルクティーの商品名、1杯の量を伝える必要があるのです。

どうやって見分けるのでしょうか? 一般的には、文字列マッチング、正規表現、注釈の 3 つの方法があります。

文字列マッチングとは、本質的には、頻繁に出現するフィールドに適用可能なエンティティ情報のセットを定義することです。少し技術的に聞こえるかもしれませんが、実際のコードの書き方がわからないため、擬似コードを使って説明します。ミルクティーを購入するというシナリオでは、ミルクティーのブランドや商品名などのエンティティ情報は次のように定義できます。

 「ミルクティー ブランド」 = ['Yi Dian Dian'、'Heytea'、'Lelecha'、'Nayuki'】
サービングサイズ = ['大', '中', '小']
「商品名」=['四季ミルクティー', 'ブラックティーマキアート', 'チーズバレエ']

このように、ユーザーがいずれかの項目について言及すると、AI はユーザーが何について話しているのかを知ることができます。

正規表現は、エンティティ情報の出現規則を定義し、定期的に出現する情報に適しています。ナンバープレート番号を例に挙げると、一般的な形式は省の略語(漢字1文字)+文字1文字+数字5桁で、擬似コードで表現すると以下のようになります。

 「ナンバー プレート番号」 = [北京、上海、山東、浙江... 天津、河南、江西]{1}[AZ]{1}[0-9]{5}
#つまり、州名の略語の文字 1 文字、大文字、およびアラビア数字 5 文字で構成されます。

同様に、この方法を使用して、機器のバッチ番号、ID カード番号、携帯電話番号、注文番号など、他の一般的な用語を定義することもできます。

ここまで読んで、「この2つの方法は全然AIっぽくない」と思われるかもしれませんね。ええ、おっしゃる通りです。私もそう思います!しかし、手段はあくまで手段であり、AIは目的ではありません。人間と会話するという究極の効果を実現することが目的です。それでは、AIらしい3つ目の方法を見てみましょう。

アノテーション(タグ付け)とは、特定の意味を表す文にラベルを付け、機械学習がその意味を学習できるようにすることです。これは、固定的でも規則的でもない表現に適しています。例えば、私の仕事では、自動車ローンや住宅ローンの顧客から、返済額と残額についてよく質問されます。そのための一般的な表現をいくつか以下にまとめました。

いくら返済しましたか?
ローンのいくらをすでに返済しましたか?
ローンはいくら返済しましたか?
返済されたローンの数はいくつですか?
すでにいくら返済しましたか?
ローンはいくら返済しましたか?あといくら支払う必要がありますか?
ローン返済はあといくら残っていますか?
まだいくらローンが残っているのですか?
あといくら支払う必要がありますか?

これらの表現は明らかに固定名詞を使用しておらず、正規表現で記述できる明確なパターンにも従っていません。しかし、ユーザーの質問の意味は意味論的に明確であるため、意味を示すために注釈を使用します。「支払済み」という概念を「支払済み」、残りの「支払予定額」という概念を「残額」と定義します。括弧は注釈の位置を示しています。

いくら返済しましたか? — "entity"="paid"
すでにいくらのローンを返済しましたか? — "entity"="paid"
ローンはいくら返済しましたか? — "entity"="paid off"
ローンの返済額はいくらですか? — "entity"="repaid"
すでにいくら返済しましたか? — "entity"="repaid"
ローンはいくら返済済みですか? — "entity"="paid"
まだいくら返済する必要がありますか? — "entity"="残額"
ローン返済額はいくら残っていますか? — "entity"="remaining"
まだいくらローンを支払っていますか? — "entity"="remaining"
あといくら支払う必要がありますか? — "entity"="remaining"

上記のようなタイプの注釈を大量に完成させた後、ユーザーが同じ質問を再度行った場合、AI は対応するエンティティ情報を識別できる可能性が高くなり、その後は「人のように」会話を続けることができます。

実際の実装では、抽出方法は一意でも固定でもありません。要件を満たすために選択される具体的なアプローチは、プロジェクトマネージャーの技術的手法の理解とビジネスコンテキストへの精通度に依存します。最終的には、すべてはユーザーのニーズに応えるものとなります。

今日はここまでです〜次回はAIをいかに人間らしくするか、つまり偽りの知性についてです。

読んでいただきありがとうございます。

著者について: @A Circle、SaaS 企業のプロダクト マネージャー。AI、検索、データ分析、商用化を専門とし、インテリジェント カスタマー サービス シリーズの著者。「Data Creators Alliance」のメンバー。