言語モデルで(ryを解く

以前、(ryを分析したけど、そのときに気になっていた言語モデルで(ryが推定できるかを少し試してみた。
(ry - skozawa's blog
結果としては思っていたよりできなかった。

問題設定

基本的には穴埋め問題で、

  • まぁ、冗談はさておき作ったら報告よr(ry

の場合、

  • まぁ、冗談はさておき作ったら報告よ()

の()を埋める問題。

普通の穴埋め問題と異なるのは、以下の2点

  • 埋める単位が一定でない
    • 文字、単語、文節など、さまざまな可能性がある
  • ヒントがある
    • 上の例の場合、よr(ryとなっており、(ryにはら行から始まる文字列が入ることがわかる

アプローチ

nグラム言語モデルを使って穴埋め問題を解く。
「冗談はさておき作ったら報告よ」の次に現れやすい文字列/単語列を言語モデルを使って取得する

言語モデルの作成

2014年1月~3月のツイートの中から(ryを除くツイートを使って言語モデルを作る。
MeCab+ipadicで形態素解析し、言語モデルの作成にはkenlmを使った。
N=5で作成し、できたarpaファイルは44Gあった。でかい...

(ryの推定

言語モデルを使って(ryを推定する。

  1. (ryを含む文を入力
    • ex.) まぁ、冗談はさておき作ったら報告よr(ry
  2. 形態素解析
    • ex.) まぁ/、/冗談/は/さておき/作っ/たら/報告/よ/r(ry
  3. (ry (=w_{i})より左の2~5形態素(w_{i-5}, w_{i-4}, w_{i-3}, w_{i-2})を取得
    • w_{i-1} は (ry の単語の一部の可能性があるため、利用せずに推定する
    • ex.) [ w_{i-5}, w_{i-4}, w_{i-3}, w_{i-2} ] = [さておき, 作っ, たら, 報告]
  4. 言語モデルを使ってw_{i-1} を求める
    • w_{i-5}, w_{i-4}, w_{i-3}, w_{i-2}で始まる5gram探す、なければ、w_{i-4}, w_{i-3}, w_{i-2}で始まる4gramを探す、...
    • 言語モデルで推定した単語のうち、先頭がw_{i-1}(よ)で始まる最も高い確率の単語を取得
  5. 言語モデルを使ってw_{i} 移行を4と同様に求める

実験

2014年1月~3月のツイートの中から(ryを含むツイートをランダムで100ツイート抽出して、手法を適用してみた。

正しく解けたのは、100ツイート中34ツイート。
比較的簡単なものはちゃんとできているという印象

  • とりあえず二日酔いで気持ちわ(ry...
    • -> とりあえず二日酔いで気持ちわるい...
  • レヴナンツトールだと何度言(ry
    • -> レヴナンツトールだと何度言えば
  • そうなんですよね。先日Twitterで見かけて知りました。JRのEG-20はやはり画面の位置が(ryですね(笑)
    • -> そうなんですよね。先日Twitterで見かけて知りました。JRのEG-20はやはり画面の位置がおかしいですね(笑)


解けなかったものはコンテキストを考慮しないといけないもの知識が必要なものがあって、そもそも自分でも何が入るかわからないものも結構あった。

  • ところで赤坂って(ry
  • ゲスト参加で(ry
  • 水に濡れる夢を見ると(ry

おしい感じのものもいくつかあった。3つめの形態素解析がうまくいかなかったので、おかしくなった。

  • そなのかって初七日に似t(ry
    • -> そなのかって初七日に似た
  • その時は私も念力送りつつ今どの辺ですかと聞(ry
    • -> その時は私も念力送りつつ今どの辺ですかと聞かれている
  • 何を放送するか、放送しないかはオレたちの勝手だ(ドヤァ)ですねわか(ry
    • -> 何を放送するか、放送しないかはオレたちの勝手だ(ドヤァ)ですねわかかりました


あと、言語モデルで解くよりも、文中の表現を利用したほうがよいものもあって、以下の例だと、言語モデルで解くと「証明」になってしまったけど、実際には「書け」と文中に出てきているので、そういうものも考慮しないといけないみたい。

  • 表彰のやつが、流行語が流行る理由について認知科学的に...で、プロダクションシステムは身近なものを挙げて書けで、食は身の回りのものからなんか挙げて認知科学的に(ryじゃなかったかしら

まとめ

(ryを言語モデルで解いてみた。5、6割解けるだろうと思ってたけど、思ってたより難しかった。
手法はまだ雑なので、もう少し解けそうだけど、そもそも自分でも分からないものが結構あった。
あと、単語Ngram使ったけど、形態素解析失敗することを考えると、文字Ngramのほうが良かったのかもしれない。

社内輪読会で「Topical Keyphrase Extraction from Twitter」を紹介した

会社で最近始まった論文の輪講で担当だったので、発表をした。

論文はできるだけ自分の分野のトップカンファレンスから選ぶということだったので、自然言語処理の国際会議のACLから論文を選んで紹介した。
今回紹介したのは、少し古いけど、ACL2011からTopical Keyphrase Extraction from Twitter
参加してる人はそれぞれ分野が違うので、どの部分をどの程度説明すればいいかが難しい。

内容

内容はTwitterからトピックのキーフレーズを抽出する手法の提案で、提案は主に以下の2点

  1. Context-sensitive Topical PageRank によるキーワードスコアリング
  2. relevanceとinterestingnessを用いたキーフレーズスコアリング

紹介したものを少し修正したものをアップした。


感想

1つ目はスコアリングの際にトピックを考慮することにより、PageRankのスコアリングの性能が向上するというもので、納得感がある。2つ目は少し微妙でPageRankのスコアではなく、別の指標を用いているけど、スコアの和をとっていたものを積にしたということによる性能向上が大きそうで、relevanceという新しい指標を利用することがどの程度効果があったのかがいまいちよくわからなかった。


それにしても、論文紹介とかすごい久しぶりにしたのであまりうまくできた気がしない。

大阪PRML読書会#6に参加した

大阪PRML読書会#6 - 大阪PRML読書会 | Doorkeeper に参加してきた

PRML読みたいと思って買ってはいたものの、完全に積読状態で、さすがに一人で読むのはつらいなーというのもあっていい機会があればと思ってたところで、読書会を見つけて、ちょうど2章からとタイミング的にもよさそうだったので、参加してみた。

パターン認識と機械学習 上

パターン認識と機械学習 上

初めて読書会という形式のものに参加した。輪講みたいに講義みたいな形式かと思っていたけど、少し違った。担当の人が分かりにくいところを補助しながら本を読んでいくというものだった。

今回は二項分布、ディリクレ分布あたりのところを読んだ。やっぱり一人でこれを読むのはつらいので行ってみてよかったなと感じる一方で、線形代数の知識忘れすぎていてやばいなーという感じだった。
たぶんこういう機会でもないと読みそうにないので、ある程度強制的にでも読めるのは助かる。

最近、社内でも論文の輪読会が始まって論文を読む機会ができたので楽しみだけど、とりあえず、来週担当なので、論文読んで資料作らないとなーと思いつつ、ぼぉーとしてる。

(ry

(ry という表現がなぜか気になったので、分析してみた

(ryとは (イカリャクとは) [単語記事] - ニコニコ大百科とは

(ryとは『以下略』を意味するネットスラングであ(ry

由来は、『(略)』とタイピングする際に、ローマ字で(ryaku)とする表記かr(ry
つまりこの言葉は略の略で、「わざわざ全部言わなくても(ry」というメッセージが(ry
転じて「(ry」と(ry 
使用する箇所としては、わざわざ言うまでもない・言いにくいこt(ry
しかし、使いすぎるとめいわk(ry
なので、用法容量を(ry

個人的にはまったく使わない表現だけど、言語処理するにはちょっとやっかいな表現。言いにくいことを書くときに使うので、著者の心理を表していることが多くておもしろそう。

データ

特に使う予定もなく適当に収集していたツイートデータを利用。2014年1月~3月のツイートの中から (ry を含む9921ツイート(RT除く)を使った。
(ry を含むツイートは全ツイートの約0.016%だった。10000ツイートに1ツイート含まれてるくらい。数としてはそんなに多くないのかな、どうだろ。

意味

単なる略として使われているのか、言いにくいことを書く場合に使われるのか。
ざっと見た感じだと、単なる略として使われてるケースはあまり多くなくて、言いにくいことを略すケースが多かった。基本的には否定的な表現をぼかす(ぼかせてないけど)ために使われていた。

なになになになになに((ry
「タイガーのマグカップがーー」「バーナビーのマグカップがーー」「タイガーのマグ(ry」「バーナビーの(ry」
  • 言いにくいこと
正直、向こうは気使わなきゃいけないからめんどi(((ry
中二病にしか見えな(ry
文中のどこで使われるか

「以下略」という意味で使われるので、基本的に文末で使われることが多く、10055の(ryのうち、9265は文末相当の場所に出現していた(文末判定、雑なのでもう少し文末多いと思う)。
ほとんど文末だけど、それなりに文中にでてくるものがある。あと、文中に出てくるものは略というより固有表現などの伏字として使われていることも多くて面白い。

まぁ、冗談はさておき作ったら報告よr(ry
iPhoneのカメラが最高だって何度言えば(ry
全国民の票とらないとまず世界が認める(ryなんてわからないしね〜
やはり、最後に選手を出迎えてたハ(ryは社長だったか。
え、今日部活ないとかきいてn(ry駅まで来ちゃったしwwwwww
単位

(ry はどういう単位(文、文節、形態素など)で使われているか。
文単位はほとんどなくて、他は色々。というか、形態素解析できないから、統計とれない(「(ry」を辞書登録すればある程度できる?)
文節単位、形態素単位で略されていることが多いかと思ったけど、もっと細かく(ryが使われていて、「t(ry」とか、略すより長くなっているものもあるので、単なる略ではなく、言いにくさみたいなのが考慮されて使われているんだろう

彼女と京都で着物デートして、沖縄でダイビングしよう。(ry
  • 文節
過度なスパム報告は運営が(ry
仕事の効率が高いかというと (ry
最悪近くの公衆電話から持ってく(ry
忘れてたわけじゃ(ry
つまんない妄想ばっかしてないで荷造りしなきゃ……めんどく(ry
(ちょっと歌詞間違えt(ry
つまんn(ry
ngram

とりあえず、(ryの前の文字Ngramをとってみた。文末で使われていそうということがわかるくらい?

1 頻度 2 頻度 3 頻度 4 頻度
1 が(ry 487 って(ry 122 ...(ry 59 てくださ(ry 32
2 t(ry 356 から(ry 100 くださ(ry 44 ああああ(ry 29
3 は(ry 322 ..(ry 64 あああ(ry 30 と思うが(ry 26
4 て(ry 316 じゃ(ry 62 思うが(ry 26 てくだs(ry 22
5 な(ry 307 っt(ry 56 くだs(ry 25 んどくs(ry 14
6 に(ry 304 しt(ry 48 ったら(ry 24 となので(ry 12
7 …(ry 285 たら(ry 48 なので(ry 23 …つきあ(ry 11
8 n(ry 276 ださ(ry 45 じゃな(ry 22 まとめて(ry 11
9 s(ry 275 して(ry 44 ・・・(ry 21 んどくさ(ry 10
10 k(ry 275 でも(ry 44 るから(ry 20 うううう(ry 10
まとめ

(ry という表現、おもしろいなーと思ったので、簡単に分析してみた。
基本的に文末で使われて、単なる略というよりも言いにくいことをぼかすために使われるという感じだった。一部伏字として使われているのが興味深い。
言語処理タスクとして、言語モデルとかを使って(ryを補完できるのか、(ry部分が肯定か否定かを判定できるのかあたりが気になるかな。

「ヤバい統計学」を読んだ

「ヤバい統計学」を読んだ

全5章で各章に2つのエピソードとともに統計的思考について書かれている。

  1. ファストパスと交通渋滞
  2. ホウレン草とクレジットカード
  3. 大学入試とハリケーン保険
  4. ドーピング検査とテロ対策
  5. 飛行機事故と宝くじ

まとめるのが面倒なので面白いと思った1章についてだけ書く。


1章が交通渋滞とディズニーの待ち時間について書いてあった。統計的な思考として、平均ではなく偏差に着目すべきという話。平均でならしてしまうと本来の重要な部分が見辛くなるので、偏差、分散をみることが必要ということで、確かにと思った。
それと、面白かったのが以下のあたりの実際の待ち時間と感覚的な待ち時間は異なるという話。

学者も賛同しているように、数学的な問題やエンジニアリングの難問をはるかに超えている。
人間と心理学と感覚の問題なのだ。
その基本原理は―感覚的な待ち時間と実際の待ち時間は同じではない―は、数多くの研究で実証されている。
たとえば、エレベーターホールに鏡を設置すると、待ち時間の感覚がにぶる。
鏡に映った自分の姿をみている時間は、待ち時間に加えないという傾向があるからだ。

交通渋滞の待ち時間の話でランプメータリングという手法を使うことで、実際の待ち時間は減っているものの、感覚的な待ち時間が増えたからクレームが来たということだった。ディズニーではアトラクションの待っているときに、ストリートパフォーマンスなど、さまざまな手段で感覚的な待ち時間が短くなる工夫をしているというもの。


基本的に統計にまつわる話が書かれていて参考になるのだけど、個人的にはどちらかというと統計を取っているだけでは見逃してしまう可能性のある待ち時間の話は面白かった。


ヤバい統計学

ヤバい統計学

  • 作者: カイザー・ファング,Kaiser Fung,矢羽野 薫
  • 出版社/メーカー: 阪急コミュニケーションズ
  • 発売日: 2011/02/19
  • メディア: 単行本
  • 購入: 11人 クリック: 93回
  • この商品を含むブログ (24件) を見る

言語処理学会に参加しました

札幌であった言語処理学会第20回年次大会に参加してきました
1年ぶりの学会参加。


今年は3年ぶり?くらいの発表もしてきました。
発表内容はComainuをリリースしました - skozawa's blog
もう論文も公開されてる http://www.anlp.jp/proceedings/annual_meeting/2014/pdf_dir/P6-2.pdf


発表のとき、Comainuに興味あるとすごいテンション高く言ってくれる人がいて、なんでそんなにテンション高いんだろうと思っていたけど、自分の研究に使いたかったようで、発表の次の日には早速使われていて勢いある感じだった。とりあえずちゃんと使えていそうで安心した。
欅コーパスで利用しようとしてるみたいだけど、HPにはほとんど情報ない感じだったので、今度ちゃんと論文読んでみよう

発表を聞いた中で一番気になったのは

小文字化や長音記号(おぃしーぃ→おいしい)などを正規化したものも考慮して形態素解析している。実際にTwitterとかブログとか解析する際に重要になる部分だし、参考にしたい

発表と被って聞けなかったけど、こっちも気になってた

今年も去年同様、論文賞受賞した人の発表があった。やっぱり論文誌になってて論文賞とってるだけあって、内容しっかりしてるし、勉強になる。あと、今年は本大会よりワークショップが中身濃くて面白かった。


あとは何より、北海道の食べ物がおいしかった。


来年は京都らしいし、またいけるといいな
というか、もう少し研究会とかも見にいけるといいな。

Comainuをリリースしました

中・長単位解析ツールComainuをリリースしました。

Comainu | 中・長単位解析ツール

ダウンロードはsourceforgeからできます。
ソースファイルとモデルファイルをダウンロードしてください。
モデルファイルは解凍すると1Gくらいあるので注意してください。
中・長単位解析器 Comainu プロジェクト日本語トップページ - SourceForge.JP


長単位というのは、国語研が採用している言語の単位のことです。
国語研が構築した現代日本語書き言葉均衡コーパス(BCCWJ)では言語単位として語彙形態論研究に適した短単位と構文・意味研究に適した長単位を利用しています。
Comainuでは、このうち長単位の解析をします(短単位はMeCabとUniDibで解析します)。


長単位は短単位(単語)以上、文節以下の長さで大雑把には文節を自立語部分と付属語に分けたものが長単位となります。

長単位は,言語の構文的な機能に着目して規定した言語単位である。
長単位の認定は,文節の認定を行った上で,各文節の内部を規定に従って自立語部分と付属語部分とに分割していくという手順で行う。

詳細はBCCWJのドキュメント:形態論情報にあります。



依存ツールが色々あるので、インストールがちょっと面倒かもしれません(特にWindowsで利用する場合)
Windowsで利用する人の方が多い気がするので、Windowsでの依存ツール含めたインストール方法はどこかにまとめる予定です。
まだUniDic2がリリースされていないため、平文から長単位解析する場合に、長単位の語彙素、語彙素読みが正しくない場合があります(UniDic2(XML版)は近いうちにリリースされると思います)。
軽く試したい方は Comainuを試してみる | Comainu から試せます。


Comainuについては言語処理学会で19日にポスター発表します。