佳木斯湛栽影视文化发展公司

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

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

熱門標(biāo)簽:銀行業(yè)務(wù) 呼叫中心市場(chǎng)需求 網(wǎng)站文章發(fā)布 服務(wù)器配置 美圖手機(jī) 檢查注冊(cè)表項(xiàng) 鐵路電話系統(tǒng) 智能手機(jī)

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

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

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

這程序不到50行

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

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

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

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

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

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

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

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

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

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

bosh里面是各種各樣的的廢話, 里面關(guān)鍵字”x”最后會(huì)用標(biāo)題替換,這樣會(huì)讓人感覺(jué),這篇文章還是和標(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("我愛(ài)Python")
print(content)

輸出

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

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

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

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

輸出

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

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

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

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

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

https://github.com/lzjun567/BullshitGenerator

總結(jié)

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

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

標(biāo)簽:滄州 河南 紅河 樂(lè)山 上海 長(zhǎng)治 新疆 沈陽(yáng)

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

    • 400-1100-266
    平阴县| 建瓯市| 安溪县| 徐闻县| 合水县| 友谊县| 诸暨市| 平顺县| 阿图什市| 略阳县| 凭祥市| 榆树市| 平原县| 芒康县| 承德市| 晋江市| 清丰县| 大冶市| 三都| 托克托县| 二手房| 简阳市| 宜州市| 建阳市| 黑龙江省| 兴山县| 通州区| 桑植县| 新建县| 两当县| 江川县| 河南省| 通州区| 南丹县| 辽宁省| 资源县| 赣榆县| 大余县| 邻水| 盐池县| 隆子县|