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(但你也可以使用LSTM遞歸神經網絡TensorFlow)。通過一組好的和豐富的訓練數據,該算法確實可以產生非常有趣的文本輸出。正如在上面的文章中提到的,有一個Gutenberg項目,您可以免費找到數量可觀的免費書籍。這應該提供足夠數量的訓練數據。不過,既然你可能已經玩過RNN,我會繼續進行。

接下來是question與可能的responses之間的關係。這告訴我,你的談話中涉及到某些語義。意味着它不是隨機的,並且產生的迴應至少應該試圖「適合」某種相關的迴應。就像Latent Dirichlet Allocation找到一個適當的類別和主題基於數據,但以相反的方式 - 基於主題(問題),你需要至少找出某種相關的數據(響應)。也許某種方式將生成的文本分成許多部分,然後對這些部分進行矢量化並使用類似Document Distance算法的算法來查找近似匹配?一個想法也可以派上用場,因爲事實上,從單詞/矢量矩陣中,您需要儘可能減少矩陣,同時仍保留相似性。