おしゃべり応答機能のプロトタイプ作成

会話データの持ち方を検討してきました。
実際にデータを収集し始めて、どんな風に使えるか、実際に試してみました。

会話データは、ツイッターから取得しています。
常時多くのデータが発生しているので、
かなり多くの会話パターンが学習できると見込んでいます。

実際には、以下のようにデータを持っています。

20140906_4

例では、メイドさんとご主人様の2人の会話になっています。
2人の会話を交互に記録しています。

さて、このデータを使ってどうやって応答に使うかと言いますと、
発言の内容を検索して、応答の候補を得るという形になります。

例えば、以下のような使い方です。

お茶はいかが→お願いしようかな

 
 
発言内容にフルテキストインデックスが貼ってあるので、
発言内容または単語から、引きます。
さらに、一番左側のフィールドに、応答先データのインデックスを保持しているので、
そこから応答を引くことができます。

モデルのイメージで書くと、以下のような感じになります。

20140906

 
このモデルに従って、インデックスを構成し検索できるようにしています。
応答速度はおおむね3~5秒くらい。ちょっと遅いですかね・・・・。

データ取得

全ての検索処理がIndex Seekになっているので、インデックスのチューニングは限界。
あとは設計の見直しで改善するしか無いでしょうか。

単純にデータを引くだけでなく、取得したデータから最適な応答を
得る処理も追加しなければならないため、SQLの検索速度は限界まで高めたいです。
目標は1秒応答!
 
 
とりあえず、単体の単語の検索ですが以下のような感じになりました。

データ取得

会話の応答という意味では、まだまだ検討が必要そうです。
データ量的にも学習が足りないという感じです。
 
 
これから、テストを繰り返しながら、精度を上げていければと思います。

テスト用のAPIを作成しました。おしゃべり文字列に文字を入れて、ブラウザに入力すると、
応答結果が得られます。
https://liplis.mine.nu/Clalis/v40/Post/Json/ClalisTalk.aspx?sentence=おしゃべり文字列

現段階では、単語レベルでしか検索ができないので、
文章を入れると応答がありません。

今日のところはここまででしょうか。