AI coordinator

人工知能 & ロボティクス

サイト運営者

© AI coordinator All rights reserved.

言葉を自動学習する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. この記事へのトラックバックはありません。

Watson NLCに学習データを投入できるGUIの開発方法

Watson NLCに学習データを投入できる画面をPythonで実装する方法 Watson NLCに学習データを投入できる簡単な画面を開発…

20179/16

Selective Searchを使った映像からの物体検出にチャレンジ

Selective Search 物体検出にチャレンジしている筆者としては、どうやって画像から物体らしき部分を効率よく抽出できるかを日々模…

Tensorflowで映像からの美人女優顔検出学習モデルの見直し

以前の記事で紹介したモデルが使い物にならなかった 以前紹介したリアルタイム映像からの美人女優検出で作成した学習モデルは、とりあえず学習モデ…

誰でもできるtensorflowを使ったサンプル画像認識

tensorflowなら簡単に画像認識ができる tensorflowの入門編として、簡単にサンプルソースを使った画像認識を試してみたので、…

20176/6

大量の画像から顔の部分のみトリミングして保存する方法

OpenCVを使った顔抽出 前回の記事で、OpenCVを使った顔認識を紹介しました。 今回は大量の画像から顔の部分だけをトリミングし…

YOLOv2のリアルタイム物体検出をTensorFlowとPythonで実装する方法

YOLO v2をどうしてもPythonで使ってみたかったので作ってみた 数多くあるオブジェクト物体検出の中で、処理速度が最も早い?と言われ…

20173/5

Pepper用Python 2.7 SDK(WIN)セットアップ方法

コレグラフを使用しなくてもPepperを動かせるPython 2.7 SDKセットアップ方法 Windows編 前回に続き、今回はWind…

20178/15

DeepLearningのモデル可視化方法とmatplotlibで学習の様子を可視化する方法

学習モデルの可視化と学習の様子を可視化してみた 何を今更といった内容の記事です。 DeepLearningにチャレンジしてきた筆者で…

20178/30

Fashion-MNISTをCNNで学習させて精度を上げてみた

Fashion-MNISTをCNNモデルで学習 前回の記事「TensorFlowでFashion-MNISTを試してみた」で学習モデルを作…

Watson VisualRecognition を Python GUIで使ってみよう

Watson API 「VisualRecognition」をPythonで使ってみよう Watson API「VisualRecogni…

ページ上部へ戻る