View
1.011
Download
2
Category
Preview:
Citation preview
Python の自動文章生成ライブラリmarkovchains とその活用方法(Twitter Bot) について
株式会社オーシーシー 小野裕作
1
自己紹介
• 氏名: 小野裕作• 株式会社オーシーシー• 琉大情報工学科出身• github: http://github.com/yono• 主に python 使ってます
2
Twitter Bot とは?
• Twitter: ユーザーが「つぶやき」を投稿する Web サービスhttp://twitter.com/yono
• Twitter 上で自動的に発言をするプログラム
• 人間の発言を模倣してコミュニケーションを図るタイプ→ 人工無脳
• 自発的に話しかけたり、呼び掛けに応じたり
• すどりが有名http://twitter.com/sudori
3
会話文の作り方
• Twitter やチャットなどから収集したログを使う
• 開発者自身が手作業で文章を用意する
• マルコフ連鎖を利用して文を生成する
4
→ 本発表でのテーマ
マルコフ連鎖で文章生成
• 単語を順次発生させる• 次に選択される単語は現在の単語を基に決定される
5
今日
は
これから現在の単語
マルコフ連鎖で文章生成
• 単語を順次発生させる• 次に選択される単語は現在の単語を基に決定される
6
今日
は
これから
とても現在の単語
マルコフ連鎖で文章生成
• 単語を順次発生させる• 次に選択される単語は現在の単語を基に決定される
7
今日
はとても
暑い現在の単語
N階マルコフ連鎖
• 単語を順次発生させる• 次に選択される単語は現在の単語を含む N - 1 個の単語を基に決定される
8
今日
は
これから
とても現在の単語
ライブラリを開発
• マルコフ連鎖による文章生成はとてもポピュラー• N階マルコフ連鎖に対応させようとすると途端に面倒• 日本語文を取り扱う際にも面倒な部分が多々
→ python-markovchains の開発
9
markovchains の機能一覧
1.読み込んだ文章を基に、文章を生成する2.読み込んだ文章を分解してデータベースに保存する3.データベースに保存した情報を基に文章を生成する→ PostgreSQL, MySQL に対応4.N階マルコフ連鎖に対応
10
markovchains の機能について(1)
• 読み込んだ文章を基に、文章を生成する
11
from markovchains import markovchains # library を import
m = markovchains.MarkovChains() # instance 生成
text = u”””親譲(おやゆず)りの無鉄砲(むてっぽう)で
小供の時から損ばかりしている。
”””m.analyze_sentence(text) # 文章解析
print m.make_sentence() # 文章生成
markovchains の機能について(2)
• 読み込んだ文章を分解してデータベースに保存する
12
from markovchains import markovchains # library を import
m = markovchains.MarkovChains() # instance 生成
text = u”””親譲(おやゆず)りの無鉄砲(むてっぽう)で
小供の時から損ばかりしている。
”””m.analyze_sentence(text) # 文章解析
m.load_db(‘postgresql’, ‘markov’) # DBMS, DB名を指定
m.db.register_data() # DB に保存
markovchains の機能について(3)
• データベースに保存した情報を基に文章を生成する
13
from markovchains import markovchains # library を import
m = markovchains.MarkovChains() # instance 生成
m.load_db(‘postgresql’, ‘markov’) # DBMS, DB名を指定
m.db.make_sentence() # 文章生成
markovchains の機能について(4)
• N階マルコフ連鎖に対応
14
from markovchains import markovchains # library を import
m = markovchains.MarkovChains() # デフォルトだと3階
m = markovchains.MarkovChains(order_num=2) # 2階マルコフ連鎖
実行例
15
• 2階と3階マルコフ連鎖の違い
markovchains の活用例
• Twitter Bot を作成• yonobot (http://twitter.com/yonobot)• 特定のユーザの発言を定期的にDBに保存• Reply に対して返事をする
16
まとめ• マルコフ連鎖で文章生成• ライブラリがあるといろいろと便利• Twitter Bot が簡単に実装できる
17
github でソース公開してますmarkovchainshttp://github.com/yono/python-markovchains
yonobothttp://github.com/yono/py-yonobot
Recommended