2017-03-21 67 views
1

我正在寫一個文本微調器,它工作的很好,因爲它應該。但可讀語句的準確性很低,因爲它只是使用我從數據庫中獲得的字典。其返回spintax這樣使用樸素貝葉斯的文本微調器

{Your} {home| house| residence| property} {is} {your} {castle| mansion| fortress| palace} 

並傳遞到它選擇隨機同義詞,基於所述用戶的原始輸入輸出語句的功能。例如,對於輸入:

Your home is your castle. 

將返回

Your property is your mansion. 

現在我想包括人工智能,因爲它會讓我的輸出語句更具可讀性。我想知道如何使用樸素貝葉斯做出更好的選擇。我知道我可能需要訓練以獲得更好的結果。

這是我目前選擇單詞的方法,現在非常簡單。

def spin(spintax): 
    while True: 
     word, n = re.subn('{([^{}]*)}',lambda m: random.choice(m.group(1).split("|")),spintax) 
     if n == 0: break 
return word.strip() 

謝謝你在前進,如果你們需要我張貼更多的代碼,讓我知道

回答

1

也許你可以從所有英文書籍下載谷歌收集的數據集,並生成使用n元語法的句子隨機? https://books.google.com/ngrams

實現方法是使用Markov chain,其中下載的數據爲您提供下一個字選擇的概率。

+0

謝謝你的建議,我會研究它。 –