下面的Python程序?qū)崿F(xiàn)了通過從網(wǎng)頁抓取一篇文章,然后根據(jù)這篇文章來生成新的文章,這其中的原理就是基于概率統(tǒng)計的文本分析。?
??過程大概就是網(wǎng)頁抓取數(shù)據(jù)->統(tǒng)計分析->生成新文章。網(wǎng)頁抓取數(shù)據(jù)是通過BeautifulSoup庫來抓取網(wǎng)頁上的文本內(nèi)容。統(tǒng)計分析這個首先需要使用ngram模型來把文章進行分詞并統(tǒng)計頻率。因為文章生成主要依據(jù)馬爾可夫模型,所以使用了2-gram,這樣可以統(tǒng)計出一個單詞出現(xiàn)在另一個單詞后的概率。生成新文章是基于分析大量隨機事件的馬爾可夫模型。隨機事件的特點是在一個離散事件發(fā)生之后,另一個離散事件將在前一個事件的條件下以一定的概率發(fā)生。



主要就是生成一個字典,鍵是文章中所有出現(xiàn)的詞語,值其實也是一個字典,這個字典是所有直接出現(xiàn)在鍵后邊的詞語及其出現(xiàn)的頻率。這個函數(shù)就是ngram模型思想的運用。?
retrieveRandomWord(wordList)函數(shù)的wordList代表的是出現(xiàn)在上一個詞語后的詞語列表及其頻率組成的字典,然后根據(jù)統(tǒng)計的概率隨機生成一個詞。這個函數(shù)是馬爾可夫模型的思想運用。
然后運行這個程序會生成一個長度為100的文章,如下面所示
fail . We will stir ourselves , but we will never before . Do not share one heart and pleasant it back our jobs . We are infused with the orderly and railways all of the gangs and robbed our jobs for their success will determine the civilized world . We will their success will be a great men and highways and millions to all bleed the world . It belongs to great national effort to defend our products , constantly complaining , D . We will be ignored again . It belongs to harness the expense of America .
生成的文章看起來語法混亂,這也難怪,因為只是抓取分析統(tǒng)計了一篇的文章。我想如果可以抓取足夠多的英文文章,數(shù)據(jù)集足夠大那么語法準確度會大大提高。