自然言語処理
テンプレート:出典の明記 テンプレート:Sidebar with heading backgrounds 自然言語処理(しぜんげんごしょり、テンプレート:Lang-en、略称:NLP)は、人間が日常的に使っている自然言語をコンピュータに処理させる一連の技術であり、人工知能と言語学の一分野である。「計算言語学」(computational linguistics)も同じ意味であるが、前者は工学的な視点からの言語処理をさすのに対して、後者は言語学的視点を重視する手法をさす事が多い[1]。データベース内の情報を自然言語に変換したり、自然言語の文章をより形式的な(コンピュータが理解しやすい)表現に変換するといった処理が含まれる。
自然言語の理解をコンピュータにさせることは、自然言語理解とされている。自然言語理解と、自然言語処理の差は、意味を扱うか、扱わないかという説もあったが、最近は数理的な言語解析手法(統計や確率など)が広められた為、パーサ(統語解析器)などが一段と精度や速度が上がり、その意味合いは違ってきている。もともと自然言語の意味論的側面を全く無視して達成できることは非常に限られている。このため、自然言語処理には形態素解析と構文解析、文脈解析、意味解析などをSyntaxなど表層的な観点から解析をする学問であるが、自然言語理解は、意味をどのように理解するかという個々人の理解と推論部分が主な研究の課題になってきており、両者の境界は意思や意図が含まれるかどうかになってきている。
基礎技術
自然言語処理の基礎技術にはさまざまなものがある。自然言語処理はその性格上、扱う言語によって大きく処理の異なる部分がある。現在のところ、日本語を処理する基礎技術としては以下のものが主に研究されている。
処理内容とその限界
理論上、自然言語処理はマンマシンインタフェースの手法として非常に魅力的である。SHRDLUなどの初期のシステムは世界を限定することで非常にうまくいったため、自然言語処理は簡単だという行き過ぎた楽観主義に陥ったが、より現実的な世界では曖昧さや複雑さが増大し、楽観的な見方はなくなっていった。
自然言語理解は、AI完全問題と言われることがある。なぜなら、自然言語理解には世界全体についての知識とそれを操作する能力が必要と思われるためである。「理解; understanding」の定義は、自然言語処理の大きな課題のひとつでもある。
具体的な課題
自然言語処理(理解)における課題をいくつかの例を用いて示す。
- 次の2つの文、
テンプレート:Quotation テンプレート:Quotation
- は表面的な文法構造は同じである。しかし、they が指すものは異なっていて、前者では猿、後者ではバナナとなっている。この例文の場合、theyの指す内容は英語の文型の性質によって決定することができる。すなわち、「they(主語)= hungry(補語)」の関係が成り立ち、補語には主語の性質を示すものがくるので、hungryなのはthe monkeys、したがって、「they = the monkeys」と決まる。後者も同様に、over-ripeというのはthe bananasの性質だから、「they = the bananas」となる。つまり、これらの文章を区別し正しく理解するためには、猿の性質(猿は動物で空腹になる)とバナナの性質(バナナは果物で成熟する)を知っていなければならない。
- 単語の文字列を解釈する方法は様々である。例えば、
- テンプレート:Indent
- という文字列は以下のように様々に解釈できる。
- 典型的には、比喩として、「時間が矢のように素早く過ぎる」と解釈する。
- 「空を飛ぶ昆虫の速度を矢の速度を測るように測定せよ」つまり (You should) time flies as you would (time) an arrow. と解釈する。
- 「矢が空を飛ぶ昆虫の速度を測るように、あなたが空を飛ぶ昆虫の速度を測定せよ」つまり Time flies in the same way that an arrow would (time them). と解釈する。
- 「矢のように空を飛ぶ昆虫の速度を測定せよ」つまり Time those flies that are like arrows と解釈する。
- 「"time-flies"(時バエ)という種類の昆虫は1つの矢を好む」この解釈には集合的な解釈と個別的解釈がありうる。
- 「TIMEという雑誌は、投げると直線的な軌跡を描く」
英語では特に語形変化による語彙の区別をする機能が弱いため、このような問題が大きくなる。
また、英語も含めて、形容詞と名詞の修飾関係の曖昧さもある。例えば、"pretty little girls' school"(かわいい小さな少女の学校)という文字列があるとする。
- その学校は小さいだろうか?
- 少女たちが小さいのだろうか?
- 少女たちがかわいいのだろうか?
- 学校がかわいいのだろうか?
他にも次のような課題がある。
- 形態素解析
- 中国語、日本語、タイ語といった言語は単語のわかち書きをしない。そのため、単語の区切りを特定するのにテキストの解析が必要となり、それは非常に複雑な作業となる。
- 音声における形態素解析
- 音声言語において、文字を表す音は前後の音と混じっているのが普通である。従って音声から文字を切り出すのは、非常に難しい作業となる。さらに、音声言語では単語と単語の区切りも(音としてのみ見れば)定かではなく、文脈や文法や意味といった情報を考慮しないと単語を切り出せない。
- 語義の曖昧性
- 多くの単語は複数の意味を持つ。従って、特定の文脈においてもっともふさわしい意味を選択する必要がある。
- 構文の曖昧性
- 自然言語の文法は曖昧である。1つの文に対応する複数の構文木が存在することも多い。もっとも適切な解釈(構文木)を選択するには、意味的情報や文脈情報を必要とする。
- 不完全な入力や間違った入力
- 主語の省略や代名詞の対応などの問題(照応解析)。音声におけるアクセントのばらつき。文法上の誤りのある文の解析。光学文字認識における誤りの認識など。
- 言語行為
- 文章は文字通りに解釈できない場合がある。例えば "Can you pass the salt?"(塩をとってもらえますか?)という問いに対する答えは、塩を相手に渡すことである。これに "Yes" とだけ答えて何もしないのはよい答えとは言えないが、"No" はむしろありうる答えで、"I'm afraid that I can't see it" はさらによい(塩がどこにあるかわからないとき)。
統計的自然言語処理
統計的自然言語処理は、確率論的あるいは統計学的手法を使って、上述の困難さに何らかの解決策を与えようとするものである。長い文になればなるほど、従来型の自然言語処理では解釈の可能性の組合せが指数関数的に増大していき、処理が困難となる。そのような場合に統計的自然言語処理が効果を発揮する。コーパス言語学やマルコフ連鎖といった手法が使われる。統計的自然言語処理の起源は、人工知能の中でもデータからの学習を研究する分野である機械学習やデータマイニングといった分野である。
自然言語処理の主な応用
自然言語処理の応用技術として、以下のような技術が研究・実用化されている。また、言語学への応用も考えられている。
脚注
関連項目
- 計算言語学
- 形式文法
- 句構造規則
- TREC
- 情報検索
- ロジバン / ログラン
- 会話ボット
- Inform プログラミング言語
- 空想上の万能翻訳機
- 潜在意味解析
- インターグループ
- 英語コーパス学会
- Siri
- しゃべってコンシェル
外部リンク
- 資料
- 言語情報処理ポータル
- Stanford List of Statistical NLP Links
- A comprehensive list of resources, classified by category
- Language Technology Documentation Centre in Finland (FiLT)
- 研究者の団体
- オープン実装
- General Architecture for Text Engineering (GATE) - Javaベース
- Natural Language Toolkit (NLTK) - Pythonベース
- Stanford's JavaNLP toolchain
- OpenNLP
- DELPH-IN: integrated technology for deep language processing
- Natural Language Toolkit
- MARF: Modular Audio Recognition Framework 音声および統計的自然言語処理
- FreeLing: an open source suite of language analyzers