自然言語処理とは
本記事では、自然言語処理技術を用いた製品を開発するのに、JavaやPerl、Rubyではなく、「なぜ『C++』を採用したか」を紹介する。テーマとして「自然言語処理」などというマニアックなものを持ち出してきたのは編集部であるが、意外に面白いところを突いていると思う。
改まって「自然言語処理とは」などというと、ちょっと小難しく聞こえるかもしれない。読者の皆さんが毎日使っているGoogleの検索機能などは、まさに自然言語処理の一分野である「形態素解析」の技術が有効に使われている好例だ。
他には「機械翻訳」という技術もある。Yahoo!をはじめとして大抵の大手ポータルサイトが機械翻訳サービスを提供しているので、活用している方も多いと思う。
ここでは、機械翻訳処理の最初のフェーズで用いられ、また自然言語処理の中でも比較的「枯れた」技術である形態素解析について簡単に説明したい。あわせて製品化するためのプログラミング言語に求められる条件を述べることにしよう。
まず、形態素解析が何をするものかについてのイメージをつかんでもらうために、デモサイトを用意しておいたので、興味のある方は試してみていただきたい。
このデモは日本語の文章を解析するものだが、一般に形態素解析とは、「ある自然言語で書かれた文を、意味のある最小の構成要素に分解する処理」ということができる。「意味のある」というところが重要で、たとえば「僕はコンピュータを愛してる」という文があったとする。「僕」と「は」は良いとして、その次は「コ」だけじゃ意味不明だ。その後に続く「ンピュータ」もますます意味不明になってしまう。つまりこの場合は「コンピュータ」が最小の構成要素になる。ひらたくいえば、形態素解析とは文を「単語」に切り分ける処理である。
機械翻訳の例
ところで英語の場合、ふつう「単語」というと「computer」のような名詞や「love」のような動詞以外にも、「on」のような前置詞などもある。同じように日本語でも「計算機」「愛する」という立派な(?)単語以外にも、「〜を」とか「〜してる」のようなオマケのようなものも単語として扱う。この単語のことを、ちょっと専門的な言葉で「形態素」という。ちなみに、立派な単語のことを「自立語」、オマケ単語のことを「付属語」といったりもする。そのまんまですね。
さて、次に形態素解析処理の最初のフェーズである「辞書引き」の処理を簡単に説明していこう。 次のページ