文節をどう区切るか日本語入力プログラムについて考える文節をどう区切るか日本語入力プログラムの歴史は、入力の効率を求める歴史でした。初めは「これはペンです」という文章を入力するにも、「これは」で一度変換し「ペンです」でまた変換する方式(単文節変換)や、「これは」と「ぺんです」の間に文節を区切る指示を与える方式をとっていました。単文節変換や文節ごとに区切り記号を入れる方式から、自動的に文節を区切る連文節変換(複文節変換?)へと進化し、さらには文脈に応じて適切な語を選ぶ用例変換、AI変換が花開き、日本語入力は簡単で効率的になっていきました。このページは、文節を区切る方法について、現行の日本語入力プログラムでよく使われる方式を解説します。用例変換、AI変換は別項にて解説します。している日本語入力プログラム:ATOK、EGBRIDGE、VJEなど。日本語文を先頭から文節に区切り、辞書と照合した時に、文法的に正しいと考えられる候補がいくつがあるが、先頭からn文節目までの合計の長さがもっとも長いものを正しいと見做す方法。「日本語の/この世/うなかいせきについて......」(1)「日本語の/このような/かいせきについて......」(2)と区切っていき、(2)の方が長いので(2)を正しいと見做し、「日本語の」を変換済み候補とする。次に、「日本語の」を除いて「このような」から同様の作業を「このような/解析に/ついてまったく......」(3)「解析に/ついて/まったくちしきが......」(4)「ついて/まったく/ちしきがないのですが」(5)「まったく/知識が/ないのですが」(6)「知識が/ないのですが」(7)というように繰り返し、分析し、最終的に「日本語の/このような/解析に/ついて/まったく/知識が/ないのですが」という結果を得る(この場合、(5)の文例も「ついて/まった/くちしき......」と比較して、長いことが分かる)。次に、各文節の区切りを選定する過程を細かく見てみよう。「ここではきものをぬげとかいてある」を例にする。(「ぬ」が付属語として接続しないので消滅)ここで初めて先頭2文節が次のいずれかであると判明する。「ここで/履物を」or「ここでは着物を」。AI変換などを使わない純粋なn文節最長一致法では、この時点でどちらかの候補を残すこととなる。これまた経験則から、後半の文節が長いものを正しいと見做し、この場合、「ここで履物を」を採用することとなる(AI変換などを併用していると、係り受け情報から違った選択をする可能性もあるが、これは別項(制作中)にて取りあげることとする)。「ここで履物を」という結果が得られた時点で、初めて「ここで」を変換済み候補ということになる。次の解析は「はきものを」から始まることとなる。自立語「い...」ここでは「履物を/脱げとか/を文節区切り候補として採用し、「履物を」を2番めの文節として選定する。次に「ぬげとか」で始まる文字列を解析する。「脱げ+とか」+「鋳て+ある」ここで入力が尽きたので最終文節の末尾が選定され、後半の文節が長いほうを選ぶというルールから、「脱げと/書いてある/」を文節区切り候補として採用し、脱げとを3番めの文節として選定する。これですべての入力の解析が終わったので、最後の文節候補の「書いてある」を選定し、終了する。ひとつ、注目したいのは、「履物を」の候補を選定したときは「脱げとか」だった文節候補が「脱げと」のように短く区切り直されたことだ。2文節最長一致法の場合は、ひとまず2文節の長さがいちばん長い区切り方を採用し、前半の文節はその時点で変換済みとなるが、後半の候補は次の解析で区切りが変わる可能性がある。以上をまとめると次のようになる。後ろの文節は、次の解析の先頭文節となる。1〜4を繰り返し、最終文節を選定、終了する。それぞれの文節を変換済みとして選定して時点で、同音語候補(リスト)はすでに作られている。した一連の解析を形態素解析というが、形態素解析には文節区切りとともに、同音語候補作成までが一連の作業として含まれている。3文節最長一致法の場合は、先頭から3文節目までの長さがもっとも長いものを採用する。そのときも3文節のうち先頭の文節を変換済みとして選定し、残る2文節は次の解析へと持ち越すことになる。木構造の深さがあるレベルに達したら、いちばん根に近いところで1つの枝だけを残してほかを捨てるという操作をくり返すことになる。枝刈りのときはいちばんもっともらしい枝を残すわけだが、ひょっとしたら正しい枝を捨ててしまうかもしれない。nを大きくすればするほどその可能性は減るが、そのかわり処理コストも増大する。経験的にはn=2でもじゅうぶんな精度が得られるので、あとはコストとの兼ね合いということになる。3文節最長一致法を採用出来たのは、近年のメモリー価格低下により、潤沢に使えるようになったことに負うところが大きい。n文節最長一致法がなぜ正しい文節区切りを行えるかというと、いまのところ経験則という答えしか得られていない。している日本語入力プログラム:Wnn後ろから順番に解析するのが特徴である。n文節評価最大法は、最長一致法と同じとみてよいが、文節の長さを中心としていくつかに要素について評価値を付け、その大きさがもっとも大きいものを採用するという解析方法を明確に表した。付属語を先に辞書から検索することになり、付属語は自立語に比べて数が少ないので検索が容易になるという利点がある。Wnnのかな漢字変換を参照。接続コスト最小法(最小コスト法註2)採用している日本語入力プログラム:MS-IME、WXWXGは「係り受け最小コスト法」と称している。最小コスト法は、それぞれの語に点数(コスト)を付け、文全体の点数を足し算し、その数値がもっとも小さいもの、すなわちコストが最小のものを採用する方法である。文節数最小法は、文を文節に区切るとき、その文節数がもっとも少ない区切り方を採用しようというものである。そのとき、自立語を1、付属語を0という点数(=重み=コスト)を付け、文全体の和をとり、その数値がもっとも小さいものを正しい区切り方と見做す方法を採る。最小コスト法は、文節数最小法のコストによって評価する方法を拡張し、単語に点数を付けるだけでなく、文節と文節の結合しやすさと、単語同士の結合しやすさにもを付ける。単語間コスト(ある特定の単語どうしのくっつきやすさのコスト)註1——という3種類のコストを計算し、より精度の高い解析をするものだ。実際のコスト計算はどのように行われるのだろうか。WX開発者の小山さんが解説に使った入力例を引用してみよう註3。文節数最小法の場合は、α=β=0で、候補2と候補3が採択される。このように、単語コストの計算では同じコストになってしまう場合でも、より正しい文節区切りを提示することが可能になる。係り受けを意識しているといえる。現実には、あらゆる文節間コストや単語間コストを設定するのは困難であり、もっとも誤変換が少なく、かつ効率的な変換ができるコストに調整するさじ加減が求められる。MS-IME2000(以降)は、この最小コスト法をさらに発展させ、前からだけでなく、後ろからも計算する。コストが最小のものからN個を提示するN-best手法を組み合わせたことによって、文節が異なる候補を同時に示せる註4。文節数が最も少ないというのは、裏返せばそれぞれの文節が長いということになり、その意味ではn文節最長一致法と根本では同じ考え方といえそうだ。n文節最長一致法との違いは、最長一致法が前から順番に選定していくのに対し、最小コスト法が数値化によって文全体のコストを計算するという点にある。最小コスト法は、うまくいくと複雑な文章でもきれいに変換できるという利点があるが、重み付けのさじ加減が微妙で難しいという欠点がある。最長一致法は、あくまで前から(うしろ向きの場合、後ろから)順番に分析するので、文全体をみていないという欠点がある。変換するに当たって行うべき処理が少なく、原理的に高速である利点がある。文全体を取り込まないと解析できない最小コスト法が、処理に係る時間が指数関数的に(2乗3乗......的に)処理に掛かる時間が増えるのに対し、最長一致法は前から順番に選定するので、入力の長さにほぼ比例した時間で解析を行うことが可能である註6。前から順番に解析を行うことから、辞書の先読み(入力のつど辞書を読みに行く)がより有効に働くと思われる。これらの利点・欠点を比較し、各日本語入力プログラムの開発元は変換ロジックを採用しているのだろうが、現在ではお互いの手法で取りこめるところは取り込んで、変換精度の向上を図っていると思われる。接続コスト最小法の略称としては「コスト最小法」がオリジナルとの指摘もあるが、本稿は太田純さんによる商用の日本語入力プログラム開発関係者への取材を基にまとめたものであり、取材時および発表時には「最小コスト法」という言い方が通用していたことを鑑み、その表記を尊重することとする。この記事を執筆する基となる取材時(1990年ごろ)とは異なり、2009年現在ではアルゴリズムの改良により計算速度の向上が図られ、指数関数的に計算処理時間が増えるということはなくなっている。この項もほかの項目同様に、太田純さんのご厚意によるところが大きいです(というか、太田純さんの投稿を阿部がまとめ直しただけというのが実際のところです)。更新日:2009年7月16日。