主頁(yè) > 知識(shí)庫(kù) > so easy!10行代碼寫個(gè)狗屁不通文章生成器功能

so easy!10行代碼寫個(gè)狗屁不通文章生成器功能

熱門標(biāo)簽:廊坊地圖標(biāo)注申請(qǐng)入口 怎么去掉地圖標(biāo)注文字 北京外呼系統(tǒng)咨詢電話 地圖標(biāo)注資源分享注冊(cè) 襄陽(yáng)外呼增值業(yè)務(wù)線路解決方案 合肥阿里辦理400電話號(hào) 海南人工外呼系統(tǒng)哪家好 慶陽(yáng)外呼系統(tǒng)定制開發(fā) 高德地圖標(biāo)注公司位置需要錢嗎

前幾天,GitHub 有個(gè)開源項(xiàng)目特別火,只要輸入標(biāo)題就可以生成一篇長(zhǎng)長(zhǎng)的文章。

背后實(shí)現(xiàn)代碼一定很復(fù)雜吧,里面一定有很多高深莫測(cè)的機(jī)器學(xué)習(xí)等復(fù)雜算法

不過,當(dāng)我看了源代碼之后

這程序不到50行

盡管我有多年的Python經(jīng)驗(yàn),但我竟然一時(shí)也沒有看懂

這代碼放到編輯器里還特么真能執(zhí)行

當(dāng)然啦,原作者也說了,這個(gè)代碼也是在無(wú)聊中誕生的,平時(shí)擼碼是不寫中文變量名的, 中文變量名只是最開始瞎寫的時(shí)候邊寫語(yǔ)料邊寫代碼時(shí)懶得切英文輸入法了。

中文變量名也就忍了,但代碼邏輯不好懂,最后我還是忍著劇烈的頭痛把它的原理讀懂了。

這究竟咋實(shí)現(xiàn)的呢?

我肯定是不服的,這代碼要是被Python之父看見了,他一定后悔發(fā)明這門語(yǔ)言。

其實(shí),生成的文章內(nèi)容都來(lái)自于素材文件 data.json, 這個(gè)文件的結(jié)構(gòu)是個(gè)字典結(jié)構(gòu)

{
 "famous":[
 "愛迪生a,天才是百分之一的勤奮加百分之九十九的汗水。b",
 "查爾斯·史a,一個(gè)人幾乎可以在任何他懷有無(wú)限熱忱的事情上成功。b",
 ....
 ],
 "bosh":[
 "現(xiàn)在, 解決x的問題, 是非常非常重要的. 所以, ",
 "我們不得不面對(duì)一個(gè)非常尷尬的事實(shí), 那就是, ",
 ....
 ],
 "after":[
 "這不禁令我深思. ",
 "帶著這句話, 我們還要更加慎重的審視這個(gè)問題: ",
 ....

 ],
 "before":[
 "曾經(jīng)說過",
 "在不經(jīng)意間這樣說過",
 ....
 ]
}

famous 里面收集了很多名人語(yǔ)錄, 里面的關(guān)鍵字”a”和”b” 將分別被 beforeafter列表中的內(nèi)容替換,這樣處理后句子看起來(lái)具有邏輯性

bosh里面是各種各樣的的廢話, 里面關(guān)鍵字”x”最后會(huì)用標(biāo)題替換,這樣會(huì)讓人感覺,這篇文章還是和標(biāo)題有那么一丟丟聯(lián)系的。

一篇完整的文章就是靠不斷隨機(jī)從famous、bosh列表獲取元素,之后拼接成一篇文章。

搞懂了原理,如果我們自己來(lái)寫的話,除去代碼注釋,就10來(lái)行代碼

import random
import json

data = json.load(open("data.json", encoding="utf-8"))

def generator(title, length=800):
 """
 :param title: 文章標(biāo)題
 :param length: 生成正文的長(zhǎng)度
 :return: 返回正文內(nèi)容
 """
 body = ""
 while len(body)  length:
  num = random.randint(0, 100)
  if num  10:
   body += "\r\n"
  elif num  20:
   body += random.choice(data["famous"]) \

    .replace('a', random.choice(data["before"])) \

    .replace('b', random.choice(data['after']))
  else:
   body += random.choice(data["bosh"])
  body = body.replace("x", title)

 return body

來(lái)測(cè)試一下

from bullshit import generator
content = generator("我愛Python")
print(content)

輸出

一般來(lái)說, 問題的關(guān)鍵究竟為何? 既然如何,
對(duì)我個(gè)人而言,我愛Python不僅僅是一個(gè)重大的事件,還可能會(huì)改變我的人生.
我愛Python, 到底應(yīng)該如何實(shí)現(xiàn). 生活中, 若我愛Python出現(xiàn)了, 我們就不得不考慮它出現(xiàn)了的事實(shí). 從這個(gè)角度來(lái)看, 易卜生說過一句富有哲理的話, 偉大的事業(yè),需要決心,能力,組織和責(zé)任感。我希望諸位也能好好地體會(huì)這句話. 我們不妨可以這樣來(lái)想: 我們不妨可以這樣來(lái)想: 奧斯特洛夫斯基曾經(jīng)提到過, 共同的事業(yè),共同的斗爭(zhēng),可以使人們產(chǎn)生忍受一切的力量?!∵@不禁令我深思. 在這種困難的抉擇下, 本人思來(lái)想去, 寢食難安.問題的關(guān)鍵究竟為何? 帶著這些問題, 我們來(lái)審視一下我愛Python. 我愛Python似乎是一種巧合,但如果我們從一個(gè)更大的角度看待問題,這似乎是一種不可避免的事實(shí).
現(xiàn)在, 解決我愛Python的問題, 是非常非常重要的. 所以, 對(duì)我個(gè)人而言,我愛Python不僅僅是一個(gè)重大的事件,還可能會(huì)改變我的人生. 現(xiàn)在, 解決我愛Python的問題, 是非常非常重要的. 所以,

這樣看來(lái), 在這種不可避免的沖突下,我們必須解決這個(gè)問題. 既然如何, 要想清楚, 我愛Python, 到底是一種怎么樣的存在. 既然如此, 總結(jié)的來(lái)說, 經(jīng)過上述討論, 我愛Python因何而發(fā)生?總結(jié)的來(lái)說, 就我個(gè)人來(lái)說, 我愛Python對(duì)我的意義, 不能不說非常重大. 而這些并不是完全重要, 更加重要的問題是, 問題的關(guān)鍵究竟為何? 笛卡兒曾經(jīng)提到過, 我的努力求學(xué)沒有得到別的好處,只不過是愈來(lái)愈發(fā)覺自己的無(wú)知。這句話語(yǔ)雖然很短, 但令我浮想聯(lián)翩. 我認(rèn)為, 我愛Python, 發(fā)生了會(huì)如何, 不發(fā)生又會(huì)如何. 經(jīng)過上述討論,
在這種困難的抉擇下, 本人思來(lái)想去, 寢食難安.我愛Python, 到底應(yīng)該如何實(shí)現(xiàn). 我愛Python, 到底應(yīng)該如何實(shí)現(xiàn).

你還自定義內(nèi)容長(zhǎng)度

content = generator("我愛Python", length=1000)
print(content)

輸出

要想清楚, 我愛Python, 到底是一種怎么樣的存在. 我們都知道, 只要有意義, 那么就必須慎重考慮.了解清楚我愛Python到底是一種怎么樣的存在, 是解決一切問題的關(guān)鍵.
從這個(gè)角度來(lái)看, 一般來(lái)說, 帶著這些問題, 我們來(lái)審視一下我愛Python. 我們不得不面對(duì)一個(gè)非常尷尬的事實(shí), 那就是, 吉姆·羅恩在不經(jīng)意間這樣說過, 要么你主宰生活,要么你被生活主宰。這句話把我們帶到了一個(gè)新的維度去思考這個(gè)問題: 我愛Python, 到底應(yīng)該如何實(shí)現(xiàn). 每個(gè)人都不得不面對(duì)這些問題.  在面對(duì)這種問題時(shí), 問題的關(guān)鍵究竟為何? 可是,即使是這樣,我愛Python的出現(xiàn)仍然代表了一定的意義. 我們一般認(rèn)為, 抓住了問題的關(guān)鍵, 其他一切則會(huì)迎刃而解.了解清楚我愛Python到底是一種怎么樣的存在, 是解決一切問題的關(guān)鍵.我認(rèn)為, 了解清楚我愛Python到底是一種怎么樣的存在, 是解決一切問題的關(guān)鍵.我愛Python, 到底應(yīng)該如何實(shí)現(xiàn). 我愛Python的發(fā)生, 到底需要如何做到, 不我愛Python的發(fā)生, 又會(huì)如何產(chǎn)生. 現(xiàn)在, 解決我愛Python的問題, 是非常非常重要的. 所以, 我們不妨可以這樣來(lái)想: 現(xiàn)在, 解決我愛Python的問題, 是非常非常重要的. 所以, 我愛Python, 到底應(yīng)該如何實(shí)現(xiàn). 馬克思說過一句富有哲理的話, 一切節(jié)省,歸根到底都?xì)w結(jié)為時(shí)間的節(jié)省。這啟發(fā)了我. 我們不妨可以這樣來(lái)想: 我愛Python似乎是一種巧合,但如果我們從一個(gè)更大的角度看待問題,這似乎是一種不可避免的事實(shí). 問題的關(guān)鍵究竟為何? 歌德曾經(jīng)說過一句富有哲理的話,流水在碰到底處時(shí)才會(huì)釋放活力。帶著這句話, 我們還要更加慎重的審視這個(gè)問題: 我們不得不面對(duì)一個(gè)非常尷尬的事實(shí), 那就是, 我們不得不面對(duì)一個(gè)非常尷尬的事實(shí), 那就是, 我愛Python, 到底應(yīng)該如何實(shí)現(xiàn). 一般來(lái)講, 我們都必須務(wù)必慎重的考慮考慮. 我們都知道, 只要有意義, 那么就必須慎重考慮.總結(jié)的來(lái)說,
我們一般認(rèn)為, 抓住了問題的關(guān)鍵, 其他一切則會(huì)迎刃而解.
這種事實(shí)對(duì)本人來(lái)說意義重大, 相信對(duì)這個(gè)世界也是有一定意義的.既然如何, 就我個(gè)人來(lái)說, 我愛Python對(duì)我的意義, 不能不說非常重大. 我愛Python, 發(fā)生了會(huì)如何, 不發(fā)生又會(huì)如何. 莎士比亞說過一句著名的話, 意志命運(yùn)往往背道而馳,決心到最后會(huì)全部推倒。這句話語(yǔ)雖然很短, 但令我浮想聯(lián)翩.

是不是很簡(jiǎn)單。

當(dāng)然,你也可以引入更多NLP等技術(shù)進(jìn)來(lái),不過這對(duì)我來(lái)說

原項(xiàng)目地址:https://github.com/menzi11/BullshitGenerator

重構(gòu)后的代碼地址:

https://github.com/lzjun567/BullshitGenerator

總結(jié)

以上所述是小編給大家介紹的so easy!10行代碼寫個(gè)"狗屁不通"文章生成器功能,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!

您可能感興趣的文章:
  • 一篇文章弄懂Python中的可迭代對(duì)象、迭代器和生成器
  • 一篇文章徹底搞懂Python中可迭代(Iterable)、迭代器(Iterator)與生成器(Generator)的概念

標(biāo)簽:鶴崗 綿陽(yáng) 臺(tái)州 哈密 株洲 商丘 平頂山 鎮(zhèn)江

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《so easy!10行代碼寫個(gè)狗屁不通文章生成器功能》,本文關(guān)鍵詞  easy,10行,代碼,寫個(gè),狗屁不通,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《so easy!10行代碼寫個(gè)狗屁不通文章生成器功能》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于so easy!10行代碼寫個(gè)狗屁不通文章生成器功能的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章