2012-11-04 22 views
2

我正在用C#編寫一個軟件工程課程的聊天機器人。是否可以引導一個馬爾可夫鏈向某些關鍵字?

我使用馬爾可夫鏈生成文本,使用維基百科文章作爲語料庫。我希望它能夠根據用戶的輸入以(至少稍微)智能的方式響應用戶輸入,但我不知道如何去做。

我目前的想法是,我會嘗試從用戶的輸入中提取關鍵字,然後使用它們來指導生成句子。但是由於馬爾可夫屬性,關鍵字必須是句子中的第一個單詞,這可能看起來很愚蠢。同樣,對於n訂單鏈,我不得不每次從用戶提取確切的n關鍵字。

生成器的數據是一個字典,其中鍵是單詞列表,值是與單詞組合的單詞列表,取決於單詞出現在單詞後面的頻率。因此,像:

它可以在命令行測試程序,但我只是提供它生成文本的每一位的n字的種子。

我希望有一些方法可以讓鏈更喜歡用戶使用的附近單詞的單詞,而不是用輸入中的第一個/最後一個n單詞或n關鍵字或任何其他單詞進行播種。有沒有辦法做到這一點?

回答

2

讓您的聊天變得更加智能的一種方法是從用戶輸入中確定主題。假設你的馬爾可夫大腦也有不同的主題。然後來構建你的答案,您請參閱下面的解釋:

{([字詞1,單詞2,...,wordn],話題):[(字,體重),(字,重量) ,...]}

要查找主題,您可以從WikipediaMiner開始。例如,以下是wikify api針對句子找到的主題及其相應的權重:

統計信息非常難。對於初學者,你有一些很好的概率論教程嗎?

[{'id': 23542, 'title': 'Probability theory', 'weight': 0.9257584778725553}, 
{'id': 30746, 'title': 'Theory', 'weight': 0.7408577501980528}, 
{'id': 22934, 'title': 'Probability', 'weight': 0.7089442931022307}, 
{'id': 26685, 'title': 'Statistics', 'weight': 0.7024251356953044}] 

也許這些標識的關鍵字也很好被視爲種子。 但是,問題回答並不是那麼簡單。這種基於馬爾可夫的句子生成根本不具備理解問題的能力。它能做的最好的只是提供相關內容。只是我2美分。

+0

好主意!我希望這可以在一篇文章中工作(基於標題標題等)。 –

+0

這工作就像一個魅力,謝謝。 –

+0

此網站已停止服務。 –