4

私はあらかじめ定義されたメッセージで動作するチャットアプリケーションを持っています。データベースには約80件の定義済みの会話があり、それぞれ5件の応答が可能です。正確なテキストの生成

Q: "How heavy is a polar bear?" 

R1: "Very heavy?" 
R2: "Heavy enough to break the ice." 
R3: "I don't know. Silly question." 
R4: ... 
R5: ... 

があるユーザーは、がR3選択するとしましょう::明確にするため、ここでは一例だ「私は知らない愚かな質問」

次に、その応答は5つの可能な応答を持っています、例えば:

R1: "Why is that silly?" 
R2: "You're silly!" 
R3: "Ugh. I'm done talking to you now." 
R4: ... 
R5: ... 

それぞれの応答には5つの応答があります。その後、会話は終了し、新しい会話を開始する必要があります。

要約すると、手作業で書かれた80の会話があり、それぞれが5つの可能な回答を持ち、3つの層が深い= 10,000のメッセージの合計です。

私の質問:機械学習を使用してこれらのような会話を自動的に生成する最も正確な方法は何でしょうか?

RNN:Karparthy's RNN postを調査しました。 RNNは古いコンテンツに基づいて新しいコンテンツを作成できますが、新しいコンテンツはかなりランダムで無意味です。

これらの会話の使用をよりよく理解するには、http://getvene.com/にアクセスし、プレビュービデオをご覧ください。

+0

あなたは何を達成しようとしていますか?リアルな会話を生成しようとしているのですか、それとも実際に有益なものにしようとしていますか? – user3080953

+0

現実的な響きがあるので、使用するのが楽しいです。 –

答えて

3

私はおそらく生成的なテキストモデルから始めるでしょう。 articleにはPythonとKerasを使用しています(ただし、TensorFlowでもLSTMリカレントニューラルネットワークを使用できます)。訓練データが豊富で豊富であれば、アルゴリズムはかなり興味深いテキスト出力を生成することができます。上の記事で説明したように、無料の書籍を数多く見つけることができるGutenbergプロジェクトがあります。十分な量のトレーニングデータを提供する必要があります。しかし、すでにRNNと遊んでいるので、さらに進んでいきます。

次は、questionと可能なresponsesの関係です。これは、あなたの会話に関係する特定のセマンティクスがあることを私に伝えます。ランダムで生成された反応ではないという意味は、少なくとも適切な応答に「適合」しようとするべきです。 Latent Dirichlet Allocationのようなものは、データに基づいて適切なカテゴリとトピックを検索しますが、逆の方法で検索します - トピック(質問)に基づいて、少なくとも何らかの関連性のあるデータ(応答)を見つける必要があります。おそらく、生成されたテキストを多くの部分に分割し、これらの部分をベクトル化して、近くの一致を見つけるのにDocument Distanceアルゴリズムのようなものを使用するいくつかの方法はありますか?実際には、単語/ベクトルの行列から、できるだけ類似度を維持しながら行列を減らす必要があるため、便利な考えもLatent Semantic Analysisです。

関連する問題