Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
マルコフ連鎖でツイート生成
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
naosuke
February 08, 2017
Programming
1.9k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
マルコフ連鎖でツイート生成
大学院の授業の発表資料です。
マルコフ連鎖を使って、自分っぽいツイートを作るプログラムを作りました
naosuke
February 08, 2017
More Decks by naosuke
See All by naosuke
クラウドサービスのウラオモテ / Outside and Inside of Cloud Services
hanasuke
0
1.7k
この素晴らしい新入社員とペアプロを! / Pair-programming with wonderful newcomer!
hanasuke
2
2.2k
学生サークルとOSCのつながりとこれから
hanasuke
0
430
TouchBarを触りたかった話
hanasuke
2
1.8k
ふりかえりを実践した話
hanasuke
0
360
Other Decks in Programming
See All in Programming
Agents on Rails - Rails at Scale 2026
irinanazarova
0
560
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Kaigi on Rails 2026, Tokyo, Japan
marcoroth
2
220
ActionController meets Protocol Buffers
sorah
0
520
TechTown - Creating Composable Callables in Contemporary C++
rollbear
0
130
設計次第でAIコードの読む量は減らせる / designing-for-code-reading
minodriven
35
17k
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
5
5.2k
contenteditable と日本語入力に向き合う
colorful12
0
200
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
190
Jetpack Compose Mechanisms
skydoves
3
820
JIS keyboard support in Omarchy
lef237
0
110
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
28
32k
なぜCTOを降りてFDEを選んだのか?〜なぜプロダクト企業がFDEで顧客の現場に踏み込むのか〜
gonta
1
210
Featured
See All Featured
How to Ace a Technical Interview
jacobian
280
24k
Being A Developer After 40
akosma
92
590k
Navigating Team Friction
lara
192
16k
What the history of the web can teach us about the future of AI
inesmontani
PRO
2
740
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
450
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
410
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
How GitHub (no longer) Works
holman
316
150k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
270
Paper Plane (Part 1)
katiecoart
PRO
2
12k
Practical Orchestrator
shlominoach
192
12k
Transcript
マルコフ連鎖を利⽤した ツイート⽣成スクリプトを作った
もくじ 1. つくったものの概要 2. 形態素解析とマルコフ連鎖 3. 実際の対象データの情報 4. 実験結果と⽐較 5.
まとめ
1-1 なにをつくったか • ⾃⾝のツイートから⽂字列を⽣成しツイートする ”なおすけくんbot” • ”しゅうまいくん”の⾃分のツイート版みたいな • いい感じにツイートを分析して、 いい感じの⽇本語の⽂章をツイート
• ツイート分析に形態素解析、 ツイート⽣成にマルコフ連鎖を利⽤
1-2 ツイート解析の概要 ⾃分の過去ツイート達 MeCabによる 形態素解析 なおすけ辞書の⽣成
1-3 ツイート⽣成の概要 マルコフ連鎖による ⽂章⽣成 なおすけ辞書 ツイート
2-1 形態素解析の概要 • 形態素解析とは • ⼊⼒⽂を形態素の並びに分解し、 品詞の同定や原形・活⽤形の判定を⾏うこと • 形態素: 意味を持つ最⼩の⾔語単位
お待ち / し / て / おり / ます / 。 • 著名な形態素解析器 • JUMAN : 京都⼤ ⿊橋研が開発 • 茶筌 (ChaSen) : 奈良先端⼤ 松本研が開発 • 和布蕪 (MeCab) : 詳細は後述 • KAKASI : 漢字→ひらがな変換プログラム 分かち書き機能がある
2-2 形態素解析器 MeCab • 構⽂解析器 MeCabの概要 • Yet Another Part-of-Speech
and Morphological Analyzer • ⽇本語を対象とした形態素解析器 • 京都⼤とNTTコミュニケーションが共同研究で開発 • 過去の形態素解析器と⽐較してかなり⾼性能 • 条件付き確率場(CRF)に基づく⾼い解析精度 • ChaSen や KAKASI に⽐べ⾼速 • 利⽤場所 • Mac OS X の Spotlight(OSの検索機能) • iOS の⽇本語⼊⼒エンジン • Mac OS Xの⽇本語⼊⼒エンジン (?)
2-3 マルコフ連鎖 • マルコフ過程 • マルコフ性をもつ確率過程 • 未来の挙動が現在の状態だけで決定する確率過程 ↑こんなの↑ •
マルコフ連鎖 • マルコフ過程のうち、取りうる状態が離散的なもの • 割と重要な概念らしい • ⾳声認識とかGoogleのPageRankで利⽤
3-1 実装関係 • ⾔語: Ruby 2.4 • 形態素解析: MeCab •
辞書: mecab-ipadic-Neologd (最新語が多く含まれる辞書) • Rubyライブラリ • natto (MeCabのRuby⽤のバインディング) • twitter (Twitter関連のいろいろ) • Kusabi:マルコフ連鎖によるテキストジェネレータ (使ってない) • ツイートログ • Twilog.org からダウンロードできるCSV “ID”, “ツイート⽇時”, “ツイート⽂⾯” • この形式さえあれば他⼈の辞書の⽣成も可能 https://github.com/hanasuke/advmath
3-2 Tweet群の前処理 • filter.rb • ⾃⾝のつぶやきでないものを除外 • RT • shindanmaker,
togetterなどのボタンからのツイート系 • swarmapp, はてブなどのアプリ連携のツイート系 • 邪魔な⽂字列を排除 • ”@ユーザ名” • http://~~のURL • “#なんとか”のようなハッシュタグ
3-3 ツイートの分析となおすけ辞書の作成 • ツイート⽂字列を形態素解析し、配列に格納 私の名前は中野です。→ [“私”, “の”, “名前”, ”は”, ”中野”,
”で す”, ”。”] • マルコフ連鎖のためのダミー⽂字列を挿⼊ [“_BEGIN_”, “私”, “の”, “名前”, ”は”, ”中野”, ”です”, ”。”, “_END_”] • N階マルコフモデルを作成する • N個のネストしたハッシュを作成 • ハッシュが存在すれば、要素としての配列に挿⼊ hash[“_BEGIN_”][“私”] = [‘の’, ‘は’, ‘が’, ‘と’, ‘で’,...] hash[“私”][“の”] = [‘名前’, ‘好き’, ‘嫁’, ‘名前’, ‘彼⼥’,...] : :
3-4 なおすけ辞書を基としたツイート機能 • ソースコードを⾒せながら説明します
4-1 元ツイートのデータ 期間 2012/04/20〜2017.02.01 (1749⽇) ツイート数 約21万 総⽂字数 約398.5万 約18⽂字/ツイート
2012年 2017年
4-2 Botの紹介 • てすとくん @naosuke_test • #naosuke_markov{N}というハッシュタグをつけて、 N階の連鎖によるツイートをツイート • #naosuke_markov3については途中までバグってた
• http://twilog.org/naosuke_test をみながらこの先解説をします
4-3 4階マルコフモデルによるツイート例 • http://twilog.org/naosuke_test/hashtags-naosuke_markov4
4-4 3階マルコフモデルによるツイート例 • http://twilog.org/naosuke_test/hashtags-naosuke_markov3
5-1 まとめ • ⾃然⾔語処理とマルコフ連鎖 • 形態素解析とマルコフ連鎖によるツイートbotの作成 • 形態素解析器としてMeCabを利⽤ • 辞書として、最新語が多く含まれたものを採⽤
• ⾼階マルコフモデルによる⽣成⽂章の違い • 2階、3階、4階、5階マルコフ連鎖で⽂章を⽣成 • 2階よりも3階以上のほうが多少マシな⽂章が⽣成されている • 4階以上による差異はあまりない ⇒1ツイートに含まれる形態素が少なすぎるせい? • マイクロブログ的な使い⽅をしてれば、差異が出るのかも
5-2 今後の課題と感想 • 今後の課題 • リプライ機能 →リプライの中の重要なキーワードから⽣成する感じ? • 機械学習/ニューラルネットワークによるBotの作成 →Hubotとの会話機能とか
• 感想 • 最近は⾃然⾔語処理のライブラリが豊富で⼿軽に遊べる • “書き⾔葉”ではなく“話し⾔葉”は解析が難しい ⇒安藤研の⼈たち頑張って欲しい • より⾃然に⾒える⽂章の作成は難しい • GoogleとかMicrosoft、Appleの⾔語処理系やばい
参考⽂献 • MeCab: Yet Another Part-of-Speech and Morphological Analyzer http://taku910.github.io/mecab/
• マルコフ連鎖の基本とコルモゴロフ⽅程式 http://mathtrain.jp/markovchain • buruzaemon/natto: A Tasty Ruby Binding with MeCab https://github.com/buruzaemon/natto • takuti/kusari: Japanese random sentence generator based on Markov chain https://github.com/takuti/kusari