web-dev-qa-db-ja.com

スマートチャットボットの作成方法

私はそれがまだ未解決の問題であることを知っているので、ここで完全な答えを見ることは期待できません。次の問題を解決するためのアプローチを見つけたいだけです。

モデルがあり(ボットのメモリであると仮定)、モデル内の異なるオブジェクトに異なる単語が関連付けられています。ボットと話すことは、DBでsqlクエリを実行するようなものです。言語は非常に難しい形式化可能なプロトコルです。そして、100万行のコードを書いて実際の言語を実装することはできません。しかし、自己学習メカニズムを実装することは絶対に可能であると信じています。どのように実装できますか? 「ゼロから」または「いくつかの基本的な単語から」学習を実装することは可能ですか?あなたのアイデアを聞きたいだけです。

実際、英語は非常に厳格な言語であり、AIを試す最も簡単な言語の1つです。他の多くの言語では、単語の順序を変更できます(たとえば)。また、場合によっては、順序を変更すると全体の意味が変わったり、イントネーションが追加されたりすることがあります。ボットにこれらのことを教える方法はまったくありません。

33
Roman

最初のステップ、このゲームを次のレベルに進める上で、...

...先行技術の非常に明確な見解を持つために!

(そしてこの質問は、あなたがその問題についてあなたがそのような広範な洞察を持っていることを示唆するものではありません[そして、あなたは私だけではないのです;-)])

場合によっては、完全に斬新な手法とモデルを適用することを意図している場合でも、現在および過去の慣行に関する文献を確認するが重要と思われます。新しい実装で適応または再利用される可能性のある要素を特定する以外に、ドメインの調査はnature問題の[s]。

私は個人的に試みました-さまざまな複数の機会に!-広く定義された問題に取り組むための素朴なアプローチまたは自然なアプローチのいずれかです!素朴なアプローチでは、問題の本質と範囲についてごくわずかな考えしかありません。ソフォモリックは、ドメイン知識と関連ツールを備えている方が良いと考えていますが、これはまた、より深い理解がなければ、私たちに提供される新しい素材を誤読/誤解し、いくつかのツールを誤用する傾向があるため、誤解を招く可能性があります(多くの物が釘のように見える「ハンマーでいい」仲間のようなものです...)

NLPの分野でこれらの間違いを犯すのは特に簡単です。なぜなら

  • 常識はすべてが必要であると思われます:結局のところ、母国語は子供であり、英語は
    「彼は実際にはないエキスパートです」
    「彼は本当にそうではないエキスパート」
    (英語でのWordの順序付けに関するOPの言及における小さなウィンク)
  • 私たちは、処理能力、プログラミング言語とツール、数学的手法、手頃な価格のコーパスの入手可能性など、このようなエキサイティングな時代、技術と知識に住んでいます。

チャットボットの努力を思いとどまらせるという考えとは程遠い、この長く一般的なエクスポージャーが飛躍する前に見ることを奨励することを願っています。二通り:

  • いくつかの参照フレームを提供します(ここでも、「これらのボックスの外側を考える」ことが意図されている場合でも)
  • たとえば、会話の特定のドメイン(スポーツ、健康、特定の大学のキャンパスでの生活など)に制限したり、問題の特定の側面に焦点を当てたり(セマンティックな認識、スムーズな) 、自然な発音の文法、口語形式の使用...)

幸運を ;-)

22
mjv

MegaHALの実装 をご覧ください。 IRC=私たちのチャンネルで年齢に応じてこのボットのバリアントを使用しました。

8
Cory Petosky

ボットを「訓練」します-ボットが答えるたびに、あなたは答えをランク付けします(またはテスター)-答えが良い/論理的な場合-高いランクを与え、答えが悪い場合...低い/負のランク。

将来のランキングを使用して答えを選択すると、これがボットの学習方法です...

6
Dani

Eliza には AIプログラミングのパラダイム に素晴らしい説明があります。数日間の作業で簡単なElizaボットを実装できるはずです。

これは学習アルゴリズムではありませんが、非常に単純なものから現実的な答えが得られるのは驚くべきことです。

4
Jeff Foster