チャットボットと質疑応答技術

ウェブ技術 デジタルトランスフォーメーション技術 人工知能技術 自然言語処理技術 IOT セマンティックウェブ技術 深層学習技術 オンライン学習&強化学習技術 ユーザーインターフェース技術 知識情報処理技術 推論技術 本ブログのナビ

チャットボットと質疑応答技術について

チャットボット技術は、さまざまなビジネスドメインでの汎用的なユーザーインターフェースとして利用することができ、そのビジネスチャンスの多様性から現在では多くの企業が参入している領域となる。

さらにそれらのベースにある質疑応答技術から見ると、単なるユーザーインターフェース技術ででは収まらず、自然言語処理技術や推論技術等の人工知能技術や、深層学習、強化学習、オンライン学習等の機械学習技術を組み合わされた高度な技術の集大成となるが、現時点でのチャットボットは、それらを駆使したものでは無く、ルールベースの非常にシンプルなものだけとなる。

本ブログでは、このチャットボットと質疑応答技術に関して、その成り立ちからビジネス的側面、最新のアプローチを含めた技術的な概要とすぐ利用できる具体的な実装までのさまざまなトピックについて述べている。

実装

LangChainは、言語モデルを使ったアプリケーションを開発するのを助けるライブラリであり、ChatGPTやその他の生成モデルを使った様々なアプリケーションを構築することが可能なプラットフォームとなる。LangChainの目的の一つは、ChatGPTのような言語モデルではできないタスク、例えば言語モデルが学習した知識の範囲外の情報についての回答や、論理的に複雑なタスク、あるいは計算が必要なタスクなどに対応できるようにすることであり、もう一つは、フレームワークとして整備することとなる。

“ChatGPTとLangChainの概要及びその利用について“で述べたLangChainについて引き続き述べる。前回は、ChatGPTとそれを利用するフレームワークであるLangChainの概要について述べた。今回は、自律的に外部と干渉して言語モデルの限界を超える機能を持つAgentについて述べたいと思う。

  • 質問応答型学習の概要とアルゴリズム及び実装例について

質問応答型学習(Question Answering, QA)は、自然言語処理の一分野で、与えられた質問に対して適切な回答を生成するタスクとなる。QAシステムは、テキストデータや文書から情報を抽出し、質問に対する適切な回答を生成する能力を持っている。QAは、情報検索、知識ベースのクエリ処理、顧客サポート、仕事の効率化などのさまざまなアプリケーションで活用されている。ここではこの質問応答型学習の概要とアルゴリズム及び各種実装について述べている。

  • 自然言語処理によるユーザーにカスタマイズされた学習支援

教育分野やオンライン学習プラットフォームなどのさまざまな領域で、自然言語処理(NLP)を活用したユーザーにカスタマイズされた学習支援が提供されている。ここでは、それらに用いられる様々なアルゴリズムと具体的な実装について述べている。

  • 自然言語処理を用いたオンラインディスカッションのモニタリングと支援について

自然言語処理(NLP)を用いたオンラインディスカッションのモニタリングと支援は、オンラインコミュニティ、フォーラム、ソーシャルメディアプラットフォームなどで活用され、ユーザーエクスペリエンスの向上、適切なコミュニケーションの促進、問題の早期検出などに役立つアプローチとなる。ここでは、この自然言語処理(NLP)を用いたオンラインディスカッションのモニタリングと支援について様々なアルゴリズムと実装について述べる。

Huggingfaceは、機械学習と自然言語処理(NLP)に関するオープンソースのプラットフォームとライブラリを提供している企業であり、Huggingfaceでは、Transformerモデルを中心としたNLPタスクのための高度なモデルやツールが開発されている。Huggingfaceが提供するツールやリソースは、オープンソースコミュニティによって支えられており、そこではコードやモデルの共有に積極的な取り組みが行われている。ここではHuggingface Transformersと文書生成、pythonによる実装について述べる。

ChatGPTStable Diffusionのような生成系のモジュールをコードレスに利用可能なオープンソースのツールとしてtext-generation-webuiとAUTOMATIC1111等がある。今回は、これらを用いたテキスト生成/画像生成のモジュールの利用法保について述べる。

ナレッジグラフは、情報を関連性のあるノード(頂点)とエッジ(つながり)の集合として表現するグラフ構造であり、異なる主題やドメインの情報を結び付け、その関連性を可視化するために使用されるデータ構造となる。ここではこのナレッジグラフの様々な活用事例とpythonによる具体的な実装例について述べる。

1966年に世界で初めて開発されたLISPによるchatbotシステム。ELIZAは、英語による入出力を特徴とする最初の自然言語処理のプログラムの一つであり、その名前は戯曲「ピグマリオン」の女主人公に因んでつけられた。

Elizaは、ロジャリアン派の精神分析医をエミュレートするシステムとなっている。ロジャリアン派は、「非指示的」カウンセリングを行うスタイルの精神分析医で、新しい情報を進んで提供するというよりも、受動的に反応することで、患者に対して自分自身を曝け出すように仕向ける。

プログラムはパターンマッチングをベースに構築されており、多様な入力に応えて合理的に反応するので、本当に「理解」しているように見える。しかしながらこのプログラムは、入力の要素を注意深く認織、変換、まねることによって、患者に錯覚を起こしているだけであり、実際には会話を全く理解していない。

Javascriptを使ったフロントサイドのサーバーフレームワークであるNode.jsとReactを用いたシンプルなchatbotの実装について述べる。

基本的な動作としては、会話のルールを書いた後に、jsonファイルにそれらを落とし込み、書き込まれたシーケンスの流れに沿って会話が進むルールベースのものとなる。

チャットボットフレームワークのClojureとJavascriptによる構築と各種AI機能の統合(自然言語処理、SVM、BERT、Transformer、ナレッジグラフ、データベース、エキスパートシステム)

クロスプラットフォームチャットボット開発用のオープンソースPHPフレームワークであり、PHPライブラリとして利用する。複数のメッセージングプラットフォーム向けのボット開発タスクを簡素化するように設計されており、「単純なコマンドボット」から「高度な会話型インターフェース」まで対応できる。またLaravelに対応したBotManStudioもある。

Unityは、Unity Technologiesによって開発され、広く使用されているゲーム開発やアプリケーション開発のための統合開発環境(IDE)となる。Unityはゲーム、VR、AR、シミュレーション等様々な領域で利用されている。ここでは、このUnityとCMS、chatbot、ES、機械学習、自然言語処理等の人工知能システムとの連携について述べている。

PHP(Hypertext Preprocessor)は、Web開発のためのスクリプト言語であり、主にサーバーサイドで動作し、HTMLコードの埋め込みやデータベースへのアクセス、フォームの処理など、動的なWebページの作成やWebアプリケーションの開発に使用されるものとなる。そのフレームワーク野中でLaravelは、PHPの最も人気のあるものとなる。

ここではLaravelを使った具体的な実装(mediawikiとの連携、cahtbot、Elasticsearchとの連携)について述べている。

理論/その他

「35億人の見込み客が待つ! 現在のチャットボットブームを解説すると共に、チャットボットの普及によってこれから訪れるであろうWebの変化やビジネス展開などについて、事例を交えて詳しく解説する。」

本書はチャットボットビジネスの視点からさまざまな事例が述べられている。技術的な側面では、ルールベース(一部のAIチャットボットと呼ばれるものでは自然言語処理技術が含まれている)のシンプルな構成のものが中心となる。

チャットボット技術の根幹である機械と会話するということに対して、1950年にチューリングが提唱し、その考え方は受け継がれているチューリングテスト(機械が知性を持ちうるか、持ちうるとしたらどのように判定すれば良いかを考える為に考案したゲーム(imitation game)について述べ、対話と知能の関係について考察する。

Eliza系統の意味を理解しない初期の対話エンジン(人工無能)についての紹介と、言葉の意味と対話との関係をヴィトゲンシュタインの論理哲学、ジェームスジョイスによるメタ文学、禅の悟りに至る十牛図の紹介と禅問答を通して分析し、さらに近年開発されているBERTをベースとしたブッダボットについて紹介する。

チャットボット技術の中心にあるAI対話エンジンの技術的な分類と、自然言語処理の活用、深層学習技術の活用、さらに近年注目されている知識グラフを組み合わせたものに対して、技術概要とベンチマーク、そしてClojureを用いた実装について述べている。

    SWI-Prologを用いたチャットボットの実装(外部リンク)

    chatbotの進化系の一つであるエキスパートシステムについて述べている。エキスパートシステムはルール知識と呼ばれるデータを組み合わせることで、フレキシブルなif/thenルールシステムを構築するシステムとなる。基本的にはAI言語の一つであるPrologやLispをベースに構築されていたが、ここではJavaで構築されたCLIPSについて実際にツールをダウンロードして利用するまでを紹介している。

    知識ベースと呼ばれるデータを利用したルールベースシステムについて述べている。

    例えば、UniProtKBというデータベースシステムは生命科学分野で使用される知識ベースの1つとなる。欧州の機関が協力し合ってタンパク質の情報を収集し、アノテーション(あるデータに対して関連する情報を付与すること)処理やキュレーション(データを収集し、アノテーションの情報などをもちに精査、統合し整理してまとめる)を通じてUniProt(TheUniversalProteinResource、URLhttp://www.uniprot.org/)というカタログデータベースと解析ツールなどを開発している。

    また、Dendralはスタンフォード大で1965年から開発されたプロジェクトで、質量分析で得られたピークの場所の数値(分子量)から測定した物質の化学構造を推測するシステムとなる。言語はLISPが用いられている。

    さらにDendralから派生し、発展したシステムで1970年代に構築されたMYCINもエキスパートシステムにあたる。これは患者や伝染性の血液疾患を診断して、投与する抗生物質を投与量などとともに提示するシステムとなる。

    知識グラフとは、「エンティティとその間の関係を記述して作成したグラフ」と定義することができる。ここでの「エンティティ」とは物理的または非物理的に「存在する」もので必ずしも物質的な存在ではなく、抽象化されて事物(数学や法律、学問分野などの事象)を表す。

    知識グラフの例としては、「テーブルの上に鉛筆がある」「富士山は静岡県と山梨県の境にある」というような単純で具体的なものから、「a=b なら、a+c = b+cである」「消費税とは、物品やサービスの「消費」に着目し課税する間接税である」「電子制御式燃料噴射装置において、吸気マニホールドのコレクターに取り付けられ、吸入空気量を制御するスロットルバルブを内蔵した吸気絞り装置をスロットルチャンバーと呼ぶ」のような抽象的なルールや知識を表したものまで多種多様にある。

      これらの知識グラフを用いることで、AIの観点からは知識グラフというデータを通じて機械が人間世界のルールや知識、常識等へのアクセスできるようになるという利点が生じる。AIが処理したデータを知識グラフと繋げることで、近年の深層学習をはじめとしたブラックボックス的なアプローチでの、「何を根拠に判断しているのか分からない」といった問題や、学習の精度を得るために大量の教師データが必要になるといった問題に対して、AIが処理した結果を人間にとって解釈しやすい表現にしたり、知識データを元にAIがデータを生成することでスモールデータでの機械学習が可能となる。

    この知識グラフを質問応答システムに適用することで、単純なFAQの質問・回答ペアではなく、主要なタームの階層構造を作成し、更にコンテキストに応じた質問及びその代替語、同義語、機械学習応答のクラスなどと関連づけことができ、インテリジェントなFAQ体験を提供することが可能となる

    自然言語処理(NLP)は、1950年頃、有名なチューリングテストTuring (1950)の紹介から始まった学問分野である。仮想アシスタントは、ユーザーとのコミュニケーションを自然言語で実現するプログラムである。チャットボットと呼ばれるこれらのNLPプログラムは、自然で直感的なインタラクションに近いという利点があります。通常、これらのプログラムは、特定のドメインからの情報を理解します。このように、チャットボットは、しばしば娯楽的で匿名的な方法で特定の情報を提供します。いくつかの研究は、将来的にチャットボット市場の上昇を予測しているので、これらのシステムの機能性に対処することが不可欠になりますFølstadとBrandtzæg(2017)、Grudin(2019)。これまで、チャットボットの正しさをチェックするテストアプローチはわずかしか存在しませんでした(例:Vasconcelos et al.(2017);Bozic(2019)) 。しかし、ユーザーはチャットボットに様々な方法で話しかけることができるため、入力範囲を予測することは難しいかもしれません。それに加えて、一般化された方法でチャットボットをテストすることは、期待値がないために問題があることが判明する。

      コメント

      1. […] ウェブ技術サマリー デジタルトランスフォーメーション技術サマリー 人工知能技術サマリー 自然言語処理技術サマリー セマンティックウェブ技術サマリー 深層学習技術サマリー オンライン学習&強化学習技術サマリー チャットボットと質疑応答技術サマリー ユーザーインターフェース技術サマリー 知識情報処理技術サマリー 推論技術サマリー  禅と人工知能サマリー […]

      2. […] ウェブ技術サマリー デジタルトランスフォーメーション技術サマリー 人工知能技術サマリー 自然言語処理技術サマリー セマンティックウェブ技術サマリー 深層学習技術サマリー オンライン学習&強化学習技術サマリー チャットボットと質疑応答技術サマリー ユーザーインターフェース技術サマリー 知識情報処理技術サマリー 推論技術サマリー  禅と人工知能サマリー […]

      3. […] ウェブ技術 デジタルトランスフォーメーション技術 人工知能技術 自然言語処理技術 セマンティックウェブ技術 深層学習技術 オンライン学習&強化学習技術 チャットボットと質疑応答技術 ユーザーインターフェース技術 知識情報処理技術 推論技術  プログラミング […]

      4. […] ウェブ技術 デジタルトランスフォーメーション技術 人工知能技術 自然言語処理技術 セマンティックウェブ技術 深層学習技術 オンライン学習&強化学習技術 チャットボットと質疑応答技術 ユーザーインターフェース技術 知識情報処理技術 推論技術  プログラミング […]

      5. […] ウェブ技術 デジタルトランスフォーメーション技術 人工知能技術 自然言語処理技術 セマンティックウェブ技術 深層学習技術 オンライン学習&強化学習技術 チャットボットと質疑応答技術 ユーザーインターフェース技術 知識情報処理技術 推論技術 […]

      6. […] ウェブ技術 デジタルトランスフォーメーション技術 人工知能技術 自然言語処理技術 セマンティックウェブ技術 深層学習技術 オンライン学習&強化学習技術 チャットボットと質疑応答技術 ユーザーインターフェース技術 知識情報処理技術 推論技術 […]

      7. […] 人工知能技術 自然言語処理技術 セマンティックウェブ技術 チャットボットと質疑応答技術 ユーザーインターフェース技術 知識情報処理技術 推論技術 […]

      8. […] 人工知能技術  セマンティックウェブ技術 ICT技術 チャットボットと質疑応答技術 ユーザーインターフェース技術 プログラミング CSSとウェブデザイン […]

      9. […] 知識情報処理技術 推論技術 本ブログのナビ チャットボットと質疑応答技術 Python Clojure […]

      10. […] 人工知能技術  セマンティックウェブ技術 ICT技術 チャットボットと質疑応答技術 ユーザーインターフェース技術 プログラミング […]

      11. […] セマンティックウェブ技術 深層学習技術 オンライン学習 強化学習技術 チャットボットと質疑応答技術 ユーザーインターフェース技術 知識情報処理技術 プログラミング […]

      12. […] 人工知能技術  セマンティックウェブ技術 ICT技術 チャットボットと質疑応答技術 ユーザーインターフェース技術 プログラミング […]

      13. […] 人工知能技術  セマンティックウェブ技術 ICT技術 チャットボットと質疑応答技術 ユーザーインターフェース技術 プログラミング […]

      14. […] セマンティックウェブ技術 深層学習技術 強化学習技術 オンライン学習 チャットボットと質疑応答技術 ユーザーインターフェース技術 知識情報処理技術 プログラミング […]

      15. […] セマンティックウェブ技術 深層学習技術 オンライン学習 強化学習技術 チャットボットと質疑応答技術 ユーザーインターフェース技術 知識情報処理技術 推論技術 […]

      16. […] 深層学習技術 オンライン学習&強化学習技術 チャットボットと質疑応答技術 ユーザーインターフェース技術 知識情報処理技術 推論技術 […]

      17. […] 深層学習技術 オンライン学習&強化学習技術 チャットボットと質疑応答技術 ユーザーインターフェース技術 知識情報処理技術 推論技術 […]

      18. […] 人工知能技術 自然言語処理技術 セマンティックウェブ技術 チャットボットと質疑応答技術 ユーザーインターフェース技術 知識情報処理技術 推論技術 […]

      19. […] チャットボットと質疑応答技術について | Deus Ex Machina より: 2022年2月18日 6:03 AM […]

      20. […] 人工知能技術 セマンティックウェブ技術 ICT技術 チャットボットと質疑応答技術 ユーザーインターフェース技術 プログラミング PHPとウェブ開発 […]

      21. […] また”ナレッジグラフの自動生成と様々な実装例“に述べているようなナレッジグラフの生成、また”チャットボットと質疑応答技術“に述べているような質問応答システムに用いるグラフデータを自動で生成する使い方もできる。 […]

      タイトルとURLをコピーしました