私はそれがまだ未解決の問題であることを知っているので、ここで完全な答えを見ることは期待できません。次の問題を解決するためのアプローチを見つけたいだけです。
モデルがあり(ボットのメモリであると仮定)、モデル内の異なるオブジェクトに異なる単語が関連付けられています。ボットと話すことは、DBでsqlクエリを実行するようなものです。言語は非常に難しい形式化可能なプロトコルです。そして、100万行のコードを書いて実際の言語を実装することはできません。しかし、自己学習メカニズムを実装することは絶対に可能であると信じています。どのように実装できますか? 「ゼロから」または「いくつかの基本的な単語から」学習を実装することは可能ですか?あなたのアイデアを聞きたいだけです。
実際、英語は非常に厳格な言語であり、AIを試す最も簡単な言語の1つです。他の多くの言語では、単語の順序を変更できます(たとえば)。また、場合によっては、順序を変更すると全体の意味が変わったり、イントネーションが追加されたりすることがあります。ボットにこれらのことを教える方法はまったくありません。
最初のステップ、このゲームを次のレベルに進める上で、...
(そしてこの質問は、あなたがその問題についてあなたがそのような広範な洞察を持っていることを示唆するものではありません[そして、あなたは私だけではないのです;-)])
場合によっては、完全に斬新な手法とモデルを適用することを意図している場合でも、現在および過去の慣行に関する文献を確認するが重要と思われます。新しい実装で適応または再利用される可能性のある要素を特定する以外に、ドメインの調査はnature問題の[s]。
私は個人的に試みました-さまざまな複数の機会に!-広く定義された問題に取り組むための素朴なアプローチまたは自然なアプローチのいずれかです!素朴なアプローチでは、問題の本質と範囲についてごくわずかな考えしかありません。ソフォモリックは、ドメイン知識と関連ツールを備えている方が良いと考えていますが、これはまた、より深い理解がなければ、私たちに提供される新しい素材を誤読/誤解し、いくつかのツールを誤用する傾向があるため、誤解を招く可能性があります(多くの物が釘のように見える「ハンマーでいい」仲間のようなものです...)
NLPの分野でこれらの間違いを犯すのは特に簡単です。なぜなら
チャットボットの努力を思いとどまらせるという考えとは程遠い、この長く一般的なエクスポージャーが飛躍する前に見ることを奨励することを願っています。二通り:
幸運を ;-)
MegaHALの実装 をご覧ください。 IRC=私たちのチャンネルで年齢に応じてこのボットのバリアントを使用しました。
ボットを「訓練」します-ボットが答えるたびに、あなたは答えをランク付けします(またはテスター)-答えが良い/論理的な場合-高いランクを与え、答えが悪い場合...低い/負のランク。
将来のランキングを使用して答えを選択すると、これがボットの学習方法です...
Eliza には AIプログラミングのパラダイム に素晴らしい説明があります。数日間の作業で簡単なElizaボットを実装できるはずです。
これは学習アルゴリズムではありませんが、非常に単純なものから現実的な答えが得られるのは驚くべきことです。