Python實現(xiàn)文章自動生成

下面的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ā)生。


buildWordDict(text)函數(shù)接收文本內(nèi)容,生成的內(nèi)容如下{‘itself’: {‘,’: 1}, ‘night’: {‘sky’: 1}, ‘You’: {‘came’: 1, ‘will’: 1}, ‘railways’: {‘a(chǎn)ll’: 1}, ‘government’: {‘while’: 1, ‘,’: 1, ‘is’: 1}, ‘you’: {‘now’: 1, ‘open’: 1, ‘down’: 1, ‘with’: 1, ‘.’: 6, ‘,’: 1, ‘that’: 1},

主要就是生成一個字典,鍵是文章中所有出現(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ù)集足夠大那么語法準確度會大大提高。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容