aisatsu suruto tomodachiga popopoponnto hueruyo
TRANSCRIPT
1
あいさつ学習すると友達が
ぽぽぽぽーんと増えるよ!2011/07/16 しょうゆ(twitter,hatena:showyou)
2
自己紹介
職業:データマイニングエンジニア趣味:人工無脳づくり
名前:しょうゆ(@showyou)
3
自己紹介
名前:しょうゆ(@showyou)
職業:データマイニングエンジニア趣味:人工無脳づくり
今日もこの話@ha_ma @yuka_
4
発表の注意点●いわゆる「やってみた」系です。理論的に高度なものはつかってません。
●高度な話が聞きたければTokyoNLPにも参加しましょう!ACL読みとかもあるよ!
5
最近抱える悩み●ランダム発言→ほんと適当。つまんない
●固定の挨拶→パターン少ない。飽きる
●挨拶を他人のやりとりからパク学習できないか
6
図で言うと
愛してるよ!
私も!じー・・
7
図で言うと
愛してるよ!
私も!えっ!!
in out愛してる 私も
8
一番簡単な方法●あいさつがあった発言(あいさつ元発言)と全く同じものが来たら、過去に覚えた文章を返す● 実装はとても楽● だけど文が全く一致することはない
– 語尾が変わるだけでも一致しない
9
ちょっと凝った方法●あいさつ元発言と似たもの→過去に覚えたのと似た言葉を返す・・「似た」って何だ?編集距離が近いとか?
10
以下の方法を取った●あいさつ元発言と似たもの=単語に分解して単語の出現頻度が近い物。単語の出現順は考慮しない
●さらに手抜き「入力文章を単語に分ける→それぞれの単語の応答が一番出そうな返信語を持つ文」を返事とするようにした
11
イメージ●おはようございます。今日は暑いですね
12
イメージ●おはようございます。今日は暑いですね
助詞などありふれた単語はカット
13
イメージ●おはようございます。今日は暑いですね文章 返信文章おはようございます。今日も一日頑張りましょう。
おはようございます
おはよう。今日も電車が止まった
おはよう。お気の毒に。
・・・単語に分割集計
14
イメージ●おはようございます。今日は暑いですね順位 返信語 確率1 おはよう 0.8
2 おはよー 0.5
3 お気の毒 0.5
順位 返信語 確率1 今日 0.5
2 明日 0.1
3
順位 返信語 確率1 溶ける 0.5
2 水分 0.1
3
「おはよう」(一番有意な単語/属性を推定)
(今回はまだ単語一つのみ)
15
イメージ●おはようございます。今日は暑いですね
● {おはよう}を含む文章を取ってくる
16
イメージ●おはようございます。今日は暑いですね
● {おはよう,}を含む文章を取ってくる
●「おはよう、今日も溶けるよ~」
17
実装●大量のTweetを収集●中からin_reply_toを含むTweet(応答Tweets)を抽出
● (Tweetから名詞を抜き出す● {応答元名詞:応答先名詞}の組みわせで共起回数を集計)
18
デモ● Python + MySQL + MeCab●学習データ
● Tweets 7000万,75GB(thx @penguinana_)
● 応答Tweets 740万,15GB
19
Future work
●現状応答の都度、適応する文章をlike検索しているためとても重い共起テーブル入れます。。↓返信元単語 返信先単語 回数帰宅 ただいま 125
起きた おはよう 30
20
Future work
●返答精度向上● モデル改良
– 返答元の単語群から一番尤度の高い返答語群を選べないか?
● 大量の学習データ– 現状
● MySQL + TokyoCabinet– Hadoop等も視野
21
Future work
●会話を行ってる人の感情をモデル化できないか
●例:HMMを使って状態を推測してから発言● ツン状態→「ふん、あなたの入り込む余地はなくてよ」
● デレ状態→「や、あなたと離れ離れになるなんていや・・」
22
●HMMを使って状態を推測してから発言
おはよう やあ、 またねー またねー
A
B
「朝の挨拶」の状態 「さよなら」の状態
発話 発話
23
課題● Penguinana_様のデータに
in_reply_toがなかった● tweetのidから元tweetを取得し、そこから
in_reply_to抽出● API制限(IP制限)
● Mecabの品詞判定ミス● (とかが名詞と判定される● このあたりは仕掛けでなんとかできそう
24
まとめ●「応答を自動で学習する」ことを力づくで行った
●何も考えなくても形態素解析と集計と抽出だけでほとんど出来ている● 今後はちゃんとモデルとか数式とか考えていきたいけど・・