• 検索結果がありません。

単語ラティスの作成アルゴリズム

ドキュメント内 JAIST Repository https://dspace.jaist.ac.jp/ (ページ 34-37)

第 3 章 情報検索の検索漏れの低減

3.4 N- BEST パス探索形態素解析プログラム

3.4.2 単語ラティスの作成アルゴリズム

本形態素解析プログラムは、永田[5]の方法に基づき入力文の N-best パス解 出力を行う。永田の方法では、最初に与えられた入力文を 1 文字ずつ前向きに 解析し、図3.9に示すような単語をノードとするグラフ構造(単語ラティスと呼 ぶ)を作成する。次に作成した単語ラティスからコストが小さい上位N個のパ スを探索してパス上のトークンを順に出力する。よって、ここではまず、入力 文から単語ラティスを作成する手順を説明する。

図3.9 単語ラティスの例

単語ラティスを作成する手順は次の通りである。

(1) 入力文Sを受け取る。

(2) 文頭ノードと文末ノードを用意する。文頭ノードは位置 1 で終わるノード とし、文末ノードは位置|S|で始まるノードとする。ただし|S|はSの長さ

(文字数)を表す。

(3) S の文字位置を示す変数 i を用意し、i=1…|S|の範囲で以下の処理を繰り 返す。

① 位置iの文字で始まる単語を単語辞書で検索する。単語がなければiをイン クリメントして再度検索する。

② 該当する単語をノードとして追加する。

③ 位置iで終わるノードNLの右文脈IDと位置iで始まるノードNRの左文脈 IDを使って連接コスト表から連接コストc(L)を求める。それらのノードの 間にリンクLを張り、リンクLにひもづくパラメータhに以下のように文 頭からそこに至るまでのコストを割り当てる。

(3.2)

ここでminH(NL)はノード NLに接続する左リンクのうち最小の h であり、

c(NL)はノードNLの生起コストを示す。

単語ラティスの作成手順(3)を具体例を用いて詳述する。S=“ここではきもの を脱ぐ”という入力文を、図3.10の単語辞書と図3.11の連接コスト表を使って 形態素解析を行い、単語ラティスを作成する。まず文頭ノードと文末ノードを 作成し、文頭ノードの右文脈IDを1、文末ノードの左文脈IDを7とする。

まずi=1のとき、「こ」(その次の文字は「こ」)で始まる単語を単語辞書で確 認すると、「ここ」があるのでノードとして追加する。位置1で終わるノードは 文頭ノードでありその右文脈ID は1、そして位置 1 で始まるノードは「ここ」

でありその左文脈IDは3である。文頭ノードと「ここ」ノードの間にリンクL を張り、その連接コストは連接コスト表からc(L)=5となる。このリンクのhを 式(3.2)を使って求めると、NLは文頭ノードだからminH(NL)=0, c(NL)=0であり h = 0 + 0 + 5 = 5である。次にi=2のとき、「こ」(その次の文字は「で」)で始 まる単語は単語辞書にないのでiをインクリメントする。するとi=3となり、「で」

を単語辞書で確認すると単語があるので「で」のノードを追加する。位置 3 で 終わるノードは「ここ」でありその右文脈IDは3、位置3で始まるノードは「で」

でありその左文脈IDは4である。連接コスト表から両者のリンクLの連接コス トはc(L)=5である。このリンクのhを式(3.2)を使って求めると、NLは「ここ」

ノードだからminH(NL)=5, c(NL)=20でありh = 5 + 20 + 5 = 30である。次に i=4のとき「は」で始まる単語を単語辞書で確認すると「は」と「はきもの」が 見つかるのでこれらをノードとして追加する。位置 4 で終わるノードは「で」

でありその右文脈IDは4、位置4で始まるノードは2つあり、1つは「は」で ありその左文脈IDは5、もう1つは「はきもの」でありその左文脈ID は2で ある。「で」と「は」は連接コスト表よりコスト5、hはh = 30 + 20 + 5 = 55 となる。一方、「で」と「はきもの」は連接コスト表よりコスト15、hはh = 30 + 20 + 15 = 65となる。以下説明を省略するが、i=|S|まで同様の手順を繰り返 す。

表層形 左文脈ID 右文脈ID 生起コスト 品詞

きもの 2 2 40 名詞-普通名詞-一般

ここ 3 3 20 代名詞

で 4 4 20 助詞-格助詞

は 5 5 20 助詞-係助詞

はきもの 2 2 40 名詞-普通名詞-一般

を 4 4 20 助詞-格助詞

脱ぐ 6 6 40 動詞-一般

図3.10 単語辞書(例)

右文脈ID

1 2 3 4 5 6

左 文 脈 I D

2 5 5 10 15 5 10 3 5 15 10 5 5 10 4 100 5 5 20 20 20 5 100 5 5 5 20 20 6 20 10 10 5 5 10 7 100 5 5 5 5 5

図3.11 連接コスト表(例)

前述のアルゴリズムでは、文字位置 i の文字で始まる単語が単語辞書にない と位置iで終わるノードとの間のリンクが途切れる場合がある。そこで位置iの 文字で始まる単語が単語辞書にないときは未知語として単語ノードを追加する。

未知語ノードの単語生起コストは単語辞書中の最大の生起コストと同じ値を割 り当てる。同じく未知語と他の単語(未知語を含む)との連接コストは連接コ スト表中の最大コストを割り当てる。これらの処置により、未知語を含むパス はのちの探索処理にて選択されにくくなる。また、未知語の単語ノードを追加 するときは、未知語が始まった位置の文字と同じ字種が続くまでを 1 単語とす る。たとえば S=“ポテンシャルがある”という入力文において、i=1 のとき辞 書引きに失敗したとすると、位置 1 で始まる文字「ポ」はカタカナなので、カ タカナが連続する範囲の i=6 までの「ポテンシャル」が未知語として 1 単語に 同定される。

ドキュメント内 JAIST Repository https://dspace.jaist.ac.jp/ (ページ 34-37)