http://lists.sourceforge.jp/mailman/archives/mecab-users/2007-February/000231.html
MeCab の出力フォーマットもしくは C/C++ API を使えば、ある単語が
元のテキストの何バイト目から何バイト目に出現したか分かるので、
元のテキスト中にスペースがあったかどうか区別することができます。
なにも考えずに swig api にも追加。
mecab/swig/MeCab.i に追加:
%extend mecab_node_t { int position_start(mecab_node_t *ref) { return (int)( self->surface - (ref->surface + ref->length - ref->rlength) ); } int position_end(mecab_node_t *ref) { return (int)( self->surface - (ref->surface + ref->length - ref->rlength) + self->length ); } }
my $head; for (my $m = $head= $c->parseToNode($sentence); $m; $m = $m->{next}) { printf("%d %d\Token %s\t%s\n", $m->position_start($head), $m->position_end($head), $m->{surface}, $m->{feature}); }
<http://cl.naist.jp/~masayu-a/article/2006-05-26.pdf>
かなり前に公開されていたらしい。
単語分割込みの機械翻訳の話がいくつか。
Can We Translate Letters?
文字列単位のフレーズベース機械翻訳
An Iteratively-Trained Segmentation-Free Phrase Translation Model for Statistical Machine Translation (Robert Moore and Chris Quirk)
Efficient Handling of N-gram Language Models for Statistical Machine
Translation Marcello Federico and Mauro Cettolo
これは言語モデルの扱いの話。
巨大なモデルのパラメータ推定、デコードの実装よりの話がある。
Bayesian な 単語分割、文字列レベルから区切り
softwaresがすばらしい。
なにがすばらしいかというと、C++で書かれているのがすばらしい。
統計処理言語 R ってなんですか?
関係ない話から。
segmentation といいつつ、文字や文よりも統計処理に向いている単位を探すというのがタスク。
たぶん segmentation / 分割 / 区切り という用語はふさわしくないけれど、
惰性で使っている。
過去の人が使っているから…
確率分割済みコーパス上で
N-gram カウントの期待値を効率的に計算できればほぼ終わり。
A 0.3 B 0.2 C 0.9 B 0.2 C 0.9
なら、
E[ # A B C B C ] = 1 * 0.3 0.2 0.9 0.2 0.9
E[ # A BC BC ] = 1 * 0.3 0.8 0.9 0.8 0.9
のように。
文字区切りと形態素区切りと文区切りがあることを仮定する。
文字単位から結合を開始する。
文末文字と次の文の文頭文字は cannot link
隣り合ってない文字同士は cannot link
<http://www.stanford.edu/~sgwater/>
D論ゲット
Nonparametric Bayesian Models of Lexical Acquisition
いわゆるひとつの Unsupervised Morphological Segmentation です。
アブストラクトでは話し言葉の連語とかを獲得したい、というのが主眼。
で、どの程度適応するのかコントロールするところがキモになる。
設定した問題
適応は、実際に運用するときのデータに近い傾向の訓練データを使って、
その訓練データ上で過学習を起こさせること。
過学習というか過度の適応は避けたいのだけれど、
どの程度適応させるべきかは、
訓練データが実データにどの程度似ているかによる。
極端な話、実データそのものであれば、
いくら過学習してもいい。
実データは未知で、
だから初めて見る文字列があって。
云々
<http://www.linguistics.ucla.edu/faciliti/research/skim_diss.pdf>
そもそも、N-gram でなく、適応的に文脈長を選ぶべきではないか(PPM*言語モデル?)
形態素/活用の単位の2-gram文脈の情報量は、それなりに一様(1-gram文脈では明らかに不足しているが)
3-gram と 2-gram はけっこう違う。
最小単位をなににするか?
・文字
・形態素
・?
形態素でないにしても、
読みが決定されている必要がある。
音声認識、同字語の曖昧性解消の点からも、読みは有用。
音響コンフュサビリティを考慮した単位の必要性:
1モーラしかない単語では、音響モデルで音素環境依存性3-phone
<http://www.mas.ncl.ac.uk/~njnsm/seminars/seminars0405/abstracts/boys.pdf>
<http://chasen.org/~daiti-m/paper/nl165pf.pdf>
スライドも。
トピック言語モデル、長距離言語モデルの最先端。
「単語 Unit, Phrase」の獲得と「同類語 Class」の獲得をいっしょにやってしまおうというアイディア。
単語とクラスは最初、どちらも文字(形態素でもよい)
単語の獲得のために、尤度変化を最大にする連接をくっつけることを繰り返す。
単語そのものの連接ではなくクラスの連接で尤度を評価し、
クラス同士をくっつける。
クラスの獲得のために、
Ries さんの方法では、当初、
単語の連結に際して、クラスも連結している。
のちの研究では、クラスは連結ではなく選択(主部、後ろのクラスを残す)にしたらしい。
Ries さんの方法の全体像:
まず、単語をクラスタリングする。
以降、単語の出現の代わりに、クラスの出現を数える。
全2-gramを列挙し、それを連結したときの全体の対数尤度の変化をテーブルに保持する。
対数尤度は、2-gramの出現頻度のみで決まる、場合わけのない簡単な式。
背景にはleaving-one-out(ある2-gramの出現の尤度を、その1出現をとりのぞいたコーパスから推定する)による尤度推定がある。
その変化量をあたえる式では、差分評価が困難な項は、ほとんどの場合変化がないとして無視する。
対数尤度がもっとも大きくなる連結を採用し、
対数尤度変化のテーブルを更新。
Ries さんの一連の Class-Phrase 言語モデルに関係する研究では、
・比較的小さな(それでもドイツ語で数万語レベル)の特定ドメインのコーパスで言語モデルをつくりたい
→小さなサンプルから母集団を推定するために、積極的なパターン抽出(クラスタリング)を行う
・書かれる単位としての単語と、意味を担う単位としての単語にはずれがある。
→連続する書記単語列を、語彙単語としてまとめる
Ries さんらは、最初に単語クラスタリングをしてから、
ボトムアップ式にフレーズまとめあげを行っている。
適切なチャンキングにより、適切なクラスタリングが促され、
クラスタリングによって確率推定のバックオフが提供されるという、
同時進行型の方法はないか?
<http://citeseer.ist.psu.edu/734816.html>
Morphological Segmentation の新しい論文。
単語変形規則の探索か?
スムージングと、テストセット評価による言語モデル構築?
けっこう被引用数が多い。
引用先で解説されていたり?
単語同定の必要性(問題設定)に関する議論が必要。
言語モデル構築のためには、単語同定は必ずしも必要ではなく、
文字単位で構築することは可能。
ただ、計算の容易な固定長N-gramでは、精度と性能を両立するNが見付かる見込みが薄い。
→ 「一定の長さの列」により「一定の情報量を持つ」「最小の」単位=「単語」の必要性
このような問題に対して、日本語においては
・(形態素解析の上の、辞書拡充による言語モデル)…人手が強く介在
・文字列上の、superword言語モデル
などが提案されている。
人手が介在しない単語同定による、音声認識精度向上の報告はない。(要調査)
一方、英語などの空白区切り言語でも、
phrase 発見問題、phrase 単位の言語モデルの研究がなされている。
ex.) goint_to, and_so_on
あと、ベースを文字にするか形態素にするかの議論。
形態素解析には誤りが含まれること、辞書のない分野にも適応させたいことから、
文字ベースを採用。
ただし、手法としては、文字=形態素なアルファベットを想定すれば、
文字ベースの中に形態素ベースは含まれる。
(形態素は品詞情報が付いた文字)
問題設定の範囲外↓
上記のような「言語モデルのための単語」と似て非なる「単語」に関して。
言語学的単語:
1、母語話者が認定したものが単語 → 教師あり学習、品詞つき辞書
2、まとまった単位として再現性、交換可能性 → 文字列頻度の変化点を境界とするアイディア
「単語分割」関連研究の整理。
候補がたくさんあるなかで、どの単語を割り当てるべきか?という問題としての単語分割
→ 最長一致、尤度最大基準(EM)、品詞接続確率
言語モデル適応手法の中での位置づけ。
・クラスター言語モデルは、少ないデータから小さな言語モデルを作るもの。
単語としては出現するが、単語 n-gram が 0 頻度という問題に対処している。
・キャッシュベース言語モデル?