文節をどう区切るか

日本語入力プログラムの歴史は、入力の効率を求める歴史でした。初めは「これはペンです」という文章を入力するにも、「これは」で一度変換し「ペンです」でまた変換する方式(単文節変換)や、「これは」と「ぺんです」の間に文節を区切る指示を与える方式をとっていました。やがて、単文節変換や文節ごとに区切り記号を入れる方式から、自動的に文節を区切る連文節変換(複文節変換?)へと進化し、さらには文脈に応じて適切な語を選ぶ用例変換、AI変換が花開き、日本語入力は簡単で効率的になっていきました。

このページは、文節を区切る方法について、現行の日本語入力プログラムでよく使われる方式を解説します。用例変換、AI変換は別項にて解説します。

目次

n文節最長一致法

採用している日本語入力プログラム:ATOK、EGBRIDGE、VJEなど。

日本語文を先頭から文節に区切り、辞書と照合した時に、文法的に正しいと考えられる候補がいくつがあるが、先頭からn文節目までの合計の長さがもっとも長いものを正しいと見做す方法。例えば、2文節最長一致法だったら、「にほんごのこのようなかいせきについてまったくちしきがないのですが」という文を、まず、

  1. 「日本語の/この世/うなかいせきについて……」(1)
  2. 「日本語の/このような/かいせきについて……」(2)

と区切っていき、(2)の方が長いので(2)を正しいと見做し、「日本語の」を変換済み候補とする。次に、「日本語の」を除いて「このような」から同様の作業を

  1. 「このような/解析に/ついてまったく……」(3)
  2. 「解析に/ついて/まったくちしきが……」(4)
  3. 「ついて/まったく/ちしきがないのですが」(5)
  4. 「まったく/知識が/ないのですが」(6)
  5. 「知識が/ないのですが」(7)

というように繰り返し、分析し、最終的に「日本語の/このような/解析に/ついて/まったく/知識が/ないのですが」という結果を得る(この場合、(5)の文例も「ついて/まった/くちしき……」と比較して、長いことが分かる)。

次に、各文節の区切りを選定する過程を細かく見てみよう。「ここではきものをぬげとかいてある」を例にする。

まず、3文字目までを解析する

5文字めまで

7文字めまで

9文字めまで

ここで初めて先頭2文節が次のいずれかであると判明する。「ここで/履物を」or「ここでは着物を」。AI変換などを使わない純粋なn文節最長一致法では、この時点でどちらかの候補を残すこととなる。これまた経験則から、後半の文節が長いものを正しいと見做し、この場合、「ここで履物を」を採用することとなる(AI変換などを併用していると、係り受け情報から違った選択をする可能性もあるが、これは別項(制作中)にて取りあげることとする)。

「ここで履物を」という結果が得られた時点で、初めて「ここで」を変換済み候補ということになる。そして、次の解析は「はきものを」から始まることとなる。

13文字めまで

ここでは「履物を/脱げとか/を文節区切り候補として採用し、「履物を」を2番めの文節として選定する。次に「ぬげとか」で始まる文字列を解析する。

16文字め(末尾)まで

ここで入力が尽きたので最終文節の末尾が選定され、後半の文節が長いほうを選ぶというルールから、「脱げと/書いてある/」を文節区切り候補として採用し、脱げとを3番めの文節として選定する。また、これですべての入力の解析が終わったので、最後の文節候補の「書いてある」を選定し、終了する。

ひとつ、注目したいのは、「履物を」の候補を選定したときは「脱げとか」だった文節候補が「脱げと」のように短く区切り直されたことだ。2文節最長一致法の場合は、ひとまず2文節の長さがいちばん長い区切り方を採用し、前半の文節はその時点で変換済みとなるが、後半の候補は次の解析で区切りが変わる可能性がある。

以上をまとめると次のようになる。

  1. 2文節の長さがもっとも長いものを見つけ、
  2. 中でも後ろの文節が長い候補を採用、
  3. 前の文節は変換済みとして選定、
  4. 後ろの文節は、次の解析の先頭文節となる。
  5. 1〜4を繰り返し、最終文節を選定、終了する。

なお、それぞれの文節を変換済みとして選定して時点で、同音語候補(リスト)はすでに作られている。こうした一連の解析を形態素解析というが、形態素解析には文節区切りとともに、同音語候補作成までが一連の作業として含まれている。

3文節最長一致法の場合は、先頭から3文節目までの長さがもっとも長いものを採用する。そのときも3文節のうち先頭の文節を変換済みとして選定し、残る2文節は次の解析へと持ち越すことになる。

言い換えると、n文節最長一致法は、解析結果を木構造の形で保存しておき、

  1. 解析を進めるたびにそれぞれの枝を先に伸ばし、
  2. 木構造の深さがあるレベルに達したら、いちばん根に近いところで1つの枝だけを残してほかを捨てる

という操作をくり返すことになる。

枝刈りのときはいちばんもっともらしい枝を残すわけだが、ひょっとしたら正しい枝を捨ててしまうかもしれない。nを大きくすればするほどその可能性は減るが、そのかわり処理コストも増大する。経験的にはn=2でもじゅうぶんな精度が得られるので、あとはコストとの兼ね合いということになる。

最新の情報は不明であるが、ATOKとEGBRIDGEは2文節最長一致法を、VJEは3文節最長一致法を採用しているとみられている(EGBRIDGEは「二文節得点評価法」と称している)。3文節最長一致法を採用出来たのは、近年のメモリー価格低下により、潤沢に使えるようになったことに負うところが大きい。

なお、n文節最長一致法がなぜ正しい文節区切りを行えるかというと、いまのところ経験則という答えしか得られていない。

うしろ向きn文節評価最大法

採用している日本語入力プログラム:Wnn

後ろから順番に解析するのが特徴である。n文節評価最大法は、最長一致法と同じとみてよいが、文節の長さを中心としていくつかに要素について評価値を付け、その大きさがもっとも大きいものを採用するという解析方法を明確に表した。付属語を先に辞書から検索することになり、付属語は自立語に比べて数が少ないので検索が容易になるという利点がある。

詳しくは、よしだともこ著 栗林 博 監修 LUNAの本シリーズ(3)『UNIXの日本語処理がわかる本  最新Wnn活用ガイド』(Internet Archive)の第2章 Wnnのかな漢字変換を参照。

接続コスト最小法(最小コスト法註2

採用している日本語入力プログラム:MS-IME、WX

WXGは「係り受け最小コスト法」と称している。

最小コスト法は、それぞれの語に点数(コスト)を付け、文全体の点数を足し算し、その数値がもっとも小さいもの、すなわちコストが最小のものを採用する方法である。

最小コスト法のルーツには、「文節数最小法」という解析方法がある。文節数最小法は、文を文節に区切るとき、その文節数がもっとも少ない区切り方を採用しようというものである。そのとき、自立語を1、付属語を0という点数(=重み=コスト)を付け、文全体の和をとり、その数値がもっとも小さいものを正しい区切り方と見做す方法を採る。

最小コスト法は、文節数最小法のコストによって評価する方法を拡張し、単語に点数を付けるだけでなく、文節と文節の結合しやすさと、単語同士の結合しやすさにもを付ける。つまり、(1) 単語コスト(単語そのもののコスト)、(2) 文節間コスト(自立語同士が連接する場合、お互いのくっつきやすさのコスト)、(3) 単語間コスト(ある特定の単語どうしのくっつきやすさのコスト)註1――という3種類のコストを計算し、より精度の高い解析をするものだ。

では、実際のコスト計算はどのように行われるのだろうか。WX開発者の小山さんが解説に使った入力例を引用してみよう註3

入力例:かれはまたかごしまにたった

候補1: 彼   は     / またか / 五指 / 間   に     / たっ た
       名詞 副助詞   副詞     名詞   名詞 格助詞   動詞 助動詞
       1    0        1        1      1    0        1    0
       コスト = 5

候補2: 彼   は     / また / 鹿児島   / 煮立っ た
       名詞 副助詞   名詞   固有名詞   動詞   助動詞
       1    0        1      1          1      0
       「鹿児島」「煮立っ」 の文節間コスト[固有名詞-動詞] = α
       コスト = 4 + α

候補3: 彼   は     / また / 鹿児島   に     / 発っ た
       名詞 副助詞   名詞   固有名詞 格助詞   動詞 助動詞
       1    0        1      1        0        1    0
       「に」「発っ」 の単語間コスト[格助詞(に)-動詞] = β
       コスト = 4 + β

 文節数最小法の場合は、α=β=0で、候補2と候補3が採択される。
 最小コスト法の場合は、5>4+α>4+βになるよう設定してあり、
 候補3が採択される。
		

このように、単語コストの計算では同じコストになってしまう場合でも、より正しい文節区切りを提示することが可能になる。また、文節を区切る段階で、ある程度文節間、単語間の係り受けを意識しているといえる。

ただし、現実には、あらゆる文節間コストや単語間コストを設定するのは困難であり、もっとも誤変換が少なく、かつ効率的な変換ができるコストに調整するさじ加減が求められる。

MS-IME2000(以降)は、この最小コスト法をさらに発展させ、前からだけでなく、後ろからも計算する。また、コストが最小のものからN個を提示するN-best手法を組み合わせたことによって、文節が異なる候補を同時に示せる註4

文節数が最も少ないというのは、裏返せばそれぞれの文節が長いということになり、その意味ではn文節最長一致法と根本では同じ考え方といえそうだ。n文節最長一致法との違いは、最長一致法が前から順番に選定していくのに対し、最小コスト法が数値化によって文全体のコストを計算するという点にある。最小コスト法は、うまくいくと複雑な文章でもきれいに変換できるという利点があるが、重み付けのさじ加減が微妙で難しいという欠点がある。最長一致法は、あくまで前から(うしろ向きの場合、後ろから)順番に分析するので、文全体をみていないという欠点がある。しかし、変換するに当たって行うべき処理が少なく、原理的に高速である利点がある。また、文全体を取り込まないと解析できない最小コスト法が、処理に係る時間が指数関数的に(2乗3乗……的に)処理に掛かる時間が増えるのに対し、最長一致法は前から順番に選定するので、入力の長さにほぼ比例した時間で解析を行うことが可能である註6。さらに、前から順番に解析を行うことから、辞書の先読み(入力のつど辞書を読みに行く)がより有効に働くと思われる。

これらの利点・欠点を比較し、各日本語入力プログラムの開発元は変換ロジックを採用しているのだろうが、現在ではお互いの手法で取りこめるところは取り込んで、変換精度の向上を図っていると思われる。

参考文献・資料

この項もほかの項目同様に、太田純さんのご厚意によるところが大きいです(というか、太田純さんの投稿を阿部がまとめ直しただけというのが実際のところです)。


作成日:2002年 9月 16日 (月) 更新日:2009年7月16日 木曜日