情報アクセスと知的処理

自然言語処理の基盤技術

本日のゴール

自然言語処理

言語の階層性

言葉の「意味」

コンピュータが知的になり、 検索質問や検索対象の文書などの「意味」を理解できるようになれば、 検索精度が向上するはず。

自然言語の「意味」は階層的に成り立っていて、それぞれの階層が言語学の一分野となっている。

階層 言語学の理論 扱う現象
言葉の使われ方 語用論 試験前に言う「勉強してない」
意味 意味論 「私はパンを食べる」私=食べる人, パン=食べられるもの
構文 統語論 文型、修飾・被修飾
語彙 形態論 単語、品詞、活用する語の活用型・活用形
音韻論 母音・子音、音便

言語の階層性と言語学

音韻論

音声認識をするシステムが増えつつある。 カーナビは声で指示ができるし、 スマートフォンやスマートスピーカは音声で指示ができるようになっている。

音は物理的には連続的に変化しているものであるが、 人間は母音・子音といった単位で認識している。 このような最も小さな音の単位を音素 (phoneme) という。

言語の階層性と言語学

形態論

意味を持つ表現の最小単位は形態素 (morpheme) と呼ばれる。 単語 = 形態素のことが多いが、 日本語の活用語尾(接辞)、英語の三単現の s や過去形の ed など、単語より小さいものも形態素となる。

言語の階層性と言語学

統語論

統語論 (syntax) とは、語あるいは形態素がどうやって句 (phrase) や文 (sentence) を構成するかという理論。 つまり、いわゆる文法のこと。

ガ、ヲ、ニ、デ、カラ、ヨリといった助詞を格助詞という。 どんな格助詞が使えるかは動詞による。

私が太郎に花子を紹介した。

「紹介する」はガ、ヲ、ニのすべての格をとる動詞である。 「紹介する」という動作にこれらは必須の情報であるので、 ガ、ヲ、ニによって表される格を必須格という。 一方、「掲示板で」といったデ格は必須ではない。

言語の階層性と言語学

意味論

意味論 (semantics) は、記号と概念との関係などについての理論である。

動作を表す動詞を動作動詞という。 動作動詞であれば、ガ格の格要素(助詞ガの直前の要素)は動作主(どうさぬし)である。 この「動作主」は意味役割 (semantic role) と呼ばれる。

言語の階層性と言語学

語用論

語用論とは語の使われ方に関する理論で、発話状況や文脈に依存する。

Grice の協調の原理 (会話の公準) は知っておくとよい。

日本語の基本構造

あの子は皆に可愛がられているでしょうか。

形態素解析 - 形態素とは

言葉の意味を解析するにあたって、まず文字列を単語(word)の列として認識する必要がある。 単語が取り出せれば、それが検索システムにおける索引語の候補となる。

単語を取り出す処理は、語形の変化に対応する必要があるため単純ではない。 例えば英語では、play, plays, played は同じ play という単語であるが、語尾が変化している。 あるいは日本語では、動詞や形容詞といった用言が活用をする。

言語学では形態素(morpheme)が意味を持つ最小の単位とされており、 単語はさらに形態素に分割することができる。 例えば、plays は play + s に、played は play + ed に分割できる。

形態素解析

形態素解析では最小の単位まで分割するが、それが索引語として最適であるとは限らない。 複合語は複合したまま扱うのがよい場合もある。 例えば、「情報検索」は「情報」と「検索」に分割すべきだろうか。

統語解析

The girl saw the boy with the telescope.

この文は、"with the telescope" が saw に係るか the boy に係るかで意味が異なる。

大きな黒い瞳の女の子

「大きな」「黒い」「瞳の」「女の」、これらはすべて名詞にかかることができる。 名詞としては「瞳」「女」「子」の3つがあるので、様々な係り受け構造が考えられる。

「黒い」が「瞳」以外に係る可能性は、「瞳の女の子」では意味が通らない以上、存在しない。 ただし、「瞳の女の子」は文法的には正しいので、統語解析で排除することはできない。 意味を扱う必要がある。

「頭痛が痛い」も文法的には問題のない表現である。

コンパイルが通ったからといって正しいプログラムとは言えないことと似ている。 文法的に正しいことは必要条件であって、十分条件ではない。

述語項構造解析 (意味解析の一種)

更新されていないものが多い。

曖昧性の扱い

「瞳の女の子」は文法的には正しいので統語解析では残るが、 その上位の意味解析の段階で排除される。

"with the telescope" の場合は意味を解析しても曖昧性が残るが、 その上位の語用論的な分析では、文脈からどちらかに意味が定まるかもしれない。

言語処理フレームワーク

いろいろな階層の言語処理が可能なフレームワーク/ツールキットが提供されている。 ただ、日本語に対応するとは限らない。

言語は Python (Stanford CoreNLP のみ Java)

Java で形態素解析

Java で書かれたプログラムから形態素解析をしたい場合、 Java で書かれている形態素解析器が利用しやすい。