NLP Introduction based on Project Next NLP
PyData.Tokyo オーガナイザーの山本(@kaita)です。
最初の講演は、ニューヨーク大学研究准教授の関根聡先生に「NLP Introduction based on Project Next NLP」(日本語訳:「Project Next NLPを通じた自然言語処理技術の紹介」)と題し、講演いただきました。なお、先生は自然言語処理技術において、特に情報抽出、言語的知識獲得、固有表現抽出、および言語解析、質問応答、要約などの研究での第一人者です。また、最近まで楽天技術研究所ニューヨークの所長も勤めておられてました。また、言語処理に関する各種サービスを展開する株式会社ランゲージ・クラフト研究所も運営されています。
今回先生にはPythonのハッカーたちに対して、講演を通じて自然言語処理の基礎技術を網羅的に紹介いただくと同時に、先生が自然言語処理に関係する研究者や開発者と立ち上げられたProject Next NLPが実施している、自然言語処理におけるエラー分析ワークショップで得られた知見について紹介いただきました。
同講演を通じて、現状の自然言語処理技術を深く知ることができました。自然言語処理技術の現状と課題および具体的な課題に対する取り組み例について、講演資料をベースにして紹介します。
自然言語処理技術におけるエラー解析の重要性について
自然言語処理技術とは、人が日常的に利用する自然言語をコンピュータに処理させる一連の技術のことです。同技術を利用したアプリケーションの例としては、例えば日本語入力、機械翻訳や情報検索などが挙げられます。これらのアプリケーション例からも分かる通り、自然言語処理は至る所で利用されている、現在の社会で欠かすことができない技術です。
しかし、同技術は幅広く利用されているにもかかわらず、アプリケーションの処理結果にはさまざまな「エラー」が含まれています。例えば、日本語入力ソフトは、ユーザの意図する文字列をコンピュータに伝える役割を果たすための機能を有しますが、最近の日本語入力ソフトは賢くなってきたとはいえ、まだ変換エラーなしで変換することはできません。
また、別の例として、機械翻訳アプリケーションはどうでしょうか。機械翻訳アプリケーションを利用すれば、世界中で利用されている多くの言語に文章を即時に翻訳できます。しかし、現状のどの機械翻訳アプリケーションを利用しても、訳した文章中には誤訳が含まれたり、人が不自然に感じるような文章が生成されてしまいます。
このように、自然言語処理を利用したアプリケーションでは、アプリケーションの種類にもよりますが一般的に処理結果には多くのエラーが含まれます。これらのエラーはアプリケーションを利用するユーザの生産性にダイレクトに関わってきます。よって自然言語処理技術に関するエラー、特に本質的なエラーがどこにあるか、また、それらのエラーの改善手法を把握できることができれば、ユーザに多大なメリットを与えることが容易に想像できます。
Project Next NLPとは
Project Next NLPとは、自然言語処理を構成する技術に対して、エラー分析を行うことによって、本質的にどこに課題があるかを明確化することを目標とするプロジェクトです。現在、国内における自然言語処理の研究者や開発者が活発に関わっており、成果などを発表するワークショップなどが活発に行われております。
同プロジェクトでは、自然言語処理でメジャーだと思われる技術について、基礎技術、要素技術、応用技術の3つに分類した上で、18の技術に対してエラー分析を行っているとのことです。
具体的なタスクの例
ここではProject Next NLPで実際に分析が行われているエラー分析の例について、関根先生のスライドをもとに紹介します。
形態素解析におけるエラー分析
形態素解析とは自然言語で書かれた文を単語の列に分割し、それぞれの品詞を判別する作業のことを指します。例えば、形態素解析器に「東京都になったのはいつ」という文章を通すことによって、「東京都/に/なった/の/いつ」と文を単語に区切った上で、「東京都」→名詞、「に」→接続詞などの品詞情報を得ることができます。
これらの推定は、通常は統計的な手法を利用することが一般的です。すなわち、何らかの辞書データを利用して日本語ではどのような単語や品詞が結び付きやすいか、また、どの単語や品詞がどれくらいの頻度で現れるかを事前に計算した上で、それらデータを用いて形態素解析を実施します。
ただし、これら手法については辞書にあらかじめ単語が登録されていることが前提です。しかしながら、言葉は常に生み出し続けられていることから、未知語が文章中に混じった場合、精度が大変落ちてしまうことが有名です。
そこで、同タスクに対するエラー分析では、あえてすべての未知語をすべて辞書に登録した上で、解析精度を見ることによって、形態素解析処理における本質的なエラーを分析したそうです。その結果、未知語をすべて登録することによって、解析精度は(70%→90%)に向上したことから、やはり辞書の品質というものが、形態素解析処理において大変重要であるということは、改めて判明したとのことです。
また、その一方で、未知語をすべて登録したことによって、むしろ処理エラーが発生した例も存在したそうです。
なお、関根先生の講演では、形態素解析以外の技術に関するエラー分析について、それら技術の内容と共に分かりやすく紹介されています。公開されている資料「NLP Introduction based on Project Next NLP (日本語: 20150522)」は、自然言語処理技術の全体像と、それらの課題を把握するために大変よい内容です。ぜひご覧ください。
まとめ
今回の関根先生の講演では、自然言語処理技術の現状を特に「エラー」という観点からお話しいただきました。これによって、我々はPythonistaは自然言語処理技術の全体像をつかむことができました。また、各技術の現状の実現レベルをつかむことができました。
最後に、Project Next NLPでは、引き続きメンバーを募集しているとのことです。自然言語処理に関係する研究や開発にご興味のある方は、同ホームページを通じてコンタクトをとってみるのはいかがでしょうか?