質問応答(QA)は、情報検索と自然言語処理(NLP)の分野におけるコンピュータ科学の一分野であり、人間が自然言語で投げかける質問に自動的に答えるシステムを構築することに関係している。[ 1 ]
質問応答システム(通常はコンピュータプログラム)は、知識や情報の構造化されたデータベース(通常は知識ベース)に問い合わせることで回答を生成する。より一般的には、質問応答システムは、構造化されていない自然言語文書の集合から回答を抽出する。
質問応答システムに使用される自然言語文書コレクションの例としては、参考テキスト、編集されたニュース記事、Wikipediaページ[ 2 ]、その他のワールドワイドウェブページなどがあります。
初期の質問応答システムとしては、BASEBALL [ 3 ]と LUNAR [ 4 ]の 2 つがある。BASEBALLは 1 年間にわたってメジャーリーグベースボールに関する質問に答えた。LUNAR はアポロ月面探査ミッションで持ち帰られた岩石の地質学的分析に関する質問に答えた。どちらの質問応答システムも、それぞれの専門分野で非常に効果的だった。LUNARは 1971 年の月科学会議で実演され、システムの使い方を訓練されていない人から寄せられた専門分野に関する質問の 90% に答えることができた。
その後数年間で、さらに限定されたドメインの質問応答システムが開発された。これらのシステムに共通する特徴は、選択されたドメインの専門家によって手書きされたコアデータベースまたは知識システムを備えていることである。BASEBALLとLUNARの言語機能は、最初のチャットボットプログラムであるELIZAとDOCTORと同様の技術を使用していた。
SHRDLUは、1960年代後半から1970年代初頭にかけてテリー・ウィノグラードによって開発された、成功を収めた質問応答プログラムです。このプログラムは、おもちゃの世界(「ブロックの世界」)におけるロボットの動作をシミュレートし、ロボットに世界の状況について質問できる機能を提供しました。このシステムの強みは、非常に具体的な領域と、コンピュータプログラムに容易に組み込める物理法則を持つ非常にシンプルな世界を選択した点にありました。
1970年代には、より狭い知識領域を対象とした知識ベースが開発されました。これらのエキスパートシステムと連携するために開発された質問応答システムは、特定の知識領域内の質問に対して、より再現性が高く妥当な回答を生成するようになりました。これらのエキスパートシステムは、内部アーキテクチャを除けば、現代の質問応答システムとよく似ています。エキスパートシステムは、専門家によって構築・整理された知識ベースに大きく依存しているのに対し、現代の多くの質問応答システムは、大規模で非構造化された自然言語テキストコーパスの統計処理に依存しています。
1970年代と1980年代には、計算言語学における包括的な理論が発展し、テキスト理解と質問応答に関する意欲的なプロジェクトが数多く開発されました。その一例が、1980年代後半にカリフォルニア大学バークレー校のロバート・ウィレンスキーによって開発されたUnix Consultant(UC)です。このシステムは、 Unixオペレーティングシステムに関する質問に答えるものでした。UCは、そのドメインに関する包括的で手作業で作成された知識ベースを持ち、様々なタイプのユーザーに対応できるよう回答の表現方法を調整することを目指していました。もう一つのプロジェクトは、ドイツのある都市の観光情報に関するテキスト理解システムであるLILOGです。UCとLILOGプロジェクトで開発されたシステムは、単純なデモンストレーションの段階を超えることはありませんでしたが、計算言語学と推論に関する理論の発展に貢献しました。
健康や生命科学向けのEAGLiなど、専門的な自然言語質問応答システムが開発されている。[ 5 ]
近年、質問応答システムは知識の領域を拡大してきました[ 6 ]。例えば、時間的・地理的な質問、定義や用語に関する質問、人物に関する質問、多言語の質問、音声、画像[ 7 ] 、動画[ 8 ]の内容に関する質問に自動的に回答するシステムが開発されています。現在の質問応答研究のトピックには、以下のようなものがあります。
2011年、IBMが開発した質問応答コンピュータシステムであるWatsonは、 Jeopardy!のエキシビションマッチ2回でBrad RutterとKen Jenningsと対戦し、大差で勝利した。[ 17 ] Facebook Researchは、 DrQAシステム[ 18 ]をオープンソースライセンスで公開した。このシステムは、知識ソースとしてWikipediaを使用している。 [ 2 ] deepsetによるオープンソースフレームワークHaystackは、オープンドメインの質問応答と生成型質問応答を組み合わせ、業界のユースケースに合わせて基盤となる言語モデルのドメイン適応をサポートしている。[ 19 ] [ 20 ]
GPT-4 [37]やGemini [38]のような大規模言語モデル(LLM)[36]は、より高度なテキストの理解と生成を可能にする、成功したQAシステムの例です。テキスト、画像、音声などのさまざまなモダリティからの情報を処理および理解できるマルチモーダル[39] QAシステムと組み合わせると、LLMはQAシステムの機能を大幅に向上させます。
質問応答研究は、事実、リスト、定義、方法、理由、仮説、意味的に制約のある質問、異言語間の質問など、幅広い種類の質問に答える方法を開発しようとするものである。
質問応答システムを分類するもう一つの方法は、使用されている技術的なアプローチによるものです。質問応答システムには、以下のような様々な種類があります。
ルールベースシステムは、一連のルールを用いて質問に対する正解を決定します。統計システムは、統計的手法を用いて質問に対する最も可能性の高い答えを見つけ出します。ハイブリッドシステムは、ルールベースと統計的手法を組み合わせたものです。
2001年現在質問応答システムには通常、質問の種類と回答の種類を決定する質問分類モジュールが含まれていました。 [ 22 ]
質問応答システムの種類によって、アーキテクチャが異なります。たとえば、最新のオープン ドメイン質問応答システムでは、リトリーバー リーダー アーキテクチャが使用される場合があります。リトリーバーは、与えられた質問に関連する関連ドキュメントを取得することを目的としており、リーダーは、取得したドキュメントから回答を推論するために使用されます。GPT -3、T5 [ 23 ] 、 BART [ 24 ]などのシステムは、トランスフォーマー ベースのアーキテクチャが大規模なテキスト データを基盤となるパラメータに格納するエンド ツー エンド アーキテクチャを使用しています。このようなモデルは、外部の知識ソースにアクセスすることなく質問に答えることができます。
質問応答は優れた検索コーパスに依存しており、回答を含む文書がなければ、質問応答システムはほとんど何もできません。質問のドメインがコレクションと直交していない限り、コレクションが大きいほど一般的に質問応答のパフォーマンスは向上します。ウェブなどの大規模なコレクションにおけるデータの冗長性は、情報の断片が異なるコンテキストや文書でさまざまな方法で表現される可能性が高いことを意味し、[ 25 ] 2つの利点につながります。
一部の質問応答システムは、自動推論に大きく依存している。[ 26 ] [ 27 ]
情報検索では、オープン ドメインの質問応答システムが、ユーザーの質問に対する回答を返そうとします。返される回答は、関連文書のリストではなく、短いテキストの形式です。[ 28 ]このシステムは、計算言語学、情報検索、知識表現の技術を組み合わせて回答を見つけます。
このシステムは、キーワードの羅列ではなく、例えば「中国の建国記念日はいつですか?」といった自然言語の質問を入力として受け取ります。そして、この入力文を論理形式のクエリに変換します。自然言語の質問を受け入れることでシステムはより使いやすくなりますが、実装は難しくなります。なぜなら、質問の種類が多岐にわたるため、システムは適切な質問の種類を特定して、それに応じた回答を提供する必要があるからです。質問に質問の種類を割り当てることは非常に重要な作業です。回答抽出プロセス全体は、適切な質問の種類、ひいては適切な回答の種類を見つけることに依存しているからです。
キーワード抽出は、入力された質問タイプを識別する最初のステップです。[ 29 ]場合によっては、「Who」、「Where」、「When」、「How many」などの単語が質問タイプを明確に示します。これらの単語は、それぞれ「Person」、「Location」、「Date」、「Number」タイプの回答がシステムに示唆される可能性があります。品詞タグ付けと構文解析技術によっても回答タイプを決定できます。上記の例では、主語は「Chinese National Day」、述語は「is」、副詞修飾語は「when」であるため、回答タイプは「Date」です。残念ながら、「Which」、「What」、「How」などの疑問詞は、明確な回答タイプに対応していません。それぞれが複数のタイプを表す可能性があります。このような状況では、質問内の他の単語を考慮する必要があります。WordNetなどの語彙辞書を使用してコンテキストを理解できます。
システムは質問の種類を識別すると、情報検索システムを使用して、適切なキーワードを含む文書セットを検索します。タグ付けツールと名詞句/動詞句チャンカーは、見つかった文書に適切なエンティティと関係が記述されているかどうかを確認します。「誰が」や「どこで」といった質問の場合、固有表現認識ツールが検索された文書から関連する「人物」や「場所」の名前を見つけ出します。ランキングには、関連する段落のみが選択されます。
ベクトル空間モデルは、候補となる回答を分類できます。質問タイプの分析段階で決定された正しいタイプの回答かどうかを確認します。推論手法は、候補となる回答を検証できます。次に、各候補に、含まれる質問語の数と、それらの質問語が候補にどれだけ近いかに応じてスコアが付けられます。質問語の数が多く、かつ近いほど良いとされます。その後、回答は構文解析によって、簡潔で意味のある表現に変換されます。前の例では、期待される出力回答は「1st Oct.」です。
オープンソースの数式対応質問応答システムであるMathQAは、 Ask PlatypusとWikidataをベースにして2018 年に公開されました。[ 30 ] MathQA は、英語またはヒンディー語の自然言語の質問を入力として受け取り、Wikidata から取得した数式を簡潔な回答として返します。数式は、ユーザーが変数に値を入力できる計算可能な形式に変換されます。システムは、変数名と値、および一般的な定数が Wikidata から利用可能な場合は取得します。このシステムは、テスト セットで商用の数学的知識エンジンよりも優れたパフォーマンスを発揮すると主張されています。[ 30 ] MathQA は、Wikimedia によってhttps://mathqa.wmflabs.org/でホストされています。2022 年に、15 種類の数学の質問に回答できるように拡張されました。[ 31 ]
MathQA メソッドでは、自然言語と数式言語を組み合わせる必要があります。考えられるアプローチの 1 つは、エンティティ リンクによる教師ありアノテーションを実行することです。CLEF 2020 [ 32 ]の「ARQMath タスク」は、プラットフォーム Math Stack Exchangeから新しく投稿された質問を、コミュニティによって既に回答されている既存の質問にリンクするという問題に対処するために開始されました。既に回答されている意味的に関連する質問へのハイパーリンクを提供することで、ユーザーはより早く回答を得ることができますが、意味的関連性は自明ではないため、困難な問題です。[ 33 ]このラボは、汎用検索エンジンの数学的クエリの 20% が整形式の質問として表現されているという事実に動機付けられました。[ 34 ]このチャレンジには、2 つの別々のサブタスクが含まれていました。タスク 1: 「回答の検索」は、古い投稿の回答を新しく投稿された質問に一致させ、タスク 2: 「数式の検索」は、古い投稿の数式を新しい質問に一致させます。数式言語を含む数学の領域から始め、目標は、後に他の種類の特殊表記(化学式など)を使用する他の領域(化学、生物学などのSTEM分野など)にタスクを拡張することです。[ 32 ] [ 33 ]
数学的な質問への回答の逆である、数学的な質問の生成についても研究が行われています。PhysWikiQuiz 物理学の質問生成およびテストエンジンは、Wikidata から数式と、それらを構成する識別子 (変数の名前と値) に関する意味情報を取得します。[ 35 ]次に、数式を並べ替えて、一連の数式バリアントを生成します。その後、変数をランダムな値に置き換えて、個々の学生のテストに適した多数の異なる質問を生成します。
QAシステムは、以下のようなさまざまな用途で使用されています。
{{cite web}}: CS1 maint: bot: 元の URL の状態が不明です (リンク){{cite book}}: CS1メンテナンス: 場所の発行元が見つかりません (リンク){{cite journal}}:ジャーナルを引用するには|journal=(ヘルプ)