SHOEISHA iD

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

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

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

対話しながら検索できるコンシェルジェ風アプリの実装

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

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

 「Answers Anywhere」は、自然言語で入力されたユーザーの指示から意図を汲み取り、対話をしながら機器操作やデータ検索をするシステムを構築するためのミド ルウェアです。今回はこのAnswers Anywhereを使い、日本語の質問で対話的にデータベースを検索するシステムを開発してみます。

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

1. はじめに

 「Answers Anywhere」は、自然言語で入力されたユーザーの指示から意図を汲み取り、対話をしながら機器操作やデータ検索するシステム構築のためのミドルウェアです。連載第1回では概要やインストール方法、第2回ではどのように動くのかについて紹介してきました。今回はこのAnswers Anywhereを使い、日本語の質問で対話的にデータベースを検索するシステムを開発してみましょう。

 データベースにはレストランのデータが格納されており「赤坂の3つ星イタリアンは?」というような質問で検索をします。また、図1のイメージに示すように自由に条件の追加や変更ができます。まるでコンシェルジュに相談しながらレストランを探しているような、未来的な感じのアプリケーションです。

図1 アプリケーションの動作イメージ
図1 アプリケーションの動作イメージ

2. アプリケーション仕様

 レストランのデータはデータベース上の表1に示すスキーマのテーブルに格納されています。実際のアプリケーションではエリアやジャンルは別テーブルに格納されるような設計が普通かと思いますが、今回は単純化のために1つのテーブルにすべての値を格納することにします。

表1 テーブルrestaurantのスキーマ
カラム名 データ内容
rid integer レストランのID(連番)
rname varchar(50) レストラン名
area varchar(16) エリア名
genre varchar(16) ジャンル名
stars integer 評価(なし(NULL)、1、2、3)
図2 restaurantテーブルに格納されているデータ
図2 restaurantテーブルに格納されているデータ

 今回作成する検索アプリケーションの仕様は次のとおりです。

リスト1 検索アプリケーション仕様
  • 文章で検索条件を入力し、表1に示すテーブルからレストランのデータを検索する
  • 検索条件はエリア名、ジャンル名、評価を検索条件とする
  • 検索条件は、順不同または一括での指定、置き換えができることとする

3. データベースの準備

 今回作成するアプリケーションでは、Answers Anywhereと同じアイエニウェア・ソリューションズが開発・販売しているデータベースSQL Anywhere 11を使用します。商用データベースではありますが、開発用途またはデータベースとWebサーバーが同一PCに載るような小規模なWebシステムであれば無料で使用できます。システムに組み込んで使用でき、管理の手間がほとんどかからないことが特長のデータベースです。

 SQL Anywhere は別途PCへのインストールが必要となります。お持ちでない方は弊社ダウンロードページからSQL Anywhere Developer Edition開発者版を入手してください。インストール方法は難しくありませんが、管理ツールの簡単な説明も含め「SQL Anywhereのインストールと概要」に解説がありますのでご覧ください。

 インストールが完了したらサンプルのデータベースファイル「RestaurantSearch_database.zip」をダウンロードしてください。zipを展開し同梱のodbc_setup.batを実行するとデータベースファイルrestaurant.dbがODBCデータソースrestaurantに登録されます。

 Answers Anywhere はデータベースにアクセスする手段としてJDBCを使用しますので、他にもJDBCに対応しているデータベースであれば問題なく使用できます。今回は設定を簡単にするためにサン・マイクロシステムズ社のJavaに標準で付属しているJDBC-ODBCブリッジを使用してSQL Anywhereに接続します。

4. エージェント・ネットワークの設計

 Answers Anywhereではデータを構成する要素を概念モデルで記述しますが、そのモデルをエージェント・ネットワークと呼んでいます。エージェント・ネットワークの働きや構造については前回の記事で解説しました。

 これを基に今回想定したアプリケーションの仕様にあてはめてみましょう。

 まずアプリケーションの範囲ですが、「レストラン全体の中から条件に合致したものを検索」となります。範囲が決まったらそれらを処理の最小単位に分割します。このときは操作の内容(Command)、操作の対象(Object)、対象の持つ属性(Field)という区分で考えます。この区分で考えた分割結果をリスト2に示します。

リスト2 アプリケーション範囲の分割
  • 操作の内容(Command)
    • 検索
  • 操作する対象(Object)
    • レストラン
  • 対象の持つ属性(Field)=条件とするレストランの属性
    • エリア名、ジャンル名、星(評価)

次のページ
5. エージェント・ネットワークの構築

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

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

もっと読む

この記事の著者

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

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

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

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

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

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4446 2009/10/16 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング