情報通信系3年の河合輝良です。よろしくお願いします。
前半の研究プロジェクトでは、船越先生ご指導のもと、自然言語処理について学びました。
今回は、発表課題として「SUNABAによる対話システム」と「リトリーバル方式の雑談システム」を実装しましたので発表します。
まず初めに、対話システムとは、自然言語を用いて人間と会話ができるようにしたシステムのことを指します。
前半ではSUNABAを用いて「連絡先をやんわりと断る」というシナリオを作成しました。
SUNABAは、ドコモが開発したチャットボット製作サービスで、GUIを用いてノーコードで作ることもできます。
後半ではリトリーバル方式の雑談システムを実装しました。
リトリーバル方式とは、ユーザーの発話に対し発話DBから最も適した応答を選んで返すことで会話をする方式です。
応答は、直前の入力発話のみを考慮するオートマトンのような形式となっています。
ここで登場した発話DBとは、ある発話とその発話の応答のペアを記録したものを指します。
(今回は対話破綻検出チャレンジの雑談対話コーパスを使用しています。)
実装段階では、スライドのように対話どうしがペアになるように加工しています。
雑談システムを実装するためには、最適な応答を選んで返すための評価手法が必要になります。
今回は、スライドのうち完全一致、編集距離、TF-IDF指標を実装しました。
ここでは扱いませんが、word2vecやBERTといった、ニューラルネットワークを用いてより高次元のデータから応答を選択する手法もあります。
これらの評価手法について、次のスライドから1つずつ詳細を見ていきます。
完全一致システムは最も単純な方法です。
受け取った発話と全く同じものがDBにあればそれを選択します。
編集距離とは、ある文字列から別の文字列に変換するために最低限必要な変換回数のことを指します。
受け取った発話から最も編集距離が短いDB発話を応答とします。
TF-IDF指標は、「ある発話に対し、その発話に出現する頻度が高く、かつ他の発話には出現しない単語は重要」という事実に基づいた指標です。
1つの発話中のある1単語の頻度を表すTFと全発話中のある1単語の希少性を表すIDFの積で計算されます。
受け取った発話とTF-IDFのコサイン類似度が最も高いDB発話を応答とします。
用語の説明は以上です。
次のスライドから実装について解説します。
今回は、コマンドラインで動く対話システムを実装しました。
応答選択手法を選んだ後、発話を入力するとそれに適した応答を出力してくれます。
実装の方針として、Go言語を使用し、外部パッケージを用いることで様々な指標で対話システムを構築することができるようにしました。
今回指標の計算に用いたパッケージはこの3つです。
編集距離、TF-IDF指標の計算用のパッケージとは別に、日本語を単語に分けるための形態素解析パッケージを使用しています。
実装後の結果はこのようになりました。完全一致は省略しています。
どちらも基本的な会話なら正しく応答できますが、季節のことなどやや発展的なことを聞くと応答が破綻してしまいます。
ただし、参照したDB発話を見ると分かるように元のコーパスの精度が良くないとも考えられるため、
より多くのデータを用いると精度も上がると考えられます。
今後の課題としては、指標の計算を自分で実装してみる、word2vecやBERTといったさらにモダンな方法でも実装してみる、といったことが挙げられます。
発表は以上になります。ご清聴ありがとうございました。