言語商会

日本語の自然言語処理は難しいか?

ここでは、自然言語処理の対象言語として日本語が難しいかどうか、 つまり、英語や中国語、その他の言語と日本語はどちらが処理しやすいかについて考えます。

言語学習の難しさと言語処理の難しさは異なる

まず、すぐに分かると思いますが、外国語として習得するのが難しいある言語があったとして、 その言語の自然言語処理も難しいということはありません。その逆(言語処理が難しいから 言語学習も難しい)も成り立ちません。つまり、両者はほとんど関係ありません。

これは人間とコンピューターの得意・不得意が違うからです。

日本語は文字コードが面倒、文字化けする

確かに文字コードの心配がない英語から比べれば面倒ですが、 Unicode時代に入ってからはあまり気にならなくなってきました。

日本語は英語のように分かち書きされていないから難しい

これもよく言われます。英語は分かち書き(単語と単語の間に空白を入れる)しているから簡単だ、 日本語は単語分割が必要で難しいという意見です。

これについてはある程度正しいですが、下記に注意が必要です。以下、空白で区切られた文字列の塊をトークンと呼びます。

  • 英語の空白はだいたい単語区切り(つまり1トークン=1単語)だが、例外もある。
    • 例:New York は2トークンで1単語
    • 例:isn't は1トークンで is と not の2単語
  • 韓国語は分かち書きする言語だが、英語よりさらにややこしい。
    • 場合によっては、2トークンが1.5トークン+0.5トークンみたいな感じになる時がある。
    • しかも、空白の入れ方に個人差があり、揺れる場合がある。

以上まとめると、分かち書きする言語は必ずしも簡単とは限りません。日本語、韓国語、中国語、英語で 比べると、単語分割が難しいのは難しい順に、中国語、韓国語、日本語、英語の順だと思います。

日本語の形態素解析は難しい

いえ、これも比較の問題で、簡単な側面と難しい側面があります。 日本語の形態素解析は研究が進んでいてすでにツール化されているのでそういう意味では簡単ですが、 ここではそもそも日本語の形態素解析が課題として難しいかどうかを考えます。

俶刧しい吝嗷は堊寐っぽく彜れてしまった。

この文、たぶん意味が分かる方はいないと思いますが、「俶刧しい」が形容詞で、 「吝嗷」は名詞、「堊寐っぽく」は副詞(または形容詞の連用形)、 「彜れて」は動詞なのが容易に分かると思います。 日本語には活用と助詞があるために、意味が全く分からなくても単語の区切りや 品詞は容易に分かります。これが英語になるとそうはいきません。

Sprintle flod megly bkraws tiwaglate.

例えば上の文のどれが動詞でどれが名詞なのかは(いくつか可能性は列挙できますが) 特定することはできません。 このように、日本語の形態素解析のうち品詞付与は比較的簡単で、機械で処理しても 間違うことはあまりありません。

(ちなみに、上記の日本語も英語もすべて架空の単語です)

日本語は省略が多いから難しい

これは確かに難しい部分があります。一番困るのは主語の省略で、

「うちのおじいちゃんこの前入院してさ」
「そりゃ大変だ。大丈夫?」

みたいな例文で「大丈夫?」の主語は誰が読んでもおじいちゃんですが、コンピューターはこれが理解できず、 例えば英語に翻訳すると “Are you all right?” になってしまいます。こういった省略の補完は 研究課題にもなっていていくつかの研究成果はありますが、まだ機械翻訳などで実用段階には入っていないのが現状です。

さて、これが他の言語と比べてどうかと言えば、例えば韓国語では日本語と同程度に省略がありますし、 英語は省略が少ないかわりに代名詞や代動詞(do)が多用されるので全く何もない日本語から見れば楽ですが、 あまり問題の難しさは変わっていない気もします。

日本語は語順が自由だから難しい

これはある程度正しいです。

情報処理の観点で言えばちょうど順列と組み合わせの関係に相当し、順列が決まっていると組み合わせの数は 減るので処理しやすくなります。例えば構文解析を行う時に日本語は語順の自由度が高いので英語よりも 構文規則をたくさん作らなければならず、一般に複雑になります。

ただ、他の言語と比べるとまた少し話が変わり、例えば韓国語は日本語と同様の語順の自由度がありますので、 この面での処理の難しさは全く同じです。中国語は日本語・韓国語と英語の中間ぐらいの自由度なので、 語順の多様さという意味では両者の中間ぐらいだと思います。

日本語は話者が少ない/データが少ない/研究者が少ないから研究が遅れている

いえ、そんなこともありません。確かに英語よりは言語資源も研究者も少ないですが、 日本語はかなり大きな言語あるいは重要な言語で、例えば言語の経済力を見ると英語、中国語に次ぐ3位です(下記参照)。

私の印象では、研究者の数、データの豊富さ共にだいたい上記ランキングの順序になっている気がするので、 日本語はかなり恵まれた環境にあり、また研究の進んでいる言語です。

ちなみに、私の印象では世界でまともに自然言語処理ができるのは10言語ぐらいで、 それ以外の言語はコーパスもほとんどない、研究者もほとんどいない、形態素解析器もない という言語が多いです。教員時代に Tigrinya という言語(知っていますか?)の言語処理をやりましたが、 ほぼ何もない状態からのスタートでした。

まとめ

日本語の自然言語処理は難しい側面も易しい側面もあります。 言語そのものの難しさの他に言語資源の整備など社会的な側面も含めて総合的に考えれば、 英語処理よりは難しいがその次ぐらいに易しい、あるいは環境が整備されている言語だと思います。

 (感想・要望・情報提供)