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

マルコフ連鎖とは

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

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

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

 

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

今回はひたすら対話を繰り返すことで、勝手に自動学習していく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も作れそうな気がします。

 

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

 


その他の自然言語処理記事はこちらから

 

それではまた。

あなたにオススメの記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

PAGE TOP