SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

自然言語対話エンジン「Answers Anywhere」で実現する使いやすいUI(AD)

シノニム(同義語)機能でユーザーに柔軟な検索システムを提供する

自然言語対話エンジン「Answers Anywhere」で実現する使いやすいUI 第5回

  • X ポスト
  • このエントリーをはてなブックマークに追加

 前回までで実装した検索システムでは、ユーザーが一字一句間違えずに語を入力する必要があり、自然言語対話の特徴である「ユーザーが自由に操作できる環境」にほど遠いと言えます。今回はシノニム(同義語)機能を利用することで、ユーザーに表現の自由度を与える実装を行います。

  • X ポスト
  • このエントリーをはてなブックマークに追加

1. はじめに

 前回までの連載で作成したレストラン検索では、条件にジャンル「イタリアン」を指定するにはユーザーは一字一句間違えずに語を入力する必要がありました。これではコマンド入力と変わらず、自然言語対話の特徴である「ユーザーが自由に操作できる環境」にほど遠いと言えます。

 「イタめし」「イタリア料理」等でも「イタリアン」を指定できるようになればもっと自由度が上がるのですが、単純にジャンルの要素としてこれらの語を追加するだけでは、データベースの情報と一致しないため、認識はできても検索の条件としては使えません。

 このような問題を解決するのがAnswers Anywhereのシノニム(同義語)の機能です。シノニムを使うことでエージェント・ネットワークの語彙を増やし、ユーザーに表現の自由を与えます。

 またシノニムをうまく使うことで、語彙の開発生産性や管理性の向上にも役立てることができます。記事の後半ではその点についても触れたいと思います。

2. シノニム(同義語)とは

 エージェント・ネットワークはエージェントに定義された語(KeywordプロパティやFileプロパティに記述した語など)をもとにユーザー入力を認識します。シノニムとはこの語に対する同義語のことです。例えば「イタリアン」という語(この語をターゲットと呼びます)に対して「イタめし」というシノニムを与えると、エージェント・ネットワークはユーザーの入力「イタめし」は「イタリアン」と同義であると解釈します。

 図1にエージェントでのシノニムの動作概要を示します。エージェントにシノニム辞書ファイルが設定されていない状態では、入力にターゲットが含まれているかどうかを調べ、含まれていればクレームを出す、含まれていないならば出さないといった動きをします。

 一方、シノニム辞書ファイルが設定されている場合は、ターゲットが入力に含まれるかどうか、ターゲットのシノニムが辞書に存在しないかも調べます。存在するのであればクレームをし、ターゲットをエージェントの出力とします(注1)。

図1 シノニムの動作概要
図1 シノニムの動作概要
注1

 厳密にはポリシーのアクション節で*.targetと記述されている場合はターゲット(図では「イタリアン」)、*.matchedと記述されている場合はマッチした入力語を出力します(図では「イタめし」)。field.templateの既定動作は前者を出力するように設定されています。

3. シノニム辞書ファイルの書式

 エージェントはシノニム辞書ファイルを1つ持つことができます。シノニム辞書ファイルの中にはそのエージェントの中で参照するかどうかにかかわらず複数のターゲットを含めることができます。その書式をリスト1に示します。{targetN}にはターゲットを記述し、{wordNn}にはそれに対するシノニムを記述します。

リスト1 シノニム辞書ファイルの書式
{target1}: {word11},{word12},...
{target2}: {word21},{word22},...
{target3}: {word31},{word32},...
    :

 リスト2に記述例を示します。この定義により入力「イタめし」や「イタリア料理」が「イタリアン」と同義であると解釈され、「中国料理」は語「中華」と同義であると解釈されるようになります。

リスト2
イタリアン: イタめし,イタリア料理
中華: 中国料理

次のページ
4. シノニムの設定

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
自然言語対話エンジン「Answers Anywhere」で実現する使いやすいUI連載記事一覧

もっと読む

この記事の著者

アイエニウエアソリューションズ株式会社 伊藤 純一(イトウ ジュンイチ)

アイエニウェア・ソリューションズ株式会社 シニアエンジニア。8ビットの時代からコンピュータに触りはじめBASIC、アセンブラ、C言語などを独習。サンマイクロシステムズ入社の年にJavaが発表され、そこでJavaによる金融系、官公庁系のシステム開発を中心に手がける。その後外資系ベンチャーのデジマ・ジャ...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5130 2010/04/28 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング