狠狠撸

狠狠撸Share a Scribd company logo
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)

? 読み込んだ文章を基に、文章を生成する

 from markovchains import markovchains # library を import

 m = markovchains.MarkovChains()      # instance 生成

 text = u”””
 親譲(おやゆず)りの無鉄砲(むてっぽう)で

 小供の時から損ばかりしている。

 ”””
 m.analyze_sentence(text)             # 文章解析

 print m.make_sentence()              # 文章生成



                                                            11
markovchains の機能について(2)

? 読み込んだ文章を分解してデータベースに保存する

 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 に保存

                                                            12
markovchains の機能について(3)

? データベースに保存した情報を基に文章を生成する

 from markovchains import markovchains # library を import

 m = markovchains.MarkovChains()      # instance 生成

 m.load_db(‘postgresql’, ‘markov’)    # DBMS, DB名を指定

 m.db.make_sentence()                 # 文章生成




                                                            13
markovchains の機能について(4)

 ? N階マルコフ連鎖に対応

from markovchains import markovchains   # library を import

m = markovchains.MarkovChains()         # デフォルトだと3階


m = markovchains.MarkovChains(order_num=2) # 2階マルコフ連鎖




                                                             14
実行例




? 2階と3階マルコフ連鎖の違い




                   15
markovchains の活用例



?   Twitter Bot を作成
?   yonobot (http://twitter.com/yonobot)
?   特定のユーザの発言を定期的にDBに保存
?   Reply に対して返事をする




                                           16
まとめ
? マルコフ連鎖で文章生成
? ライブラリがあるといろいろと便利
? Twitter Bot が簡単に実装できる

 github でソース公開してます
 markovchains
  http://github.com/yono/python-markovchains

 yonobot
  http://github.com/yono/py-yonobot
                                               17
Ad

Recommended

sphinx + blockdiag で始めるドキュメント生活 2011/05 yokohama.pm
sphinx + blockdiag で始めるドキュメント生活 2011/05 yokohama.pm
Takeshi Komiya
?
Sphinx で手軽に作るドキュメント
Sphinx で手軽に作るドキュメント
Go Yamada
?
Sphinx GO!!
Sphinx GO!!
Go Yamada
?
执笔中の笔测迟丑辞苍プロフェッショナルプログラミング第2版で蝉辫丑颈苍虫を使っている话
执笔中の笔测迟丑辞苍プロフェッショナルプログラミング第2版で蝉辫丑颈苍虫を使っている话
Takayuki Shimizukawa
?
Introduce for sphinx-users-jp
Introduce for sphinx-users-jp
Go Yamada
?
Firefox 3.1 In Depth (?)
Firefox 3.1 In Depth (?)
dynamis
?
Oktavia全文検索エンジン - SphinxCon JP 2014
Oktavia全文検索エンジン - SphinxCon JP 2014
Yoshiki Shibukawa
?
マークアッフ?言語の拡張 メリットとテ?メリット #hankumi
マークアッフ?言語の拡張 メリットとテ?メリット #hankumi
Takeshi Komiya
?
Db tech showcase2015 how to replicate between clusters
Db tech showcase2015 how to replicate between clusters
Hiroaki Kubota
?
Introduction to MongoDB
Introduction to MongoDB
moai kids
?
世界のSphinx事情 @ SphinxCon JP 2015
世界のSphinx事情 @ SphinxCon JP 2015
Takayuki Shimizukawa
?
Ruby24
Ruby24
Masahiro Tomita
?
Contao Open Source CMS / Contao 3.3に向けて
Contao Open Source CMS / Contao 3.3に向けて
Takahiro Kambe
?
本当のドキュメントと向き合えますか @ qpstudy 2011/04
本当のドキュメントと向き合えますか @ qpstudy 2011/04
Takeshi Komiya
?
惭谤耻产测の始め方
惭谤耻产测の始め方
Masaki Muranaka
?
惭别驳耻谤辞.谤产#3尝罢「搁耻产测入门书を书いてて得られた知见5选+3α」
惭别驳耻谤辞.谤产#3尝罢「搁耻产测入门书を书いてて得られた知见5选+3α」
Tsutomu Chikuba
?
ロボットシステム学2015年第7回
ロボットシステム学2015年第7回
Ryuichi Ueda
?
Case study to use MongoDB in middle-class SIer / (中規模) SIerだってMongoDBできたよ!
Case study to use MongoDB in middle-class SIer / (中規模) SIerだってMongoDBできたよ!
Naruhiko Ogasawara
?
Non blocking and asynchronous
Non blocking and asynchronous
Norio Kobota
?
Sphinx拡張 探訪 2014 #sphinxjp
Sphinx拡張 探訪 2014 #sphinxjp
Takeshi Komiya
?
Programming camp code reading
Programming camp code reading
Hiro Yoshioka
?
迟耻谤产辞濒颈苍办蝉攻略
迟耻谤产辞濒颈苍办蝉攻略
basicinc_dev
?
Sphinx ではじめるドキュメント生活 2013 #sphinxconjp
Sphinx ではじめるドキュメント生活 2013 #sphinxconjp
Takeshi Komiya
?
厂飞颈蹿迟から濒颈产耻惫を呼び出す罢滨笔厂
厂飞颈蹿迟から濒颈产耻惫を呼び出す罢滨笔厂
jugemjugemjugem
?
Node.js×mongo dbで3年間サービス運用してみた話
Node.js×mongo dbで3年間サービス運用してみた話
leverages_event
?
骋搁-颁滨罢搁鲍厂の绍介
骋搁-颁滨罢搁鲍厂の绍介
三七男 山本
?
JUS関西 Sphinxワークショップ@関西 Sphinx紹介
JUS関西 Sphinxワークショップ@関西 Sphinx紹介
Takayuki Shimizukawa
?
捗るリコメンドシステムの里事情(ハッカドール)
捗るリコメンドシステムの里事情(ハッカドール)
mosa siru
?

More Related Content

What's hot (20)

Db tech showcase2015 how to replicate between clusters
Db tech showcase2015 how to replicate between clusters
Hiroaki Kubota
?
Introduction to MongoDB
Introduction to MongoDB
moai kids
?
世界のSphinx事情 @ SphinxCon JP 2015
世界のSphinx事情 @ SphinxCon JP 2015
Takayuki Shimizukawa
?
Ruby24
Ruby24
Masahiro Tomita
?
Contao Open Source CMS / Contao 3.3に向けて
Contao Open Source CMS / Contao 3.3に向けて
Takahiro Kambe
?
本当のドキュメントと向き合えますか @ qpstudy 2011/04
本当のドキュメントと向き合えますか @ qpstudy 2011/04
Takeshi Komiya
?
惭谤耻产测の始め方
惭谤耻产测の始め方
Masaki Muranaka
?
惭别驳耻谤辞.谤产#3尝罢「搁耻产测入门书を书いてて得られた知见5选+3α」
惭别驳耻谤辞.谤产#3尝罢「搁耻产测入门书を书いてて得られた知见5选+3α」
Tsutomu Chikuba
?
ロボットシステム学2015年第7回
ロボットシステム学2015年第7回
Ryuichi Ueda
?
Case study to use MongoDB in middle-class SIer / (中規模) SIerだってMongoDBできたよ!
Case study to use MongoDB in middle-class SIer / (中規模) SIerだってMongoDBできたよ!
Naruhiko Ogasawara
?
Non blocking and asynchronous
Non blocking and asynchronous
Norio Kobota
?
Sphinx拡張 探訪 2014 #sphinxjp
Sphinx拡張 探訪 2014 #sphinxjp
Takeshi Komiya
?
Programming camp code reading
Programming camp code reading
Hiro Yoshioka
?
迟耻谤产辞濒颈苍办蝉攻略
迟耻谤产辞濒颈苍办蝉攻略
basicinc_dev
?
Sphinx ではじめるドキュメント生活 2013 #sphinxconjp
Sphinx ではじめるドキュメント生活 2013 #sphinxconjp
Takeshi Komiya
?
厂飞颈蹿迟から濒颈产耻惫を呼び出す罢滨笔厂
厂飞颈蹿迟から濒颈产耻惫を呼び出す罢滨笔厂
jugemjugemjugem
?
Node.js×mongo dbで3年間サービス運用してみた話
Node.js×mongo dbで3年間サービス運用してみた話
leverages_event
?
骋搁-颁滨罢搁鲍厂の绍介
骋搁-颁滨罢搁鲍厂の绍介
三七男 山本
?
JUS関西 Sphinxワークショップ@関西 Sphinx紹介
JUS関西 Sphinxワークショップ@関西 Sphinx紹介
Takayuki Shimizukawa
?
Db tech showcase2015 how to replicate between clusters
Db tech showcase2015 how to replicate between clusters
Hiroaki Kubota
?
Introduction to MongoDB
Introduction to MongoDB
moai kids
?
世界のSphinx事情 @ SphinxCon JP 2015
世界のSphinx事情 @ SphinxCon JP 2015
Takayuki Shimizukawa
?
Contao Open Source CMS / Contao 3.3に向けて
Contao Open Source CMS / Contao 3.3に向けて
Takahiro Kambe
?
本当のドキュメントと向き合えますか @ qpstudy 2011/04
本当のドキュメントと向き合えますか @ qpstudy 2011/04
Takeshi Komiya
?
惭谤耻产测の始め方
惭谤耻产测の始め方
Masaki Muranaka
?
惭别驳耻谤辞.谤产#3尝罢「搁耻产测入门书を书いてて得られた知见5选+3α」
惭别驳耻谤辞.谤产#3尝罢「搁耻产测入门书を书いてて得られた知见5选+3α」
Tsutomu Chikuba
?
ロボットシステム学2015年第7回
ロボットシステム学2015年第7回
Ryuichi Ueda
?
Case study to use MongoDB in middle-class SIer / (中規模) SIerだってMongoDBできたよ!
Case study to use MongoDB in middle-class SIer / (中規模) SIerだってMongoDBできたよ!
Naruhiko Ogasawara
?
Non blocking and asynchronous
Non blocking and asynchronous
Norio Kobota
?
Sphinx拡張 探訪 2014 #sphinxjp
Sphinx拡張 探訪 2014 #sphinxjp
Takeshi Komiya
?
Programming camp code reading
Programming camp code reading
Hiro Yoshioka
?
迟耻谤产辞濒颈苍办蝉攻略
迟耻谤产辞濒颈苍办蝉攻略
basicinc_dev
?
Sphinx ではじめるドキュメント生活 2013 #sphinxconjp
Sphinx ではじめるドキュメント生活 2013 #sphinxconjp
Takeshi Komiya
?
厂飞颈蹿迟から濒颈产耻惫を呼び出す罢滨笔厂
厂飞颈蹿迟から濒颈产耻惫を呼び出す罢滨笔厂
jugemjugemjugem
?
Node.js×mongo dbで3年間サービス運用してみた話
Node.js×mongo dbで3年間サービス運用してみた話
leverages_event
?
骋搁-颁滨罢搁鲍厂の绍介
骋搁-颁滨罢搁鲍厂の绍介
三七男 山本
?
JUS関西 Sphinxワークショップ@関西 Sphinx紹介
JUS関西 Sphinxワークショップ@関西 Sphinx紹介
Takayuki Shimizukawa
?

Similar to Javakuche yono (20)

捗るリコメンドシステムの里事情(ハッカドール)
捗るリコメンドシステムの里事情(ハッカドール)
mosa siru
?
Firefox 3.1 & MozTech
Firefox 3.1 & MozTech
dynamis
?
14対话产辞迟発表资料
14対话产辞迟発表资料
Keiichirou Miyamoto
?
Webフレームワークを作ってる話 #osakapy
Webフレームワークを作ってる話 #osakapy
Masashi Shibata
?
大规模ソーシャルゲームを支える技术~笔贬笔+惭测厂蚕尝を使った高负荷対策~
大规模ソーシャルゲームを支える技术~笔贬笔+惭测厂蚕尝を使った高负荷対策~
infinite_loop
?
Xcode4 project template (slide)
Xcode4 project template (slide)
Wataru Kimura
?
V6 Interpreter (Nagoya Geek Bar 2011-05-02)
V6 Interpreter (Nagoya Geek Bar 2011-05-02)
7shi
?
Web本文抽出 using crf
Web本文抽出 using crf
Shuyo Nakatani
?
最近のフロントエンドツールの绍介
最近のフロントエンドツールの绍介
Ryo Iinuma
?
20150228冲渋谷奥别产エンジニア朝会尝罢资料
20150228冲渋谷奥别产エンジニア朝会尝罢资料
慎平 仁藤
?
ソーシャルゲームにおけるMongoDB適用事例 - Animal Land
ソーシャルゲームにおけるMongoDB適用事例 - Animal Land
Masakazu Matsushita
?
[第2版]Python機械学習プログラミング 第8章
[第2版]Python機械学習プログラミング 第8章
Haruki Eguchi
?
俺のコードがどこでつかわれているのかわからない問題 あるいはマイナーOSSの生存戦略
俺のコードがどこでつかわれているのかわからない問題 あるいはマイナーOSSの生存戦略
Y Watanabe
?
Code4Lib 2010報告会?発表ダイジェスト
Code4Lib 2010報告会?発表ダイジェスト
Masao Takaku
?
MediaRecorder と WebM で、オレオレ Live Streaming
MediaRecorder と WebM で、オレオレ Live Streaming
mganeko
?
飞别产アプリケーションフレームワークの话
飞别产アプリケーションフレームワークの话
Yoshihiro Ura
?
滨苍蹿别谤.狈贰罢を使って尝顿础を実装してみた
滨苍蹿别谤.狈贰罢を使って尝顿础を実装してみた
正志 坪坂
?
Lombok ハンズオン
Lombok ハンズオン
Hiroto Yamakawa
?
捗るリコメンドシステムの里事情(ハッカドール)
捗るリコメンドシステムの里事情(ハッカドール)
mosa siru
?
Firefox 3.1 & MozTech
Firefox 3.1 & MozTech
dynamis
?
Webフレームワークを作ってる話 #osakapy
Webフレームワークを作ってる話 #osakapy
Masashi Shibata
?
大规模ソーシャルゲームを支える技术~笔贬笔+惭测厂蚕尝を使った高负荷対策~
大规模ソーシャルゲームを支える技术~笔贬笔+惭测厂蚕尝を使った高负荷対策~
infinite_loop
?
Xcode4 project template (slide)
Xcode4 project template (slide)
Wataru Kimura
?
V6 Interpreter (Nagoya Geek Bar 2011-05-02)
V6 Interpreter (Nagoya Geek Bar 2011-05-02)
7shi
?
Web本文抽出 using crf
Web本文抽出 using crf
Shuyo Nakatani
?
最近のフロントエンドツールの绍介
最近のフロントエンドツールの绍介
Ryo Iinuma
?
20150228冲渋谷奥别产エンジニア朝会尝罢资料
20150228冲渋谷奥别产エンジニア朝会尝罢资料
慎平 仁藤
?
ソーシャルゲームにおけるMongoDB適用事例 - Animal Land
ソーシャルゲームにおけるMongoDB適用事例 - Animal Land
Masakazu Matsushita
?
[第2版]Python機械学習プログラミング 第8章
[第2版]Python機械学習プログラミング 第8章
Haruki Eguchi
?
俺のコードがどこでつかわれているのかわからない問題 あるいはマイナーOSSの生存戦略
俺のコードがどこでつかわれているのかわからない問題 あるいはマイナーOSSの生存戦略
Y Watanabe
?
Code4Lib 2010報告会?発表ダイジェスト
Code4Lib 2010報告会?発表ダイジェスト
Masao Takaku
?
MediaRecorder と WebM で、オレオレ Live Streaming
MediaRecorder と WebM で、オレオレ Live Streaming
mganeko
?
飞别产アプリケーションフレームワークの话
飞别产アプリケーションフレームワークの话
Yoshihiro Ura
?
滨苍蹿别谤.狈贰罢を使って尝顿础を実装してみた
滨苍蹿别谤.狈贰罢を使って尝顿础を実装してみた
正志 坪坂
?
Ad

Recently uploaded (7)

础滨技术共有会2025-06-05冲顿别别辫搁别蝉别补谤肠丑の理解と実践.辫诲蹿
础滨技术共有会2025-06-05冲顿别别辫搁别蝉别补谤肠丑の理解と実践.辫诲蹿
Takuma Oda
?
Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
iPride Co., Ltd.
?
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
フォーガンシー
?
Protect Your IoT Data with UbiBot's Private Platform.pptx
Protect Your IoT Data with UbiBot's Private Platform.pptx
ユビボット 株式会社
?
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
iPride Co., Ltd.
?
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
NTT DATA Technology & Innovation
?
色について.pptx .
色について.pptx .
iPride Co., Ltd.
?
础滨技术共有会2025-06-05冲顿别别辫搁别蝉别补谤肠丑の理解と実践.辫诲蹿
础滨技术共有会2025-06-05冲顿别别辫搁别蝉别补谤肠丑の理解と実践.辫诲蹿
Takuma Oda
?
Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
Vibe Codingを始めよう ?Cursorを例に、ノーコードでのプログラミング体験?
iPride Co., Ltd.
?
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
Forguncy 10 製品概要資料 - ノーコードWebアプリ開発プラットフォーム
フォーガンシー
?
Protect Your IoT Data with UbiBot's Private Platform.pptx
Protect Your IoT Data with UbiBot's Private Platform.pptx
ユビボット 株式会社
?
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
勉強会_ターミナルコマント?入力迅速化_20250620. pptx. .
iPride Co., Ltd.
?
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
PGConf.dev 2025 参加レポート (JPUG総会併設セミナー2025 発表資料)
NTT DATA Technology & Innovation
?
Ad

Javakuche yono