Watson Assistant でAIチャットボットを 作ってみた(第3弾)|Entityは辞書なのだ

Watson Assistant でAIチャットボットを 作ってみた(第3弾)|Entityは辞書なのだ

Watson Assistant(ワトソンアシスタント)でAIチャットボットを作ってみた第3弾はEntity(エンティティ)の作成について紹介します。

エンティティは、訳すと「実体」ですね。うーんなんとなく分かるような、分からないような・・・。
というわけで、どんな作業をやるかを、さっさと紹介しちゃいます。その方がわかりやすいかもしれないです。で、エンティティの登録は、どんな作業かというと、

単語を登録し、その単語の同義語を登録する作業

です。

辞書を作成するようなイメージですね。

上記をみてください。これは、バンド名(ソロも含んでますが)を登録しています。しかもバンド名はいろんな言い方があるので、それらも同じものということで、同義語(Synonyms)として登録します。
例えばアイアン・メイデンであれば、Iron Maidenとかメイデンだけで入力してくるユーザーがいると思います。マイケル・シェンカー・グループであればMSGというように略す場合もあるでしょう。これらを同じバンド名としてグルーピングして@BANDという箱にまとめます。

Fuzzy Matching(ファジーマッチング)ってなんだ?

「ファジーマッチング」は、曖昧一致ですね。スペルミスした場合でもヒットさせることができるというもの。オフの場合、単語の文字列が完全に一致していないとヒットしません。


実際にやってみました。ファジーマッチングがオフの場合、「デフ・レパード」を間違えて「デブ・レパード」と入力するとヒットしませんでした。
これがオンになるとヒットします。どこまでの揺らぎに対応できるかというのは正直微妙で、ファジーマッチングをオンにしていても「デフレパード」と中黒なしで入力したらヒットしませんでした。うーん、これぐらいは一致と判断してほしい。


現在作成中のオカマボットは精度をそんなに求めないので、ファジーマッチングをオンにしておこうと思います。

CSVで一括登録もできる

カンマ区切りのcsvデータをインポートすることもできます。エクセルで単語リストを用意することもできちゃいますね。

※注意 エクセルでCSV書き出しすると日本語表記が文字化けしちゃいます。そんな時は適当なテキストエディタで、UTF-8に変換してください。

バンド名の他にもエンティティを作成しました。

結構使いそうなので、「はい」と「いいえ」も用意しました。

同義語の他にパターンというのもあるぞ

Synonyms(同義語)の他にPatterns(パターン)というのもありましてこれは何かというと、WEBサイトのURL、電話番号、郵便番号など定型のものを正規表現でパターンとして登録して、そのパターンのものが入力されたらURLだとか郵便番号だとか認識することができるようにするものです。

例えばURLの場合は上記の画像のような感じですね。

デフォルトのエンティティ

あらかじめ用意されているデフォルトのエンティティ(System entities)もあります。例えば@sys-timeをオンにしておくと入力される言葉の中に10時15分 と入っていたらそれは時間だと認識してくれるようです。

金額、曜日、時間などが用意されています。ベータ版ですが、人の名前も認識できるみたいです。

このあと、Dialogダイアログの設定をするのですが、エンティティを条件にして、発話内容を振り分けたりなどもするので、あまり適当にエンティティ作ってしまうとあとで修正がたくさん発生すると思います。
なので、最初は必要最低限のものを用意して、ダイアログでシナリオを組んで行くときに、必要に応じて追加したりしたほうがいいかもしれません。


できることなら、最初の段階で会話の流れをある程度設計しておくのがよさそうですね。この辺は、次回ダイアログを作成するところを紹介する際に詳しく書こうと思います。

AI・人工知能カテゴリの最新記事