-
Notifications
You must be signed in to change notification settings - Fork 1
Introduction
人間が日本語や英語のような自然言語で質問し、それに自動的に答える計算機プログラム(質問応答システム) は、特に1946年に最初の計算機ENIACが誕生した後の小説や映画といったフィクションに数多く登場してきました。そして、2011年、計算機プログラムIBMのWatsonが、米国クイズ番組Jeopardy!に挑戦し、人間のクイズ王2名に勝利したため、自然言語の質問に対し、正確にかつ高速に回答できる実用的な計算機プログラムが、より現実的に考えられるようになりました。
参考:Final Jeopardy! and the Future of Watson(日本語字幕) Youtube Video
ところが、現在の多くの人間は、何かを調べたいときにWatsonに質問をせず、GoogleやBingなどの検索エンジンに対し、調べたいものと関連度が高く特徴的なキーワードを入力して得られた文書のランキングから欲しい情報を自分で見つけ出しています。なぜ現在の多くの人間はWatsonではなく手間のかかるGoogleやBingに自分の質問の答えを求めるのでしょう。その理由として、クイズ番組の質問を解くWatsonが解ける質問・回答の形式がかなり限定的であったためだと考えられます。
次は、Ferrucci等の「Building Watson: An Overview of the DeepQA Project」(2011)に例示されている、Watsonが解く質問とAnswer(模範回答)の例です。
Category: General Science
Clue: When hit by electrons, a phosphor gives off
electromagnetic energy in this form.
Answer: Light (or Photons)
Category: Head North
Clue: They’re the two states you could be reentering
if you’re crossing Florida’s northern border.
Answer: Georgia and Alabama
上記の例のAnswerが示すように、Watsonが解いた質問の回答は"Light"のような1つの概念もしくは"Georgia and Alabama"のような数個の概念の列挙で構成されています。クイズ番組の質問なので、概念を回答する質問になることは理解ができますが、実世界の質問ではこのように概念で回答するよりも、Yahoo!知恵袋やQuora、Stack OverflowなどのQ&Aサイトに多くあるように、文や文章で回答することが求められる場面が多く存在します。実世界の質問の多くは明瞭性が高くなく、回答者が質問者の質問の意図を推定する必要があり、砕けた表現が含まれていたり、自然言語だけではなく画像や音声が含まれている場合もあり、求められる回答の書き方も多様に存在するなどの問題があり、概念で答える質問よりはるかに難易度が高いため、現在、そのような実世界の質問に回答するシステムを実現することは学術的に非常にチャレンジングな課題となっております。以上のような背景により、GoogleやBingのようなキーワード検索、クイズの質問に回答するWatsonの先の技術として、実世界の質問に対し、質問の意図を汲んで、適切に回答するシステム 「実世界質問応答システム」の実現が求められ、世界中の研究者によって研究されています。
実世界質問応答システムについての国際的・学術的共有タスクとして、米国National Institute of Standards and Technologyが主催する国際会議TRECのLiveQAタスクと日本国の国立情報学研究所(以下、NII)が主催する国際会議NTCIRのQA Labタスクが存在します。TREC LiveQAタスクでは、Yahoo!知恵袋の英語版のYahoo! Answersの質問と回答を用いて、参加システムに解かせます。参加システムには回答時間に制限を設けられ、短時間で質問に回答することが求められます。回答は人手により0 – unanswered (or unreadable); 1 – poor; 2 – fair; 3 – good; 4 –excellentの五段階評価が与えられます。NTCIR QA Labタスクは、実世界質問応答システムの実現に向けた第一歩として、参加システムは日本国の大学入学試験世界史科目の日本語の問題かその英訳が与えられ、システムが回答することが求められます。 大学入学センター試験と二次試験問題の両方を扱い、二次試験問題に含まれる論述問題(Sample Essay Question)は専門家による評価が与えられます。さらに、実世界質問応答システムの研究に関して、日本国内では、NIIが主催する「ロボットは東大に入れるか」プロジェクト(以下、東ロボ)という日本国の大学入試問題を解く計算機プログラムの研究プロジェクトが存在します。東ロボでは、世界史科目以外の科目にも挑戦している参加者はおりますが、多肢選択問題である大学入試センター試験ではなく自由記述式の東京大学の入試問題に挑戦しているのは、今のところ数学と世界史科目のみです(Academic Conference and Project)。東ロボに対して大手のマスコミからも注目が集まったことや報道のされ方から、大学入学試験を通した「計算機プログラムが人間の知性に勝つのか」というテーマに対し大衆から大きな関心が寄せられているようです(Newscast)。ちなみに、東ロボでは、計算機プログラムの開発のみにとどまらず、世界史論述問題のシステムの解答を紙媒体の解答用紙にロボット・アームで書く「東ロボ手くん」も株式会社デンソーウェーブにより開発されました。
デンソー、解答代筆ロボットアーム「東ロボ手くん」を開発~人工知能が解いた論述式問題の答案を用紙に筆記~(2016年11月15日) [ HTML ]
2015年と2016年の過去2年、二次試験世界史問題を解く質問応答システムは、予備校の東大模試を事前に受けて、東ロボの成果報告会で塾講師による講評結果が発表されました。 東大模試は東大の問題構造に従って、大問が3問あります。第一問は解答に含まなければならない7個〜9個の指定語句と450字〜600字の字数上限が与えられる論述問題、第二問は30文字から120文字の字数上限が与えられる論述問題、第三問は語句記述問題です。この成果報告会に関して、本システムの元になったシステムは、「実世界質問応答システム」の実現を目指し、その第一歩として、東大模試世界史問題の第一問に挑戦しました。 その結果、2015年は駿台予備学校の東大入試実戦模試を受験し、「2013/2014 第2回東大入試実戦模試《世界史》」では28点中4点(このときは、データのラベルノイズにより時間制約が抽出できませんでした)で平均点7.3点(標準偏差4.2)を下回り、「2015/2016 第1回東大入試実戦模試《世界史》」では26点満点で9点で平均点4.3点(標準偏差4.0)を上回りました。2016年は代々木ゼミナールの東大プレを受験し、「2016年第2回代ゼミ東大入試プレ」は20点満点で3点と平均点4.6点を下回りましたがプログラムを数行直すだけで3点落としていたことがわかり、修正後のプログラムで成果報告会当日に別の問題を解いた結果、「2015年第2回代ゼミ東大入試プレ」は20点満点で10点で平均点9.2点を上回りました。試行回数は非常に少ないため断言はできませんが、今のところの結果を見る限りにおいては、 東大模試において人間の受験生の平均点をわずかに上回る性能が自動解答する質問応答システムによって出ていると考えられます。しかし、この先の挑戦として満点を目指したとき、現在のシステムは非常に単純な仕組みで動いており、課題が山積みです。
システムの受験年 | 予備校 | 問題(システムが受験した時系列順) | 満点 | システムの得点 | 人間の受験生の平均点 | 人間の受験生の標準偏差 | 補注 |
---|---|---|---|---|---|---|---|
2015 | 駿台予備学校 | 2013/2014 第2回東大入試実戦模試《世界史》第一問 | 28 | 4 | 7.3 | 4.2 | E1. データにラベルノイズがあったため、時間制約の抽出に失敗 |
2015/2016 第1回東大入試実戦模試《世界史》第一問 | 26 | 9 | 4.3 | 4.0 | E1についてはこれ以降、問題なし | ||
2016 | 代々木ゼミナール | 2016年第2回代ゼミ東大入試プレ世界史第一問 | 20 | 3 | 4.6 | 不明 | E2. プログラムを数行直すだけで6点になった |
2015年第2回代ゼミ東大入試プレ世界史第一問 | 20 | 10 | 9.2 | 不明 | E2はプログラムを修正済み | ||
世界史論述問題を解く質問応答システムは、現在2つ存在します。1つは上記で説明した東大の第一問を解くシステムで、本システムの元になったものです。その他に第二問を解くシステムがあります。第二問を解くシステムは、名古屋大学の佐藤・松崎研究室の髙田拓真さんが開発したものです。両システムとも世界史用語集と教科書を知識源とし、知識源から抜粋された文を解答に埋めていますが、まだ道半ばであり、たくさんの課題が残されています。まず、解答するために必要な抜粋文を知識源から見つけることが難しいです。問題と解答の関係上、問題文は抽象的な単語で書かれており、解答文は具体的な単語で書かれているため、語句の重なりが小さく、問題文からどのような語句が並ぶ文が要求されているのかに壁があります。第一問は指定語句があるのでそれを含む文を抜粋できますが、それでも解答に求められる内容を含む文の中には指定語句を含まないものが存在します。そのため、システムは問題の意図を把握する必要があります。 次に、解答に欲しい抜粋文は、基本的に解答の表現としては冗長で、字数制約があるため、文内の不要な情報を削る必要があります。 ところが、文内のどの箇所が解答として不要かという判定は難しく、さらに文から単純に不要箇所を削除すると、ほとんどの場合、非文になってしまいます。そして、問われている事物が主体として書かれていないが指している内容は解答として適切な場合は、主格を交代する必要がありますが、格を交代する技術はまだ完成されておりません。 さらに、第一問は制限字数が450字から600字と多く、1文ではなく複数文で解答します。従って、論述的な文章構成になっているのか、読みやすいか、そのために文をどのように並べ、どのように繋げれば良いのか、といった文内を超える大局的な問題が発生します。以上のような問題はまだほとんどが解決されておらず、世界史論述問題を解く質問応答システムの実現の課題は山積みです。これに加えて、論述問題の解答の評価システムや評価システムの評価の研究もチャレンジングであり(Evaluation)、研究の余地はとても広大です(Future Work)。
論述問題を解く質問応答システムの実現及び評価システムには、まだ多くの課題が山積みの状況ですが、これらの課題に挑戦するには、研究段階に達する前の準備にも課題があります。まず、データを作成したり、データに関わるライセンスの問題を解決したりするのに膨大な時間とお金がかかります。これは、国際会議NTCIRのQA Labタスクに参加することで入手できます(Knowledge Source、QA Corpus)。ただし、QA Labタスクで配布される論述問題は大量にあるわけではなく百問程度であるため、機械学習的・統計的なアプローチが取りづらいという問題があります。横浜国立大学の森研究室は、市販されている論述問題集を大量に電子化しており、千数百問保有していますが、部外者が研究目的で使用できるためには出版社に問い合わせをする必要があります。次に、一からベースラインシステムを開発することが難しいです。特に質問応答システムは、あらゆる要素技術を組み合わせて開発されるため開発コストが高いです。このような研究課題に興味がある人がベースラインシステムの開発に時間をかけずに済むように、私は本システムをオープンソースで公開しました。最後に、論述問題の解答の評価は非常に難しく、専門家に採点・講評・質問への回答をお願いする必要が発生します。QA Labタスクに参加すると、専門家が作成したナゲット(模範解答に含まれる命題)のリストが得られ、ナゲットがシステムの解答に含意しているかを判定することで一般人であっても比較的評価しやすくなっています。 このように、研究を進める上での課題も解決していく必要があります。
本システムの入力データのデータ構造は、QA Labタスクで使用されているデータを改良して作成しました(System Input)。出力は、本システムの解答を入力データに加えたものを出力します。自動評価プログラムによる評価結果も出力され、プログラムの終了時にウェブブラウザ上に自動的に表示されます。このようにすることで、他の作業をしていても突然画面に評価結果が表示されるため、プログラムが終了したことに楽に気がつけます。 過去の解答結果・評価結果についてもタイムスタンプつきで保存され、ウェブブラウザ上に表示された評価結果のページから楽にたどれます(System Output)。
HISTORYをクリックすると
本システムは、Watsonでも使用されている非構造化情報処理のためのフレームワークApache UIMA(以下、UIMA)を使用して開発しました。UIMAは、オンメモリの木構造データベースCASを使用しメモリ上のデータを管理します。CASのデータ構造はtype system descriptorによって定義されます(UIMA Type System)。処理に汎用性を持たせ再利用性を高めるために処理をcomponentに分け、各componentをdescriptorに定義し、各componentのconfiguration parameterも定義します(UIMA Component)。どの順番でcomponentに処理させるかというpipelineもdescriptorに定義します。このように、UIMAは、非常に設計主義的・宣言的なフレームワークでトップダウンな開発に適しており、特に上流工程と下流工程に分けられる開発プロジェクトには最適です。一方で、研究活動や一人で開発するときのように、何回も細かい修正をしながらon-the-flyで開発する際は、UIMAを使用すると修正箇所が増えてしまうといった欠点があります。UIMAには、pipeline上のcomponentの使用や順番を実行時に管理するflow controllerという機構(Pipeline)や中間状態を永続化させる機構が内蔵されています(Intermediate State Management)。様々なプログラミング言語にも中間状態をインスタンスごと永続化させるためのserializerが存在しますが、UIMAではメモリ上のデータの構造が定義されているため、データのみを永続化させることができます。flow controllerや中間状態管理を組み合わせることで、一度pipelineの最初から最後までの処理を実行させた後であれば途中から途中までを実行させることができるようになります(How to Run)。質問応答システムのように時間のかかる処理が何個も直列に繋がるプログラムの開発・改良作業では、pipelineの途中から途中までを実行させることできれば開発時間を大幅に減らすことができます。UIMAを導入することに一長一短はありますが、今回は特にpipeline管理・中間状態管理のしやすさから本システムに採用しました。componentを他のシステムで再利用することは考えていないため、componentのconfiguration parameterはcomponent descriptorで管理しておりません(Configuration Parameter)。
本システムのインストールには、Java SE Development Kit、プログラミング言語Scala、依存関係管理・ビルドツールsbt、日本語形態素解析器MeCabとMeCab用辞書UniDic及び検索エンジンIndriをインストールする必要があります。MeCabとIndriはプロセスを介して実行します。Windowsのコマンドプロンプトには非対応です。(Install Guide)
本システムは、自由に使用していただけるようApache License 2.0で公開します(License)。サポートは多忙につき完全にできると断言できませんが、できる限りします(Support)。論述問題を解く質問応答システムの実現、そしてその先の実世界質問応答システムの実現に向けて課題は山積みですが、本システムが皆様の中のどなたかの新たな挑戦に少しでも役に立ってくれたら幸いです。