So-net無料ブログ作成
お知らせ

 当ブログは、ブログに割当てられたディスク容量が満杯になったため、2017年1月8日に、続ブログへ移転しました。

 【移転先】
  続・Emi Clockは、どうなったの?
  https://yuna-k.blog.so-net.ne.jp/


  RSSフィード
  https://yuna-k.blog.so-net.ne.jp/index.xml

MS Bot Framework 3.0で 飲み会調整botの日本語自然文入力 [チャットbot]

2016年11月20日(日)

きょうの横浜は、[晴れ]晴れて、日中は暖かかったです。

※ ITの難しい話(チャットボット)が延々と続きますので、興味がない方は、スルーして、ポチっとしてください。

― ― ― ― ― ― ― ― ― ―
[飲み会調整botのリスト並べ替えパーソナライズ]
現在、このチャットBotは、PoCステータスです。
フィジビリティスタディのときは、日本語自然言語入力で試作したのですが、「相手が人間じゃないと分かってるのに、日本語自然言語で話しかけないよね。」という判断で、問いかけに順次答えると、目的が達成される会話方式に変更したいきさつがあります。

ところが、世の中には、こういうことを言う変人もいます。
「日本語自然言語入力できないと、AIぽく見えないんだよね。」

「AIぽく」ってなんだ?
AIか、AIじゃないか、1 か 0か、どっちかではないのかな、と思いましたが、日本語自然言語入力なんて、簡単に作れるし、課題はあるにせよ、iPhoneの「Siri」や、Android の「OK Google」では、そこそこにできてますよね。
日本で、あまり流行らないのは、日本語の曖昧さ(同音異義語など)や、爆発的に増える新語(女子高生言葉など)にあるのだと考えています。
一休さんのとんちで有名な「このはしを渡るべからず」など同音異義語は、やっかいですし、女子高生が「ブーヤーでオールして、LINE 寝落ちしてごめん」なども解析困難です。

同音異義語は、かなで書くからであって、チャットの場合、漢字で書けば課題が解決する?!
いやいや、そう簡単ではないです。
石川は好きじゃないんだよね。」
ん?!
石川県(地名)? 石川君(人名)? どっち?!
日本語を解析するには、形態素に分解して品詞特定し、意味解析するのですが、その意味が確定するには、過去の会話との関係までさかのぼらないと 100点は取れません。

いままでブログで取り上げてきた 飲み会調整botに、パーソナルエクスペリエンス(個人の経験)でサプレッシング(やりとりを省略)している項目について、日本語自然文入力できるようにしてみました。

【今までの入力】
 「hi」 → 「オフ会」 → ・・・

【日本語自然文入力】
 「hi」 → 「仙台で19:00から6000円でオフ会がしたい。」 → ・・・

日本語自然文入力を行うには、まず、形態素解析し、品詞を特定します。
※形態素解析は、gooラボの APIを使わせてもらいました。
結果は、こんな感じです。

MS Bot Framework 3.0で 飲み会調整botの日本語自然文入力

日本語自然文が形態素に分解され、品詞が特定できます。
会費の候補は、「Number」→「助数詞 = "円"」の連接関係で分かります。
開始時刻の候補は、「Hour」→「HourMinute = ”:"」→「Minute」の連接関係で分かります。
でも、開催地=「仙台」は「名詞」で、それだけでは、何なのか意味が分かりません
さらに、イベント名=「オフ会」は、「名詞 = "オフ"」→「名詞接尾辞 = "会"」に分かれていますが、「合コン」のように、必ずしも、同じ規則ではないのです。

開催地は、地名なので、固有表現抽出を行えば、地名か、そうでないか特定できます。
※固有表現抽出は、gooラボの APIを使わせてもらいました。
結果は、こんな感じです。

MS Bot Framework 3.0で 飲み会調整botの日本語自然文入力

「LOC」は、ロケーションを表しており、「仙台」は地名だと識別されました。
イベント名については、「xx会」「合コン」「カラオケ」など、なんでもアリなので、辞書を作らないとムリです。

 ― ― ― ― ― ―
さっそく、土日をつぶして、日本語自然文入力対応を実装して、試してみました。

イベント名の質問の時に、尾ひれをつけて、

代官山で20:00から7000円で誕生会がしたい。

と入力すると、この日本語自然文を解析して、開催場所=代官山、開始時刻=20:00、会費=7000円と解釈(つまり、データの構造化)をやってくれています。
そして、お店のリストが、「ぐるなび」サイトの代官山の人気店をリストしています。
MS Bot Framework 3.0で 飲み会調整botの日本語自然文入力

「正規表現でマッチさせてるだけじゃないの?」
疑り深い人だなあ。
では、ステートフル会話セッションを、マジックワード「キャンセル」で取り消して、こんどは、

オフ会がしたいなぁ。場所はヲタクが集う秋葉原で、会費は5500円ですかね~

と、入力する(文が 2つに分割され、エンティティの順序が変わっている)と、こんどは、日本語自然文を解析して、開催場所=秋葉原、開始時刻=前回と同じ、会費=5500円と解釈をやってくれています。

MS Bot Framework 3.0で 飲み会調整botの日本語自然文入力

ほらね。
ちゃんと、日本語自然文入力対応しているんですよ。


現在のPoC用のシステム構成ですが、さくらのVPS上のApacheから、独自ドメインを取得して、 SSL/TLSで配信しています。
その後ろで動くチャットBotは、Microsoft Azureのサービス(商用版)を従量課金で使っています。

MS Bot Framework 3.0で 飲み会調整botの日本語自然文入力

Windows系PCの方、Android系スマホの方は、以下の URLでデモを動かすことができます。
   ↓
11.25 MS Bot Framework 3.0で 飲み会調整botの語句類似度計算による類似語入力
※Apple系(OS X、iOS)の Safariなどは、Microsoftのバグのため、正しく動作しません。
とりあえず、上記のWebチャット画面を表示して、「hi」と打ち込んでください。
あとは、分かります。
sgoo.png

※Web Chatコネクターを使っていますので、HTTPSセッションごとにパーソナルエクスペリエンスをデフォルト学習状態にしています。
※Skype、Lync、Facebook Messenger等では、ユーザごとにパーソナルエクスペリエンスを永続化できます。

[MS チャットBot 実証実験 関連ブログ]
2016.10.30 Microsot Bot Framework 3.0で 飲み会調整botデモサイト改二
2016.11.04 Microsot Bot Framework 3.0で ニュースbotデモサイト改二
2016.11.05 Microsot Bot Framework 3.0で 飲み会調整botデモサイト改二 再始動
2016.11.12 MS Bot Framework 3.0で 飲み会調整botのパーソナライゼーション
2016.11.18 MS Bot Framework 3.0で 飲み会調整botのリスト並べ替えパーソナライズ
2016.11.20 MS Bot Framework 3.0で 飲み会調整botの日本語自然文入力 [かわいい]


ヴェーダが、こう判断している。

オリジナルの太陽炉=GNドライブを持たざる者は、イノベイターにはなれない。

nice!(92) 
共通テーマ:趣味・カルチャー

nice! 92

Facebook コメント

caution.gif当ブログ記事は、日本国著作権法および国際法により権利が保護されています。無断で 画面の写真、ハードコピー、その他の二次複製物を無断で使用することは権利の 侵害になりますのでご注意下さい。
This blog post, right has been protected by copyright law and international law. Without permission screen photo of, hard copy, that you use the other secondary copies without permission is a violation of the rights Please note.
- - - - -
All rights reserved. Copyright (C) Motosoft(Toshi At Kuroneko) 2007-2018.