24
1 あいさつ学習すると 友達が ぽぽぽぽーんと増えるよ! 2011/07/16 しょうゆ (twitter,hatena:showyou)

aisatsu suruto tomodachiga popopoponnto hueruyo

Embed Size (px)

Citation preview

Page 1: aisatsu suruto tomodachiga popopoponnto hueruyo

1

あいさつ学習すると友達が

ぽぽぽぽーんと増えるよ!2011/07/16 しょうゆ(twitter,hatena:showyou)

Page 2: aisatsu suruto tomodachiga popopoponnto hueruyo

2

自己紹介

職業:データマイニングエンジニア趣味:人工無脳づくり

名前:しょうゆ(@showyou)

Page 3: aisatsu suruto tomodachiga popopoponnto hueruyo

3

自己紹介

名前:しょうゆ(@showyou)

職業:データマイニングエンジニア趣味:人工無脳づくり

今日もこの話@ha_ma @yuka_

Page 4: aisatsu suruto tomodachiga popopoponnto hueruyo

4

発表の注意点●いわゆる「やってみた」系です。理論的に高度なものはつかってません。

●高度な話が聞きたければTokyoNLPにも参加しましょう!ACL読みとかもあるよ!

Page 5: aisatsu suruto tomodachiga popopoponnto hueruyo

5

最近抱える悩み●ランダム発言→ほんと適当。つまんない

●固定の挨拶→パターン少ない。飽きる

●挨拶を他人のやりとりからパク学習できないか

Page 6: aisatsu suruto tomodachiga popopoponnto hueruyo

6

図で言うと

愛してるよ!

私も!じー・・

Page 7: aisatsu suruto tomodachiga popopoponnto hueruyo

7

図で言うと

愛してるよ!

私も!えっ!!

in out愛してる 私も

Page 8: aisatsu suruto tomodachiga popopoponnto hueruyo

8

一番簡単な方法●あいさつがあった発言(あいさつ元発言)と全く同じものが来たら、過去に覚えた文章を返す● 実装はとても楽● だけど文が全く一致することはない

– 語尾が変わるだけでも一致しない

Page 9: aisatsu suruto tomodachiga popopoponnto hueruyo

9

ちょっと凝った方法●あいさつ元発言と似たもの→過去に覚えたのと似た言葉を返す・・「似た」って何だ?編集距離が近いとか?

Page 10: aisatsu suruto tomodachiga popopoponnto hueruyo

10

以下の方法を取った●あいさつ元発言と似たもの=単語に分解して単語の出現頻度が近い物。単語の出現順は考慮しない

●さらに手抜き「入力文章を単語に分ける→それぞれの単語の応答が一番出そうな返信語を持つ文」を返事とするようにした

Page 11: aisatsu suruto tomodachiga popopoponnto hueruyo

11

イメージ●おはようございます。今日は暑いですね

Page 12: aisatsu suruto tomodachiga popopoponnto hueruyo

12

イメージ●おはようございます。今日は暑いですね

助詞などありふれた単語はカット

Page 13: aisatsu suruto tomodachiga popopoponnto hueruyo

13

イメージ●おはようございます。今日は暑いですね文章 返信文章おはようございます。今日も一日頑張りましょう。

おはようございます

おはよう。今日も電車が止まった

おはよう。お気の毒に。

・・・単語に分割集計

Page 14: aisatsu suruto tomodachiga popopoponnto hueruyo

14

イメージ●おはようございます。今日は暑いですね順位 返信語 確率1 おはよう 0.8

2 おはよー 0.5

3 お気の毒 0.5

順位 返信語 確率1 今日 0.5

2 明日 0.1

3

順位 返信語 確率1 溶ける 0.5

2 水分 0.1

3

「おはよう」(一番有意な単語/属性を推定)

(今回はまだ単語一つのみ)

Page 15: aisatsu suruto tomodachiga popopoponnto hueruyo

15

イメージ●おはようございます。今日は暑いですね

● {おはよう}を含む文章を取ってくる

Page 16: aisatsu suruto tomodachiga popopoponnto hueruyo

16

イメージ●おはようございます。今日は暑いですね

● {おはよう,}を含む文章を取ってくる

●「おはよう、今日も溶けるよ~」

Page 17: aisatsu suruto tomodachiga popopoponnto hueruyo

17

実装●大量のTweetを収集●中からin_reply_toを含むTweet(応答Tweets)を抽出

● (Tweetから名詞を抜き出す● {応答元名詞:応答先名詞}の組みわせで共起回数を集計)

Page 18: aisatsu suruto tomodachiga popopoponnto hueruyo

18

デモ● Python + MySQL + MeCab●学習データ

● Tweets 7000万,75GB(thx @penguinana_)

● 応答Tweets 740万,15GB

Page 19: aisatsu suruto tomodachiga popopoponnto hueruyo

19

Future work

●現状応答の都度、適応する文章をlike検索しているためとても重い共起テーブル入れます。。↓返信元単語 返信先単語 回数帰宅 ただいま 125

起きた おはよう 30

Page 20: aisatsu suruto tomodachiga popopoponnto hueruyo

20

Future work

●返答精度向上● モデル改良

– 返答元の単語群から一番尤度の高い返答語群を選べないか?

● 大量の学習データ– 現状

● MySQL + TokyoCabinet– Hadoop等も視野

Page 21: aisatsu suruto tomodachiga popopoponnto hueruyo

21

Future work

●会話を行ってる人の感情をモデル化できないか

●例:HMMを使って状態を推測してから発言● ツン状態→「ふん、あなたの入り込む余地はなくてよ」

● デレ状態→「や、あなたと離れ離れになるなんていや・・」

Page 22: aisatsu suruto tomodachiga popopoponnto hueruyo

22

●HMMを使って状態を推測してから発言

おはよう やあ、 またねー またねー

A

B

「朝の挨拶」の状態 「さよなら」の状態

発話 発話

Page 23: aisatsu suruto tomodachiga popopoponnto hueruyo

23

課題● Penguinana_様のデータに

in_reply_toがなかった● tweetのidから元tweetを取得し、そこから

in_reply_to抽出● API制限(IP制限)

● Mecabの品詞判定ミス● (とかが名詞と判定される● このあたりは仕掛けでなんとかできそう

Page 24: aisatsu suruto tomodachiga popopoponnto hueruyo

24

まとめ●「応答を自動で学習する」ことを力づくで行った

●何も考えなくても形態素解析と集計と抽出だけでほとんど出来ている● 今後はちゃんとモデルとか数式とか考えていきたいけど・・