言葉を自動学習するSlackbotをマルコフ連鎖で実装

言葉を自動学習するSlackbotをマルコフ連鎖で実装

マルコフ連鎖とは

こんにちは。

AI coordinatorの清水秀樹です。

簡単に説明すると、マルコフ連鎖を使用すれば既存の文章を元にして自動で文章を生成することができるようになります。

ロシアの数学者マルコフによって研究されたモデルだそうです。

このモデルには物理学や統計学が使われているようです。

 

まあ、難しいことはよく分かりませんが、使って見ることでその効果を確認していきたいと思います。

今回はひたすら対話を繰り返すことで、勝手に自動学習していくSlackbotを作成します。

 

開発環境

macOS Sierra

Anaconda3-4.2.0-MacOSX-x86_64

python 3.5.2

 

参考にさせて頂いたサイトと書籍の紹介

Slackbotを作成する上で、下記サイトを参考にさせて頂きました。

PythonのslackbotライブラリでSlackボットを作る

 

マルコフ連鎖については以下の書籍を参考にさせて頂いています。

書籍名:Pythonによるスクレイピング&機械学習

書籍の詳細についてはこちら

 

Slackbotの環境準備

基本的Slackbotの作成方法は参考元サイトの通りで実装できますが、ハマった点だけを紹介します。

まずはbotにするユーザーを登録する必要がありますでの、グループを作成しただけではユーザーが自分しかいません。

そのためbot用にユーザーを紹介しましょう。

 

続いて、API_TOKENの取得方法です。

こちらもググればすぐに取得方法が分かると思いますので、ここでは紹介を割愛します。

 

開発用のフォルダ構成は以下の通りです。

参考元サイトの丸パクリです。

 

ソースコードは以下の通りです。

参考元と異なる部分のみ紹介します。

slackbot_settings.py

API_TOKENは取得したトークンを指定してください。

 

マルコフ連鎖

my_mention.py のソースコードにマルコフ連鎖を実装しています。

 

対話を続ければ勝手に自動学習するようになっています。

学習モデルも chatbot-data.json に保存しますので、処理を中断しても継続して再利用することができます。

 

学習結果の検証

ひたすら機械学習について対話をして見ました。

起動方法はターミナルで起動します。

 

最初はおうむ返しになりますが、すでに既出済の単語を放り込むとSlackbotの反応が変わってきます。

 

・・・正直実用には絶えないでしょうね。

ただ、もう少し複雑にソースコードを組み込めば可能性もあるような気がします。

 

何かに特化した学習モデルを準備して自動学習しないように対応することも可能なので、そうすればバカにならず対話を続けることができるSlackbotも作れそうな気がします。

 

この辺はもう少し模索していきたいですね。

 

それではまた。

About The Author

Hideki
東京大学発AIスタートアップ企業でロボット開発室室長、画像解析室室長、動画解析室室長を務め、AIエンジニアとしても画像認識関連の特許を在籍中に3つ取得。その後、KDDIグループ内でプロダクトリーダーとして自然言語処理パッケージの自社開発を経て、現在はAGRISTのテックリードとして農業の人手不足の解決に向けた収穫ロボットの開発にチャレンジしている。ロボットは技術の総合格闘技との考え方から、AIだけでなく、ハードやエレキ、通信からクラウド、IOTまで幅広く手掛けることができる。最近では人とロボットの共存を目指すべく、性能だけを追い求める開発から「感動やワクワク体験」をデザインできるロボットの研究を進めており、人とロボットがうまく共存できる世界を作り出したいと日々行動している。

COMMENTS & TRACKBACKS

  • Comments ( 0 )
  • Trackbacks ( 1 )

コメントはまだありません。

  1. […] 前回の記事「言葉を自動学習するSlackbotをマルコフ連鎖で実装」を参考にSlackbotを作成してみてください。 […]

LEAVE A REPLY

*
*
* (公開されません)