自然言語(日本語)処理

トップページ研究分野と周辺

英語、日本語のように人間が自然発生的に使って来た言語を自然言語という。これに対し、プログラミング言語等の規則に基づく人工言語を形式言語と呼んで区別する。
日本語をコンピュータで処理する場合、その最も基本に形態素解析がある。
形態素解析→構文解析→意味解析→文脈解析といった、解析の連鎖(解析精度は左から右に移るに連れて下がる)を経て、ようやく自然言語の意味をコンピュータが処理出来るようになる。勿論、国語辞典や文法の知識、一般常識等をデータベース化しておく必要がある(機械処理の日本語文法)。
しかし、自然言語は生き物のように変化し、常に新しい言葉、新しい用法も生まれ、一つの言葉が多数の意味を持ったり、その意味が変化したりしている。
人間も実は、言語情報を完全に処理している訳ではなく、多数の解釈の中から最も「妥当な」解釈を判断していると言われる。その「妥当性」をコンピュータに実装するのは難しい。
自然言語処理の難しさの根本原因は、自然言語が本質的に持ち、多様な解釈を可能とする「曖昧さ」にあるとされる。

形態素解析

英語のように、単語間にスペースがある言語と違い、日本語はひらがな、カタカナと漢字等が平等に一文字ずつ並ぶ構造になっている。
従って、日本語処理の第一段階は、入力文字列を(簡単に言えば)単語に切り分ける作業となり、これを形態素解析という(形態素解析の方法)。
入力文字列は、既に漢字やカタカナに変換されている場合もあるだろうし、キーボードからの情報であれば、ひらがなで代表される発音の列であるかもしれない。
PCや携帯端末の入力の変換操作で、ひらがなの列を漢字混じり文に置き換える「かな漢字変換」には、当然ながら形態素解析が使われ、我々は毎日のようにこの技術を使っている。
代表的な日本語形態素解析ツール「茶筅(ちゃせん)」に、「高い富士山と海が美しい」を入力すると、以下のような出力になった。

単語ごとに改行して出力される。読みの他、形容詞・名詞・助詞等の品詞区分(さらに一般名詞か固有名詞か等の細かい区分も)、形容詞の場合は活用に関する情報も付く。
なお、「形態素」の概念は概ね単語だが、厳密には「意味を持つ最小単位」で、例えば「自然言語処理」等の複合単語を入力すると「自然」「言語」「処理」に分割される。

構文解析

日本語処理の第二段階は、構文解析だ。文を構成する全ての単語の位置関係(掛り受け等)を決める。この例文では例えば、以下の二つが考えられる。

日本語に慣れている人は、すぐ左が正しいと分かる。しかし、構文解析の段階では、両者とも正しいものとして出力される。
左右の違いは、「高い」という形容詞が、富士山にのみに掛っているか、富士山と海の両方に掛っているかだ。
構文解析の段階では、簡単な文法規則、例えば「形容詞は名詞を修飾し、形容詞+名詞は名詞句になる」といった規則にのみ基づき処理するので、双方とも正しいとみなされる。
これを数式のように、((高い富士山)と海)が美しい、(高い(富士山と海))が美しい、と括弧によって構文を表現する事も出来る。
このように入れ子の括弧で表される関係は階層的な樹形図でも表現出来、それを構文木という(日本語は適切な単語の並びにより、殆ど全ての場合を構文木で表現出来る事が知られ、これを非交差条件という)。
人間がすぐに左が正しいと分かるのは、瞬時に意味解析まで行なってしまうからだ。
なお、構文解析は統語解析、係り受け解析等とも呼ばれる。

構文解析の方法

意味解析

「高い富士山」とは言うが、「高い海」とは(普通は)言わない。こういう知識があるから、人間は正しい構文木を選択する事が出来る。
「高い」という形容詞の意味を知っていて、それが海には用いられないという事が分かる。このように意味を利用して構文木を選択する事を意味解析という。
以下は、意味解析の説明によく使われる例文だ。

望遠鏡を使って泳ぐ人はいないから、すぐに右が正しいと分かる。しかし、構文解析の簡単な文法では、両者とも正しいものとして出力される。
意味解析は構文木を選択するだけではなく、構文木が決定した場合でも残っている事がある単語の「多義性解消」も含まれる。
よく出る例として「やった」という単語(動詞)は、例えば「行なった」と「(誰かに)与えた」の二つの意味を持つ。
「宿題をやった」の場合は前者の意味、「本をやった」の場合は後者の意味である事を判断するのも、意味解析という事になる。
意味解析には、代表的な概念関係を定義した概念辞書等を用いて判定が行なわれる。

文脈解析

構文解析が文単位で行なわれるのに対し、複数の文にまたがる構文木作成+意味解析を行なうのが文脈解析となる。
文脈解析は長い文脈に即して行なう必要があるため、単独文の意味解析よりはさらに複雑となる。
例えば、平仮名で「たいしょう」と入力された場合、「対象」「大将」「隊商」等、様々な名詞が構文解析上は該当する場合でも、その文脈で語られる内容から、最も妥当な変換候補を出力する技術は、既に、かな漢字変換にも或る程度、取り入れられている。
さらに、代名詞の指す対象等を推定したり、省略された名詞等を推定する照応解析も、文脈解析に含まれる。例えば以下のような例が該当する。

左は代名詞「それ」の指す対象の推定で、構文解析上はどちらも正解だが、意味解析を行なうと「本棚を手に取る」とは言わないので、「本を手に取った」という構文が選択される。
右は日本語に多いと言われる主語省略の例で、構文解析上はどちらが主語でもよいが、「窓が手を振る」訳はないので、意味解析により「彼が手を振った」が選択される。