LiplisDevDiary/2014-09-06
Last-modified:
おしゃべり応答機能のプロトタイプ作成
会話データの持ち方を検討してきました。
実際にデータを収集し始めて、どんな風に使えるか、実際に試してみました。
会話データは、ツイッターから取得しています。
常時多くのデータが発生しているので、
かなり多くの会話パターンが学習できると見込んでいます。
実際には、以下のようにデータを持っています。
例では、メイドさんとご主人様の2人の会話になっています。
2人の会話を交互に記録しています。
さて、このデータを使ってどうやって応答に使うかと言いますと、
発言の内容を検索して、応答の候補を得るという形になります。
例えば、以下のような使い方です。
お茶はいかが→お願いしようかな
発言内容にフルテキストインデックスが貼ってあるので、
発言内容または単語から、引きます。
さらに、一番左側のフィールドに、応答先データのインデックスを保持しているので、
そこから応答を引くことができます。
モデルのイメージで書くと、以下のような感じになります。
このモデルに従って、インデックスを構成し検索できるようにしています。
応答速度はおおむね3~5秒くらい。ちょっと遅いですかね・・・・。
全ての検索処理がIndex Seekになっているので、インデックスのチューニングは限界。
あとは設計の見直しで改善するしか無いでしょうか。
単純にデータを引くだけでなく、取得したデータから最適な応答を
得る処理も追加しなければならないため、SQLの検索速度は限界まで高めたいです。
目標は1秒応答!
とりあえず、単体の単語の検索ですが以下のような感じになりました。
会話の応答という意味では、まだまだ検討が必要そうです。
データ量的にも学習が足りないという感じです。
これから、テストを繰り返しながら、精度を上げていければと思います。
テスト用のAPIを作成しました。おしゃべり文字列に文字を入れて、ブラウザに入力すると、
応答結果が得られます。
https://liplis.mine.nu/Clalis/v40/Post/Json/ClalisTalk.aspx?sentence=おしゃべり文字列
現段階では、単語レベルでしか検索ができないので、
文章を入れると応答がありません。
今日のところはここまででしょうか。