中国語は日本語と同じく、単語と単語の間にスペースを含まない、分かち書きをしない言語です。そのため、そのテキストに対して何らかの処理を行おうとした場合、まずはそのテキストから単語などを抽出し、前後の文脈、単語などを参照するなどして品詞を確定する必要が生じます。ここでは、中国の自然言語処理関連の書籍によく出てくる最長一致法による単語分割の仕組みとその問題点を紹介しますが、これは筆者のメモ書きに近いものできちんと整理されていません。悪しからずご了承下さい。
中国語の単語分割を行う際に使われるアルゴリズムで、最も単純なものが最長一致法です。文章の先頭から単語の長さを基準に機械的に切っていく手法です。具体例を見ていきましょう。
人民币国際化还有多远
こういう新聞の見出しがあったとしましょう。単語分割処理では、まず文章のはじめの一文字「人」を切り出して、この「人」と言う漢字からはじまる単語を辞書ファイルから検索します。そして、その単語が処理対象文に含まれているかどうかを確認していくのです。「人」という漢字を先頭に持つ単語は多数ありますが、この文章に含まれている単語となるとそう多くはありません。「人民」と「人民幣」です。どちらを選択するかは「単語長が長いものを優先する」という判断基準に従います。「人民幣」が切り出されると、次は「国」を検索語句にして辞書を検索し、以下、文末まで同様の処理を繰り返します。処理が終わると上の文章は次のように分割されます。
人民币/国際化/还有/多/远
処理をより簡単に行うために、辞書内部を降順でソートしておくと便利だと思います。
この例文では最長一致法で正しい単語分割が出来ましたが、これはたまたまです。最長一致法は機械的な方法なので、次の例文のように期待した結果がかえってこないこともあります。
処理前:你把手抬高一点儿 処理後:你/把手/抬高/一点儿
問題は「把手」です。たしかに「把手」という名詞は存在しますが、この文章では介詞の「把」と名詞の「手」に分割するのが正解です。単語の長さしか判断基準がないため、最長一致法ではこの文章を正しく分割することが出来ないのです。
この「把手」の様な単語を中国語で「岐义」とか「岐义词」と言います(あいまい性)。「岐义词」には「真岐义」と「伪岐义」の2種類があり、「把手」のようにもともと分割の仕方が二通り以上あるものを「真岐义」、最長一致法を採用したがために発生する「岐义词」を「伪岐义」と言います。次の例文を見てください。
処理前:欧盟在世界中扮演的角色 処理後:欧盟/在世/界/中/扮演/的/角色
「欧盟/在/世界/中/扮演/的/角色」と分割しなければいけないのですが、最長一致法で機械的に分割したために、「在世」のところで切ってしまっています。このように最長一致法を採用したために発生する岐義語を「伪岐义」と呼び、「把手」のように文法的な判断が必要となる岐義語を「真岐义」と呼びます。
岐義語は中国語の文章に頻繁に出現するので、これをどう処理するかが重要な問題となります。処理時間はかかりますが、前後の文脈(品詞の並び)を参照しながら、文法的に正しい品詞の並びになるように単語を切り出すたびに確かめていく必要があるでしょう。最長一致法は単純なので、実装も簡単ですが、精度は高くありません。
HTMLタグは適用されません。不適切と判断されたコメントはブロックされます。