#setlinebreak(on)
*おしゃべり応答機能のプロトタイプ作成 [#xf70e9ac]
会話データの持ち方を検討してきました。
実際にデータを収集し始めて、どんな風に使えるか、実際に試してみました。

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

実際には、以下のようにデータを持っています。
#html{{
<div align="center">
<img src="/lipliswiki/webroot/image/common/LiplisDevDiary/20140906_4.gif" alt="20140906_4" style="width:500px;"/>
</div>
}}
例では、メイドさんとご主人様の2人の会話になっています。
2人の会話を交互に記録しています。

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

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

モデルのイメージで書くと、以下のような感じになります。
#html{{
<div align="center">
<img src="/lipliswiki/webroot/image/common/LiplisDevDiary/20140906.gif" alt="20140906" style="width:500px;"/>
</div>
}}
 
このモデルに従って、インデックスを構成し検索できるようにしています。
応答速度はおおむね3~5秒くらい。ちょっと遅いですかね・・・・。
#html{{
<div align="center">
<a href="/lipliswiki/webroot/image/common/LiplisDevDiary/20140906_2.gif"><img src="/lipliswiki/webroot/image/common/LiplisDevDiary/20140906_2.gif" alt="データ取得" style="width:500px;"/></a>
</div>
}}
全ての検索処理がIndex Seekになっているので、インデックスのチューニングは限界。
あとは設計の見直しで改善するしか無いでしょうか。

単純にデータを引くだけでなく、取得したデータから最適な応答を
得る処理も追加しなければならないため、SQLの検索速度は限界まで高めたいです。
目標は1秒応答!
 
 
とりあえず、単体の単語の検索ですが以下のような感じになりました。
#html{{
<div align="center">
<a href="/lipliswiki/webroot/image/common/LiplisDevDiary/20140906_3.gif"><img src="/lipliswiki/webroot/image/common/LiplisDevDiary/20140906_3.gif" alt="データ取得" style="width:500px;"/></a>
</div>
}}

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

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

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

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