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