自然言語インターフェイスを備えたインテリジェントな会話システム

おそらく既に理解しているように、いわゆる仮想対談者、またはいわゆるチャットボットについて説明します。 投稿のタイトルでは、「チャットボット」と「仮想対話者」の概念は完全に信用されておらず、この「現象」の本質を反映していないと考えているため、「インテリジェントな対話システム」の概念(以下、IDSと略します)を意図的に使用しました。



投稿では、IDSの設計と発生する問題について説明します。 また、IDSで使用される一般的なアルゴリズム、その長所、短所なども考慮します。 このトピックに興味がある場合は、猫にようこそ。



なぜIDSが必要なのですか?



そのようなシステムの適用範囲は非常に広い。 頭に浮かぶ最初のもの:

ロシアのIDSの状況はどうですか?



悲惨です。 この種のプログラムは数多くありますが、大多数は原始的であり、知性についての話はありません。 通常、自己トレーニングも、特定のトピックに関する会話を維持する機能もありません。 クリエイターが考えられる最大のことは、2ダースのコード行と質問と回答のベースです。



少し前まで、いわゆる情報(仮想対談者)を作成するNanosemanticsという会社が私の目を引きました。 しかし、これらの情報をよく知っているとがっかりしました。 美しく見えますが、実際に注目に値するものはありません。



会社のウェブサイトは言う:
とりわけ、統合プラットフォームには、infaナレッジベースが含まれています。これは、質問と回答のオプションを備えた柔軟なスクリプトのセットです。




独学なし。 彼らは対話をサポートする方法を知りません(「教師」が一生懸命努力して、データベースで非常に、非常に、非常に多くの回答を採点しない限り)。 これもまたプリミティブです。 しかし、私はナノセマンティクスをscりません。 これが純粋に実用的な目標を追求する商業プロジェクトであることは明らかです。



完璧なIDの肖像



真にインテリジェントな会話システムでできることは何ですか? 私の深い確信:



1.インテリジェンスを主張する対話システムは、特定のトピックに関する会話を維持できる必要があります。 理想的には、彼女は質問に答えるだけでなく、彼らに質問し、主張し、自分の視点を守るべきです(もちろん、彼女はもちろん)。 実際にこれを達成することは非常に難しいことは明らかですが、すでにいくつかのアイデアやアイデアがあります(私は自分自身について話している)。



2. IDSには自己学習メカニズムが必要です(少なくともプリミティブ)。 これがなければ、それを知的と呼ぶことは単に言語を変えません。



3. IDSは、自然言語で(少なくとも特定の場合には)応答を作成できる必要があります。IDSは、それに答えられた愚かな答えを出すだけではありません。



4.対話システムには独自の目標が必要です。 対話の開始時に、そのような目標は、人を知り、性別、年齢、ニーズ、興味などを知ることです。 次に、このデータに基づいて、彼女は、名前または名前、ミドルネーム、またはあなた/あなた(人の要求に応じて)でユーザーに連絡する必要があります。 「記憶」と「認識」のメカニズムも必要です。 新しい会話では、最初からやり直す必要はありませんでした。



5.場合によっては、対話システムに個性と感情を持たせる必要があります。 そうでなければ、そのようなシステムと話すのは退屈です。



6.最も重要ではありませんが、それでも必要なスキルは、アクションを実行する能力です。 インターネットでアドレスを開き、サイト検索を行い、ユーザーを登録し、電子メールメッセージを送信します。



当然、特定のスキルの存在は、システムの範囲によって決定される必要があります。 そのため、たとえば、自動サポートシステムは感情を持つ必要はありません(そして有害ですらありません)。 怒っているユーザーが、自分の問題を解決する代わりに、「しかし、あなたは行き​​ません...残念です。 ここだ!」



IDS内部デバイス



ほとんどすべての既存のIDS(少なくとも私が使い慣れているデバイスのIDS)には、次の形式の知識ベースがあります。



ユーザーフレーズまたはその重要な部分| 1つ以上のシステム応答オプション



もちろん例外もありますが、ほとんどは例外です。 このアプローチは必然的に問題につながります。 まず、性別に応じて人に応答する能力が失われ、あなたはただ突く/突く必要があります。 次に、タイプミスとユーザーエラーを考慮する必要があります。 そして、これは、例えば、データベースがそのようなレコードを含むべきであることを意味します:



あなたの名前は何ですか|私の名前はそうです

ティビアの叫び声|私の名前はそうです



エラーが考慮されていない場合、プログラムが「どのように叫びますか」という質問は適切に答えられません。



第三に、データベースが完全なフレーズで構成されていない場合、システムの不正解は避けられません。 たとえば、データベースには次の行が含まれます。



何歳|私は2歳です



明らかに、著者はプログラムの年齢の問題にいくつかのオプションを提供したかった。 「あなたは何歳ですか?」、「あなたは何歳ですか?」-プログラムはそれらに正しく答えます:「私は2歳です」



しかし、彼らが「あなたの創造者は何歳ですか?」または「惑星地球は何歳ですか?」と尋ねたらどうでしょうか。おそらく、この場合、「私は2歳です」という答えはユーザーに合わないでしょう。



第4に、このナレッジストレージの方法では、「主題を維持する」能力を提供することは非常に困難です。



結論:説明したデータストレージの方法(従来の方法)は最適ではありません。 最も一般的な質問を含む大きなベースがある場合、プログラムはかなり「スマート」に見えるかもしれませんが、データベースに表されていないトピックに人が触れるとすぐに、すべての知性が蒸発し、システムが途方もなく馬鹿になり始めます。



記載されているデータストレージの方法に断固として反対していると判断した場合、あなたは間違っています。 このアプローチには(特定の予約がある場合)生命に対する権利がありますが、それだけを使用する場合、これは行き止まりです。



それでは、IDSデータベースに知識を保存する従来の方法をどのような場合に、どのような条件下で使用できますか?



1.データベースを検索する直前に、ユーザーのレプリカで入力ミスやエラーがないかどうかを確認する必要があります。 当然、もしあれば、それらは修正されるべきです。 これは、特別なモジュール-スペルチェッカーを使用して実行できます。



2.データベースには、重要な部分だけでなく、ユーザーのレプリカの完全なバージョンを含める必要があります。 これにより、誤ったシステム応答が排除されます。



確かに、「お元気ですか」という質問に答える必要がある場合に、なぜ形態、構文、セマンティクス、およびその他の手段を使用するのでしょうか。 このような非常に一般的な質問は、従来の方法でデータベースに保存することができます(速度の向上などにも役立つ場合があります)。



他のすべてを保存する方法は? これらの目的のためには、システムが理解できる内部言語を開発する必要があると思います。 つまり、ユーザーのリクエストは前処理されます(たとえば、前述のエラー/タイプミスの修正、形態、構文、セマンティクスなど)。 さらに、システムが理解できる内部形式に変換されます。 その後、データベースで検索されます。



このアプローチを使用すると、単一のフォームにさまざまなクエリオプションを追加できます。 私のポイントを説明します。 ユーザーレプリカがあるとします。



あなたは何歳ですか?

あなたは何歳ですか?

あなたの年齢は?



最初のレプリカ:「どのくらい」という数字は、レプリカを質問として一意に識別します。 「あなたへ」という代名詞は、この質問をシステムに対する個人的な質問として一意に識別します。 名詞「年」は、カテゴリ「時間の単位->年齢」に属します。 私たちは、システムがその年齢について個人的な質問をしたことを知っています。



2番目のレプリカ:同じことですが、以前は「Tee」が「you」で修正されます。



3番目の発言:発言を質問として一意に識別する代名詞の形容詞。 代名詞「形容詞」は、この質問をシステムに対する個人的な質問として一意に識別します。 そして最後に、名詞「年齢」はカテゴリ「年齢」に属します。 繰り返しますが、システムはその年齢について個人的な質問をされました。



もちろん、これは従来の方法よりもはるかに複雑です。 もちろん、これには自然言語の処理に関連する多くの問題が伴います。 しかし、インテリジェントシステムの作成は簡単だと誰が言ったでしょうか?



今日はこれで十分です。 次の記事では、IDSに「主題を維持」して自習する方法を教えます。 楽しんでいただけましたでしょうか。



PSコメントでは、システムのナレッジベースへの情報の保存に関するあなたの考えや提案を見たいと思います。



All Articles