mots quotidiens.
Daichi Mochihashi (持橋大地) daichi <at> ism.ac.jp by hns, version 2.10-pl1.

先月 2010年09月 来月
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30

2010年09月07日(火) [n年日記]

#1 IBISML研第2回終了

信学会 IBISML研究会第2回 が無事に終了し, 福岡から帰ってきました。僕は幹事補佐なので, 基本的に毎回参加。

今回はPRMU研究会, 情処CVIM研究会と共催だったこともあり, かなりの盛況で, 一日目最後のセッションは部屋が一杯で80人以上はいたように思います。 第2回が活況で終わって一安心。
PRMU研の発表を見るのは初めてでしたが, (音声の方も多くはそうですが) 扱っている値が連続値なので, ガウス分布と exp が出てきて自然言語処理から見ると 一見難しそうに見えるものの, 結局やっていることは大体DPとガウス分布と二乗誤差に 尽きるのかな, というのが感想でした。

こういう研究会に出たり, CS研にいると機械学習の色々な話を聴くことができて 機械学習100本ノック状態だなぁ, と日々思っているわけですが, 逆に言うと, 大学の普通の自然言語処理の研究室だと, ほとんど自然言語処理の話しか聞かない, という環境なのではないかという気がします。そういう意味では鍛えられるなぁ, と思う所が大です。

ANAのツアーを使ったので, 関空から福岡へ飛んで, 今回はANAクラウンプラザホテル福岡(=博多全日空ホテル)に宿泊。 *1 流石のクオリティでした。(と言っても, NTTの宿泊費の範囲内です。)
博多駅の博多口の駅前は 対称になっていて, 前回泊まったホテル日航福岡と福岡全日空ホテルは左右のほぼ同じ位置にあるので, 明らかに最初から計画的に配置したんだろうなぁ, と想像。 *2 これで, 一応博多駅の主なホテルの両方に泊まった感じになりました。


*1: 竹内先生お薦めのハイアットレジデンシャルスイートを使いたい気もしましたが, 今回の場所的に便が悪いので博多駅前に。
*2: 当たり前のことですが, こういう所を使う客にはそれなりの購買力や社会的な力 を持った人がいるので, 左右に分散させることで均等な開発を図る, という意図なのだ と思います。

#2 -

同じグループの 石黒君 の論文がNIPSに通っていました。おめでとう!


2010年09月09日(木) [n年日記]

#1 Arabic

必要があって, ACL 2005のチュートリアル "Introduction to Arabic Natural Language Processing" を読んだ。(ちなみに, この年のACLには出していません (2005/06の日記) )。面白い。
130ページくらいのスライドですが, 言語に興味のある人なら, 非常に面白いと 思います。英語や日本語のように活用がほとんどない言語と違って, 思い切り活用が あり, アラビア語が難しいという話は前から聞いていましたが, 納得。ただ同時に, わかるとかなり直観的に, 自然に思える, 良い言語なのだろうなとも思いました。
"ktb" が概念としては「書く」を表していて, パターンに従って "maktaba" と変化する と「library」の意味となり, さらに接頭辞, 接尾辞がついて "walilmaktabat" となると "and for the libraries" の意味になるとか。

NLP的には英語や中国語, 日本語あたりの言語が注目されがちですが, 活用が多いこう いう言語の解析(むしろこの方が本当は多いのかも)も重要だと思った次第です。 話によると, ポーランド語が相当難しいらしいですが..。

#2 -

しばらく前に撮った写真ですが, 難波千日前(=いわゆる大阪ミナミの超中心地)に 今年にできたカフェ。SVM2010でスライドに書くのを忘れたので, chasen.org としては載せておかねば, ということで..。:-)


2010年09月30日(木) [n年日記]

#1 LatticeLM

1週間ほど前に, 京大の Neubigさん から, FST上の教師なし単語分割ツール latticelm [LINK] の実装を公開した, との連絡をもらったので, 試してみました。

このツールは僕が前にやった教師なし形態素解析ができる他 (NTTではどうやっても 僕のコードは公開できないのですが), Neubigさん自身の研究 で, 音声認識結果の音素ラティスからの直接の言語モデル学習が可能なようです。
インストールには普通に OpenFST を configure; make してから, latticelm の ディレクトリでmakeを実行するだけ。以下は京大コーパスに対して実行してみた ものです。

sj205:~/work/neubig/latticelm% time ./latticelm -annealsteps 0 -unkn 5 -burnin 10 -samps 12 -prefix out.l/ data/kc.dat
Loaded 2899 symbols
Running on 37400 sequences
................................................................................................... 2971 seconds
Finished iteration 0 (Anneal=0), LM=1.04134e+07 (w=8.11355e+06, u=2.29982e+06), 
Lattice=9.55218e+06
 Vocabulary: w=90979, u=2898
 LM size: w=566638, u=275393
 WLM 1-gram, s=0.661334, d=0.697413
 WLM 2-gram, s=1.352, d=0.723324
 WLM 3-gram, s=1.34094, d=0.771464
 CLM 1-gram, s=2.03761, d=0.536038
 CLM 2-gram, s=1.2196, d=0.580531
 CLM 3-gram, s=1.25447, d=0.651926
 CLM 4-gram, s=1.26755, d=0.68593
 CLM 5-gram, s=1.27026, d=0.696291
................................................................................................... 3839 seconds

Finished iteration 12 (Anneal=1), LM=5.16363e+06 (w=4.90242e+06, u=261216), Lattice=5.04985e+06
 Vocabulary: w=23893, u=2898
 LM size: w=377347, u=78178
 WLM 1-gram, s=8.19583, d=0.716688
 :
 Printing sample for iteration 12
  Writing LM to out.l/ulm.12
  Writing LM to out.l/wlm.12
  Writing samples to out.l/samp.12
  Writing symbols to out.l/sym.12
./latticelm -annealsteps 0 -unkn 5 -burnin 10 -samps 12 -prefix out.l/   27231.6
4s user 65.25s system 99% cpu 7:35:03.03 total
一つ注意として, 現在のコードでは -samps [n] のサンプル数は, 「burn-inを含んだ」 値になっています。 *1 上の例では, テストなので10ステップのburn-inの後に10-12ステップのサンプルをセーブ。

肝心の結果は以下のような感じ。 *2 まだうまく分割できていない場合が多いですが, これはMCMCのステップ数が少ないから かもしれません。

交渉 の 決 裂 が 制裁 や 戦争 につ なが り かね ない よう な 状況 に 相手 を 追 い こ み 、 譲歩 を引 き出 す 手法 である。
朝 鮮 民主主義人民 共和 国 と 朝 鮮 半島 エ ネル ギー開発機構 は 十 五 日 、 ニ ューヨ ーク で 軽 水 炉 供給 協定 に 調 印し た 。
エ リツィ ン 大統 領 の 委任 を 受け て 発表 し た もの だが 、 チ ェルノムイルジ ン 首 相 の 主 導権 で 行われ た と み られ る。
首 相 の 足元 も 、 新党 作り で 揺 れ ている。
ただし, 上の実行結果を見るとわかるように, latticelm はFST上で動いているため, 京大コーパスのような大きな生テキストでは動作が少し遅く, 1ステップあたり大体 1時間くらいかかります。一方, 僕の実装では1ステップ当たりほぼ4分くらいなので, やはりC++で実装したのは間違いではなかった模様。 *3

ちなみに, 途中経過にも違いがあり(僕のコードでの京大コーパスの最終結果は, NL研 の論文に乗っている通りですが), 10ステップ終わった後での僕のコードでは以下。

sp:~/work/segment/src% time ./spylm -n 2 -N 10 ../data/kc.train.txt /tmp/model.kc
reading ../data/kc.train.txt..
reading line 37400..
37400 sentences parsed.
Gibbs iter = 1 sentence = 37400/37400 lexicon = 146752, lik = -5.96559e+06
 VPYLM Gibbs iter = 1 sentence = 171869/171869
:
Gibbs iter = 10 sentence = 37400/37400 lexicon = 109916, lik = -4.99233e+06
 VPYLM Gibbs iter = 1 sentence = 205171/205171
saving model to /tmp/model.kc..
saving stats..
saving dictionary..
saving segments..
viterbi segmentation 37400.. done.
done.
./spylm -n 2 -N 10 ../data/kc.train.txt /tmp/model.kc  2730.53s user 1.27s system 99% cpu 45:32.45 total

交渉の 決裂 が 制裁 や 戦争 につながりかねな い ような 状況 に 相手 を追いこみ 、 譲歩 を引き 出す 手法 である 。
朝鮮民主主義人民 共和国 と 朝鮮半島 エネルギー 開発機構 は 十五日 、 ニューヨーク で 軽水炉供給 協定に調印 した 。
エリツィン大統領 の委任 を受けて 発表 した もの だ が 、 チェルノムイルジン 首相 の主導権 で 行われた とみられる 。
首相 の足元 も 、 新党作り で 揺れている 。
僕のコードでは最初, 文全体が一つの「単語」として登録され, その後それが適宜 分割されるのに対し, latticelmでは初期値が文字毎の分割に見えるので, この違いは, 初期化の違いによるのかも知れません。
いずれにしても, 僕は実装を公開できないので, 興味深いツールだと思います。 計算時間も今後改善されるとのことで, 期待大です。

なお, 音声認識からの学習は今回は試しませんでしたが, ラティスからの言語モデル の学習は, 音声認識がない場合でも有用なように思います。
というのは, 日本語では特に, 表記に複数の可能性があり(同じ言葉をひらがなで書い たり, 漢字で書いたりし, 「香具師」のように読みと漢字表記がまるで対応しない場合 もある), 書かれた文字を"デコード"してラティスにしてその後の処理を行うのは 有用ではないか, というのが今回思ったことでした。 *4


*1: これはバグで, 後で直す予定とのことです。
*2: 「銀河鉄道の夜」で1000ステップまで実行してみましたが, データが少ないせいか, これとほぼ同じような結果になりました。
*3: ただし, NeubigさんのFST上の実装では, 可能な単語長に制約がないなど, 良い点が あります。
*4: それ自体モデルに含めるという手もありますが, 読み情報などは本来的に言語モデルと 独立な部分が多いと考えられるため, 別に「デコード」を行うことには意味があるので はないかと思います。

3 days displayed.
タイトル一覧
カテゴリ分類
 なかのひと
Powered by hns-2.10-pl1, HyperNikkiSystem Project