統計的言語処理 - 中川研究室

自然言語処理入門
「言語か数学か:
計算機のパワーによる統計的言語処理」
東京大学 情報基盤センター
(情報理工学系研究科、情報学府 兼担)
中川裕志
[email protected]
http://www.r.dl.itc.u-tokyo.ac.jp/~nakagawa/
大規模コーパスでの言語処理
大規模コーパスから何らかの有用な情報を抽出したい。
今までは人手でコーパスを処理して統計データを抽出していた。
しかし、もはやコーパスが大きすぎて、人手では無理。計算機で
処理する時代
100MBからGBくらいの大きなコーパスになると、形態素解析
や構文解析のような重い処理を闇雲に行うことは、時間がかか
り過ぎるし無駄が多い。
もう少し軽い統計処理が検討されている。
単語など有用な言語単位を対象にする統計的処理が多く研究
されている
統計的言語処理にはどんなものがあるのか
Nグラム統計
単語、用語の抽出、頻度分布、インデクシング
文書分類
自動段落分割
自動要約
複数コーパスの対応つけ(Alignment)
2言語コーパスの対応つけ
機械翻訳
マルチモーダルのコーパスの対応つけ(exビデオインデクシン
グ)
なぜ言語の統計?
 統計量を計算する理由
1 我々の使っている言語について知る
2 言語モデル(文法、言語運用(語用)、文書構成規則、
など)を作る
3 辞書や電子化辞書を作る
4 言語処理に必要な計算機資源を見積もる
延べ数 と 異なり数
 「便り /の / ない / の / は / よい / 便り」
 形態素=固有の意味を持ち、かつそれ以上分解できない言語の単位
単語ってなに?
 延べ形態素数=7、 異なり形態素数=5
 頻度は  便り=2、の=2、ない=1、は=1、よい=1
 単語とは?
1 「ので」は1単語か?
2 「日々」の「々」は?
3 「日銀」は1単語?
4 「日本銀行」は1単語か2単語か(あきらかに2形態素らしくはある)
5 実際、単語とは何か、というのは国語学者を悩ませてきた問題であった。
6 実用性の観点からすれば、辞書にどの単語を登録するかが問題なのだ
から、応用目的によって単語を決めればよい。
統計の対象となる言語単位
 音素: 訓令式でローマ字表記したときのアルファベット1文字に対応する音
 文字: 文字セットによる。しかし、アルファベットの大文字小文字、日本語漢
字の新字 例えば「沢」と「澤」は同じ文字か違う文字か?
 単語: 西欧の言語のように正書法(Orthography)によって単語間に空白が
あればよいけれど。 「虎の子」は1単語? Collocation の問題
 複合語:
1 複合名詞:「日本学術会議第5部会員選挙日程検討結果報告書別添資
料補遺3ページ2行目」????
2 複合動詞:「追いかける」=「追う」+「かける」
「老けこむ」=「老ける」+「こむ」
「痛がる」??
 句: 名詞句、動詞句: 言語情報処理では文よりも句が目下のターゲット
 文: 書き言葉では句点があるが、話し言葉では?
 談話: 談話構造の認識、談話の範囲などが問題
語彙範疇 vs 機能範疇 と 品詞
 語彙範疇: 辞書に記載されている内容的意味のある単語。具体的には動
詞,名詞。 内容語ともいう。
 機能範疇: 固有の意味を持たないが、内容語の修飾や内容語同士の関係
を記述するための言語要素。冠詞、助詞、屈折辞など。機能語ともいう。
 情報検索のような文の意味内容を直接捉えようとする試みにおいては、内
容語の抽出や統計的性質が重要で研究も進んでいる。一方で、言語学や機
械翻訳などの言語を扱う正統派??の領域では、言語現象としての機能語
から、文法や意味に迫る方法をとる。現状では両者の間では乖離があること
を認めざるをえない。
 品詞: 内容語(もちろん機能語も)が文法的にどういう性質かを記述するの
が品詞。統計的性質を調べる場合に、ここの単語(特に内容語の場合)は出
現頻度も低く、むしろ同じ品詞のものを同一視して統計をとる方法が有力な
場合あり。日本語の品詞体系は以下を参照されたし。

1 基礎日本語文法: 益岡隆志、田窪行則著、くろしお出版、1992(い
わゆる益岡・田窪文法)など。
Nグラム
 Nグラムとは言語を特徴つける簡単な方法(言語モデル)
 ある言語単位(音素、文字、単語、品詞など)を選ぶ。その言語単位のN個
連続をマルコフモデルで表したものをNグラム(N-gram)という。特に言語単
位を陽に指定する場合、「言語単位名Nグラム」(例えば、単語2グラム)とい
う。
 単独の言語単位のモデルを unigram、2個の連続を bigram、3個の連続を
trigram という。(zero-gram とは、全ての単語が等確率で生起するモデル)
 異なり数を計算してみよう。







(1)英語の文字2グラムの総数
(2)日本語のモーラ2グラムの総数。
モーラ(拍)とは、ひらがな1文字同じ長さの音の単位。「ん」「っ」「-」は1
モーラ。
なお、音節(syllable)とは、「(子音)(半母音)母音(モーラ音素)」
(3)日本語の文字2グラムの総数
(4)日本語の単語2グラムの総数
(5)日本語の品詞2グラムの総数
Nグラムの計算
 ある言語におけるNグラムの種類の総数はとても大きすぎて計算できない場
合が多い。実際のテキストにおいて出現したNグラムによって言語(の部分
集合)を特徴つける。そこで、テキストにおけるNグラムの計算法が必要。
 あ り が と う ……
う…
とう…
がとう…
りがとう…
ありがとう…
辞書式に
整列
1:ありがとう…
2:う…
3:がとう…
4:とう…
5:りがとう…
整列したポイ
ンタの配列
整列したポインタの配列においては、先頭部分に同じ文字列を持つものが隣
接ないし近接する。
近所を見回せば、同じNグラムが何個あるかという統計を簡単に計算できる。
KWIC ( Key Word In Context )
 ある言語表現がどのような文脈に現れるかを、与えられたコーパスにおいて
列挙したもの。
 辞書式に整列したテキストへのポインタの配列(Nグラムの計算に利用する
もの)を使えば、容易に抽出できる。
 Nグラムの計算 のページの「Nグラム」に対するKWICは以下の通り。
----------------------------------------------------------------------------------------------前の文脈
Key Word
後の文脈
-----------------------------------------------------------------------------------------------ある言語における
Nグラム
の総数はとても大きすぎて
ストにおいて出現した
Nグラム
によって言語(の部分集合)
テキストにおける
Nグラム
の計算法が必要。
----------------------------------------------------------------------------------------------- Key Word がどのような単語や表現と共起するかという情報を得られる。共
起情報は自然言語処理において必須の情報。
Nグラムの確率モデル
 NグラムはN言語単位の連鎖のモデルだが、これを言語モデルとし
て使うために確率論によるモデル化をする。なお、言語単位としては、
文字、単語、品詞などなんでも採用できる。
 まず、N言語単位の連鎖は、 C(w 1w 2 ....w n ) 、ただしCは
コーパス中の頻度.
 コーパスの文を文字のN重マルコフ過程つまり直前のN文字から次
に現れる文字を予測するモデルにしたい。一般にN重マルコフ過程
とは、現在の状態がN個前の入力に依存してきまる確率プロセス
 つまり、
である。
p(w i | w i-n ...w i-1 )
 これは条件つき確率で
C(w i-n ...w i-1w i )
p(w i | w i-n ...w i-1 ) 
C(w i-n ...w i-1 )
Nグラムの生起確率を求める
その1
 最尤推定法
C(w1...w n-1w n )
文字のN-1重マルコフ過程 p(w n | w1...w n-1 ) 
C(w1...w n-1 )
相対頻度CからNグラムの生起確率を推定
 Nが大きいと信頼性の高いNグラム推定ができない。
 相対頻度が0のNグラムがたくさん現れる。(データス
パースネス問題)
 加算法
単に分母分子に適当な数を足す。
C(w1...w n-1w n ) 
p(w n | w1...w n-1 ) 
C(w1...w n-1 ) | V |
分子が0の場合は単にδを分子とする。簡単だがあまり精度がよくない。
|V|はコーパス中の異なり語数
Back-off smoothing(元データの頻度)
9
8
7
6
5
系列1
4
3
2
1
0
1
2
3
4
5
6
7
実際に出現した単語(8個)
8
9
10
11
12
13
出現していないが、こ
れから出現する可能性
がある単語(5個)
各単語の頻度にδ(=1)を加算
10
9
8
7
6
系列2
系列1
5
4
3
2
1
0
1
2
3
4
5
6
7
実際に出現した単語(8個)
8
9
10
11
12
13
出現していないが、こ
れから出現する可能性
がある単語(5個)
Back-off smoothing(確率を計算しなおす)
10
9
原データ
8
7
6
系列2
系列1
5
4
3
2
1
0
1
確率
2
3
4
5
6
7
8
9
10
11
12
13
0.3
0.25
0.2
系列1
系列2
0.15
0.1
0.05
0
1
2
3
4
5
6
7
8
9
10
11
12
13
Nグラムの生起確率を求める その2
 Good-Turingの推定
語数Nのコーパス中でr回出現する異なり単語数をnrとする。すると
N   rn r  n1  2n 2  3n 3 ...
r0
ここでコーパスにr回出現する単語wの頻度を次の式で推定するの
がGood-Turingの推定
n
r *  (r 1) r1
nr
実は次のように考えている
r *  nr  (r  1)  n( r 1)
Nグラムの生起確率を求める その3
 Good-Turingの推定
語数Nのコーパス中でr回出現する単語の数をnrとする。すると
N   rn r  n1  2n 2  3n 3 ...
r0
ここでコーパスにr回出現する単語wの頻度を次の式で推定するのがGoodTuringの推定
n r1
r  (r 1)
nr
*
 これによって相対頻度の総和を求めると
n1
N
つまり、
がコーパスに出現しない単語の頻度の推定確率
r * をディスカウント係数という。
d
r
 なお、
n r r*
n
1 1

N
r0 N
Nグラムの生起確率を求める その4(バックオフスムースジン
グ)
大変に込み入っているので省略
 Good-Turingの推定を基礎にした頻度=0のbi-gramの頻度推定
C* ( w1 , w 2 ) C* ( w1 , w 2 ) C( w1 , w 2 )
C( w1 , w 2 )
p(w 2 | w1 ) 


 d C(w1,w 2 )
C(w1 )
C(w1 )
C(w1 )
C ( w1 , w 2 )
 この計算によればコーパス中に出現する bi-gram の確率の和は1より小さい
 (w1 ) 1
 p(w 2 | w1 )
w 2:C(w1,w2)0
 この  ( w 1 ) は w 1 に対して C(w 1 , w 2 )  0 となる全 w 2 の条件つき確
率の和。
 これを C(w 1 , w 2 )  0 なる単語列の確率に分配して p(w 2 | w 1 ) を求める
p(w 2 | w 1 ) 
 ( w 1 )p(w 2 )

w :C(w1,w 2 )0
p(w 2 )
 p(w
1

2
| w1 )
w 2:C(w1,w 2 )0
1
 p(w
w 2:C(w1,w)0
2
)
 p(w 2 )
Nグラムの拡張 その1 クラスモデル
 Nグラム クラスモデル: 例えば品詞のような単語のクラスから次にくる単
語を予測するモデル。単語をw、品詞をcとする。すると、1重マルコフモデル
で 品詞-単語の bi-gramクラスモデルは、
p(w n | w n -1 )  p(w n | c n )p(cn | c n -1 )p(cn -1 | w n -1 )
 p(w n | c n )p(cn | c n -1 )
 p(cn -1 | w n -1 )  1
ただし、 c i は単語 w i の属するクラス(例えば品詞)
一般には単語は複数の品詞を持つ。よって、次のように書くべき。
p(w n | w n-1 )   p(w n | c n )p(cn | c n-1 )
cn
例えば、クラスとして品詞を使うと品詞の異なり数は単語の異なり数よりはる
かに少ないので、Nの大きいNグラムも計算できる。
Nグラムの拡張 その2 キャッシュモデル
 直前の n 語の中に、現在の単語と同じ単語が何回現れるか。
 問題:このモデルを式で書けますか?

テキストの変換処理のモデル化
 テキストを記号列(単語列ある
いは文字列)とする
 Noisy Channel Model
情報源記号
列:T
通信路
観測され
た記号列
S
推定処理
T̂:出力記
号列
雑音
観測されたSから情報源記号列Tを推定し
算する
T̂
を計
推定方法
 通信路を条件付確率でモデル化:P(T|S)
 Sを知った上でのTの確率すなわち事後確率P(T|S)を最大化
する T̂ として求める。
Tˆ  arg max P(T | S )
ここでベイズの定理に
より
T
 arg max P( S | T ) P(T )
T
 P(T)は情報源記号列の既知の統計的性質が利用できる
 P(S|T)は情報源記号列Tがnoisy channelの雑音によってSに
変化する確率。多数の(T,S)対のデータ(コーパス)のより計
算する
Noisy Channel Modelの適用例
 機械翻訳 P(T|S)
の文P(S|T)P(T)
Tは翻訳結果、Sは翻訳される元言語
 P(S|T) 翻訳先言語のテキストSに元言語のテキストTが翻訳される
確率
 P(T) 元言語のテキストTの自然さ。例えば、N単語列のコーパスに
おける 単語3-gram確率
 T̂ は機械翻訳の出力
 P(X|大学に入る)
 P(go to a university)=0.8 P(go to universities) =0.4
P(enter the university)=0.7 P(enter universities)=0.2
 P(大学に行く|go to a university) =0.8 P(同左|go to universities)=0.3
 P(大学に入学する|enter the university)=0.9 P(同左|enter universities)=0.5
 日本語文として類似の文を選ぶ作業も実は必要
P(大学に入る|大学に入学する)=0.9, P(大学に入る|大学に行く)=0.5
 「大学に入る」の翻訳=
argmax x P(X|大学に入る)∝P(大学に入る|S1)P(S1|T)
P(大学に入る|大学に入学する)
P(大学に入学する|enter the university) P(enter the university)
=0.9*0.9*0.7=0.567
X= enter the university
Noisy Channel Modelの適用例
 文書要約 P(T|S)
P(S|T)P(T)
Tは要約結果、Sは要約される元テキスト
 P(S|T) 要約文Tから長い元テキストSが、作られる確率
 元テキストとその要約文の集合が教師データとして与えられていれば計算でき
る。
 とはいえ、どのような方法で要約されているかを統計的に同定するのは相当難
しい。
 P(T) 要約テキストの文としての自然さ。例えば、Tに出現する単語バイグ
ラムが、新聞記事でも良く出現するものなら、P(T)は大きいとする。
 T̂ が要約システムの出力する要約文
 P(T|言語は、…情報..論理…した。)
 「言語、情報、論理,..」を含む文の集合を{S}の各要素の文書からその
一部分の文を抜き出して作る文章を{T}とする。それによってP(S|T)が
T̂計算できる。
 =argmaxP(T|言語は、…情報..論理…した。)
=argmax P(言語は、…情報..論理…した。|T)P(T)
T
 文書分類
 P(T|S)においてSが与えられた文書、Tがカテゴリ
推定されたカテゴリ:
Tˆ  arg max P( S | T ) P(T )
T
 P(T)はカテゴリTの文書の出現確率
 P(S|T)はカテゴリTの文書において出現する文書S
 Sのモデル化にはいろいろな方法があるが、簡単なのは、出現する単
語w1,…wn
 P(S|T)=P(w1,…wn|T)だが、 このままでは計算しにくいのでw1,…wnが
n
独立とすると
P( w1 ,..., wn | T ) 
 これを naïve Bayse 分類とよぶ。
 P( w | T )
i
i 1
 P(中村|野球)=0.2 P(松坂|野球)=0.9 P(W杯|野球)=0.3 P(中村|サッカー)=0.8
P(W杯|サッカー)=0.8
 P(サッカー)=0.4 P(野球)=0.6
 P(サッカー|「… 中村… W杯….」)P(サッカー)
= P(中村|サッカー) P(W杯|サッカー) P(サッカー) =0.8*0.8*0.4=0.256
 P(野球|「… 中村… W杯….」)P(野球)
= P(中村|野球) P(W杯|野球) P(野球) =0.2*0.3*0.6=0.036