2016年9月4日(日曜)
※2016.9.13 システム構成図を追加
きょうの横浜は、朝は雨だったのですが、お昼頃に晴れて、晴れて、日中は28℃になり、残暑がぶり返しました。
― ― ― ― ― ― ― ― ― ―
[MS Bot Framework 3.0 と MeCabで なんちゃってbot]
9月2日(金曜)のブログ記事の続編です。
↓
Microsot Bot Framework 3.0で 簡単にbotが作れる!
http://emiclock.blog.so-net.ne.jp/2016-09-02
受信したメッセージをオウム返し(エコー)するとか、文字数を返す、あるいは、時刻などを返すといったbotは、いわゆる、うさんくさいbotに見えます。
少し手を加えて、「なんちゃってAI」を作ってみます。
AIぽく見せるには、最低限、日本語形態素解析して、構成する要素と品詞を特定する必要があります。
そのあと、日本語意味解析までやっちゃうと、ホンモノのAIに近づいていくので、今回は、受信したメッセージの内容を、日本語形態素解析して、その結果を元に応答メッセージを返すようなbotを作ることにします。
■ 日本語形態素解析エンジン MeCab導入
OSSの日本語形態素解析では、MeCabが有名ですが、botの開発言語が C#ですので、NMeCab(.NETに移植したもの。C#のAPIライブラリ)を使います。
※MeCabは 京都大学情報学研究科+日本電信電話株式会社コミュニケーション科学基礎研究所 共同研究ユニットプロジェクトを通じて開発されたOSS形態素解析エンジンです。
NMeCabと、IPA辞書は、ここからダウンロードします。
↓
https://osdn.jp/projects/nmecab/
本稿では、NMeCab 0.07 (日付: 2015-07-08) を使います。
ダウンロードしたzipを展開して、以下を使いましたが、配置する場所に注意しないと、Bot Frameworkから認識されず、エラーになるので注意です。
(1) NMeCab0.07\NMeCab0.07\bin\LibNMeCab.dll
(2) NMeCab0.07\NMeCab0.07\dic\ipadic
ライブラリは、プロジェクトフォルダに、NMeCabフォルダを作り、LibNMeCab.dll をコピーして、参照を追加しておきます。
辞書(dic\ipadic)は、「’C:\Program Files (x86)\IIS Express」配下に配置します。
日本語形態素解析をご存じない方のために例を挙げます。
例えば、「いちごとさくらんぼがとても好きです」という文を、MeCabで形態素解析すると、以下の結果になります。
日本語を解析するときの最初のステップであり、形態素に分解し、品詞を特定します。
これだけだと、専門用語を抽出できないのですが、そのへんは、以下のリンクの過去ブログに書いた記事で、形態素の連結相関を見て専門用語を自動抽出するシステムと組み合わせると、良い結果が出ます。
[MeCab関連 過去ブログ]
関心語解析ぽいやつ(1)
http://emiclock.blog.so-net.ne.jp/2008-10-27
関心語解析ぽいやつ(2)
http://emiclock.blog.so-net.ne.jp/2008-10-29
■ MS Bot Frameworkで なんちゃってAI bot開発
Visual Studio 2015を起動し、「ファイル」-「新規作成」-「プロジェクト」メニューで表示されたダイアログボックスから、「Bot Application」を選択し、名前は、BotMeCabApp2にします。
botのソースコードは、Controllers\MessagesController.csにあります。
botの応答は、Postメソッドで作りますので、テンプレートが生成したコード(文字数を数えて返すコード)は、削除して、以下のように、何もしないメソッドに書き換えます。
「 // ここに、なんちゃってbotのコードを記述」の部分に、NMeCabで日本語形態素解析を行うコードを記述していきます。
今回は、チャットで好きなものが何かを聞いて、それがなんであるかを抽出して、確認するリプライを送る botのコードを書きました。
さすがに形態素解析だけでは、「いちご」が、一般名詞であることはわかりますが、「いちご」がなんであるかまではわかりませんので、学習させる必要があるのですが、その部分のコードは割愛させていただき、あくまでも、「なんちゃってbot」のコードとして掲載します。
ざっと、1時間半ぐらいで作りました。
■ Bot Framework Channel Emuraterでテスト
Visual Studio 2015でビルドが通ったので、Bot Framework Channel Emuraterでチャットしてみました。
このEmurater用のコネクターは、プチIISのHTTPで、JSON形式でメッセージをやりとりします。
好きなものを答えないと、答えるよう、促します。
日本語の表現は、標準語であれば、たいていの言い回しには対応できます。
できあがったbotは、Azure上で運用されているBot Frameworkサイトへ登録すれば、SkypeやSlackなどからチャットできます。
[補足]
Azuleアカウントがあれば、Azureクラウド上で、Microsoft Cognitive Servicesを使うことができます。(ただし、従量課金)
↓
https://azure.microsoft.com/ja-jp/services/cognitive-services/
まだ、日本語対応ができていないものもありますが、LUIS(Language Understanding Intelligent Service)は、8月末に日本語ロケールをデフォルトにして botを登録可能になりました
LUISは、Bing および Cortana の事前構築済みモデルを使用しており、自然な日本語の文を理解して処理をさせることができます。
《注》STAR WARSなどに出てくるようなロボットのAIではなく、あらかじめ決められたことを、粛々とこなす用途向きです。
― ― ― ― ― ― ― ― ― ―
[追伸]
きょうは、午後、晴れたので、ちょこっとだけ、ポケモン GOへ行き、まだ持ってないポケモンをゲットして図鑑が増えました。
ミニリュウも 2匹増えましたが、アメにしましたww
毎日、毎日、ポケモン GOネタでは飽きるので、まとめることにしました。
あした(9月5日 月曜)は、昔の仕事仲間と飲み会がありますので、帰宅が遅くなります。
nice! のお返しや、コメントのお返し、ブログの訪問が遅い時間になります。
なお、都合により、本日は、コメント欄を閉じさせていただいております。