-
當(dāng)前位置:首頁 > 創(chuàng)意學(xué)院 > 技術(shù) > 專題列表 > 正文
文章生成器的作用和意義(文章生成器的原理)
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于文章生成器的作用和意義的問題,以下是小編對(duì)此問題的歸納整理,讓我們一起來看看吧。
開始之前先推薦一個(gè)非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對(duì)話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁版、PC客戶端
官網(wǎng):https://ai.de1919.com。
本文目錄:
無極原創(chuàng)文章生成器第三代怎么用
這款軟件的使用方法有些復(fù)雜,其實(shí)就是講同樣的文章分句或者分詞,然后進(jìn)行同義句或者同義詞的替換。這樣一句話有大量的同義句,生成的時(shí)候就隨機(jī)抽取一句進(jìn)行替換,這樣就生成了通順而且都不同的文章。
它主打的功能是云文章庫功能,豈是就是把相關(guān)行業(yè)的文章編寫成了句子庫,要想生成的時(shí)候直接生成就行了。
云文章庫都是他們自己寫的,所以不可能任何行業(yè)都有。比如像游戲,減肥,面膜等比較流行大眾的行業(yè),他們一定有相關(guān)詞庫,比如說機(jī)器配件,或者冷門行業(yè),就肯定沒有了。
你可以百度搜索一下
無極原創(chuàng)文章生成器
。有在線生成體驗(yàn)的功能可以試用
如何更好地理解Python迭代器和生成器
Python這門語言中,生成器毫無疑問是最有用的特性之一。與此同時(shí),也是使用的最不廣泛的Python特性之一。究其原因,主要是因?yàn)椋谄渌髁髡Z言里面沒有生成器的概念。正是由于生成器是一
個(gè)“新”的東西,所以,它一方面沒有引起廣大工程師的重視,另一方面,也增加了工程師的學(xué)習(xí)成本,
最終導(dǎo)致大家錯(cuò)過了Python中如此有用的一個(gè)特性。
我的這篇文章,希望通過簡單易懂的方式,深入淺出地介紹Python的生成器,以改變“如此有用的特性卻
使用極不廣泛”的現(xiàn)象。本文的組織如下:在第1章,我們簡單地介紹了Python中的迭代器協(xié)議;在本文
第2章,將會(huì)詳細(xì)介紹生成器的概念和語法;在第3章,將會(huì)給出一個(gè)有用的例子,說明使用生成器的好
處;在本文最后,簡單的討論了使用生成器的注意事項(xiàng)。
1. 迭代器協(xié)議
由于生成器自動(dòng)實(shí)現(xiàn)了迭代器協(xié)議,而迭代器協(xié)議對(duì)很多人來說,也是一個(gè)較為抽象的概念。所以,為了
更好的理解生成器,我們需要簡單的回顧一下迭代器協(xié)議的概念。
1. 迭代器協(xié)議是指:對(duì)象需要提供next方法,它要么返回迭代中的下一項(xiàng),要么就引起一個(gè)
StopIteration異常,以終止迭代
2. 可迭代對(duì)象就是:實(shí)現(xiàn)了迭代器協(xié)議的對(duì)象
3. 協(xié)議是一種約定,可迭代對(duì)象實(shí)現(xiàn)迭代器協(xié)議,Python的內(nèi)置工具(如for循環(huán),sum,min,max函
數(shù)等)使用迭代器協(xié)議訪問對(duì)象。
舉個(gè)例子:在所有語言中,我們都可以使用for循環(huán)來遍歷數(shù)組,Python的list底層實(shí)現(xiàn)是一個(gè)數(shù)組,所
以,我們可以使用for循環(huán)來遍歷list。如下所示:
>>> for n in [1, 2, 3, 4]:
... print n
但是,對(duì)Python稍微熟悉一點(diǎn)的朋友應(yīng)該知道,Python的for循環(huán)不但可以用來遍歷list,還可以用來遍歷
文件對(duì)象,如下所示:
>>> with open(‘/etc/passwd’) as f: # 文件對(duì)象提供迭代器協(xié)議
... for line in f: # for循環(huán)使用迭代器協(xié)議訪問文件
... print line
...
為什么在Python中,文件還可以使用for循環(huán)進(jìn)行遍歷呢?這是因?yàn)椋赑ython中,文件對(duì)象實(shí)現(xiàn)了迭代
器協(xié)議,for循環(huán)并不知道它遍歷的是一個(gè)文件對(duì)象,它只管使用迭代器協(xié)議訪問對(duì)象即可。正是由于
Python的文件對(duì)象實(shí)現(xiàn)了迭代器協(xié)議,我們才得以使用如此方便的方式訪問文件,如下所示:
>>> f = open('/etc/passwd')
>>> dir(f)
['__class__', '__enter__', '__exit__', '__iter__', '__new__', 'writelines', '...'
2. 生成器
Python使用生成器對(duì)延遲操作提供了支持。所謂延遲操作,是指在需要的時(shí)候才產(chǎn)生結(jié)果,而不是立即產(chǎn)
生結(jié)果。這也是生成器的主要好處。
Python有兩種不同的方式提供生成器:
2017/11/6 如何更好地理解Python迭代器和生成器? - 知乎
https://www.zhihu.com/question/20829330 2/5
1. 生成器函數(shù):常規(guī)函數(shù)定義,但是,使用yield語句而不是return語句返回結(jié)果。yield語句一次返回一
個(gè)結(jié)果,在每個(gè)結(jié)果中間,掛起函數(shù)的狀態(tài),以便下次重它離開的地方繼續(xù)執(zhí)行
2. 生成器表達(dá)式:類似于列表推導(dǎo),但是,生成器返回按需產(chǎn)生結(jié)果的一個(gè)對(duì)象,而不是一次構(gòu)建一個(gè)
結(jié)果列表
2.1 生成器函數(shù)
我們來看一個(gè)例子,使用生成器返回自然數(shù)的平方(注意返回的是多個(gè)值):
def gensquares(N):
for i in range(N):
yield i ** 2
for item in gensquares(5):
print item,
使用普通函數(shù):
def gensquares(N):
res = []
for i in range(N):
res.append(i*i)
return res
for item in gensquares(5):
print item,
可以看到,使用生成器函數(shù)代碼量更少。
2.2 生成器表達(dá)式
使用列表推導(dǎo),將會(huì)一次產(chǎn)生所有結(jié)果:
>>> squares = [x**2 for x in range(5)]
>>> squares
[0, 1, 4, 9, 16]
將列表推導(dǎo)的中括號(hào),替換成圓括號(hào),就是一個(gè)生成器表達(dá)式:
>>> squares = (x**2 for x in range(5))
>>> squares>>> next(squares)
0
>>> next(squares)
1
>>> next(squares)
4
>>> list(squares)
[9, 16]
Python不但使用迭代器協(xié)議,讓for循環(huán)變得更加通用。大部分內(nèi)置函數(shù),也是使用迭代器協(xié)議訪問對(duì)象
的。例如, sum函數(shù)是Python的內(nèi)置函數(shù),該函數(shù)使用迭代器協(xié)議訪問對(duì)象,而生成器實(shí)現(xiàn)了迭代器協(xié)
2017/11/6 如何更好地理解Python迭代器和生成器? - 知乎
https://www.zhihu.com/question/20829330 3/5
議,所以,我們可以直接這樣計(jì)算一系列值的和:
>>> sum(x ** 2 for x in xrange(4))
而不用多此一舉的先構(gòu)造一個(gè)列表:
>>> sum([x ** 2 for x in xrange(4)])
2.3 再看生成器
前面已經(jīng)對(duì)生成器有了感性的認(rèn)識(shí),我們以生成器函數(shù)為例,再來深入探討一下Python的生成器:
1. 語法上和函數(shù)類似:生成器函數(shù)和常規(guī)函數(shù)幾乎是一樣的。它們都是使用def語句進(jìn)行定義,差別在
于,生成器使用yield語句返回一個(gè)值,而常規(guī)函數(shù)使用return語句返回一個(gè)值
2. 自動(dòng)實(shí)現(xiàn)迭代器協(xié)議:對(duì)于生成器,Python會(huì)自動(dòng)實(shí)現(xiàn)迭代器協(xié)議,以便應(yīng)用到迭代背景中(如for
循環(huán),sum函數(shù))。由于生成器自動(dòng)實(shí)現(xiàn)了迭代器協(xié)議,所以,我們可以調(diào)用它的next方法,并且,
在沒有值可以返回的時(shí)候,生成器自動(dòng)產(chǎn)生StopIteration異常
3. 狀態(tài)掛起:生成器使用yield語句返回一個(gè)值。yield語句掛起該生成器函數(shù)的狀態(tài),保留足夠的信息,
以便之后從它離開的地方繼續(xù)執(zhí)行
3. 示例
我們?cè)賮砜磧蓚€(gè)生成器的例子,以便大家更好的理解生成器的作用。
首先,生成器的好處是延遲計(jì)算,一次返回一個(gè)結(jié)果。也就是說,它不會(huì)一次生成所有的結(jié)果,這對(duì)于大
數(shù)據(jù)量處理,將會(huì)非常有用。
大家可以在自己電腦上試試下面兩個(gè)表達(dá)式,并且觀察內(nèi)存占用情況。對(duì)于前一個(gè)表達(dá)式,我在自己的電
腦上進(jìn)行測試,還沒有看到最終結(jié)果電腦就已經(jīng)卡死,對(duì)于后一個(gè)表達(dá)式,幾乎沒有什么內(nèi)存占用。
sum([i for i in xrange(10000000000)])
sum(i for i in xrange(10000000000))
除了延遲計(jì)算,生成器還能有效提高代碼可讀性。例如,現(xiàn)在有一個(gè)需求,求一段文字中,每個(gè)單詞出現(xiàn)
的位置。
不使用生成器的情況:
def index_words(text):
result = []
if text:
result.append(0)
for index, letter in enumerate(text, 1):
if letter == ' ':
result.append(index)
return result
使用生成器的情況:
2017/11/6 如何更好地理解Python迭代器和生成器? - 知乎
https://www.zhihu.com/question/20829330 4/5
def index_words(text):
if text:
yield 0
for index, letter in enumerate(text, 1):
if letter == ' ':
yield index
這里,至少有兩個(gè)充分的理由說明 ,使用生成器比不使用生成器代碼更加清晰:
1. 使用生成器以后,代碼行數(shù)更少。大家要記住,如果想把代碼寫的Pythonic,在保證代碼可讀性的前
提下,代碼行數(shù)越少越好
2. 不使用生成器的時(shí)候,對(duì)于每次結(jié)果,我們首先看到的是result.append(index),其次,才是index。
也就是說,我們每次看到的是一個(gè)列表的append操作,只是append的是我們想要的結(jié)果。使用生成
器的時(shí)候,直接yield index,少了列表append操作的干擾,我們一眼就能夠看出,代碼是要返回
index。
這個(gè)例子充分說明了,合理使用生成器,能夠有效提高代碼可讀性。只要大家完全接受了生成器的概念,
理解了yield語句和return語句一樣,也是返回一個(gè)值。那么,就能夠理解為什么使用生成器比不使用生成
器要好,能夠理解使用生成器真的可以讓代碼變得清晰易懂。
4. 使用生成器的注意事項(xiàng)
相信通過這篇文章,大家已經(jīng)能夠理解生成器的作用和好處。但是,還沒有結(jié)束,使用生成器,也有一點(diǎn)
注意事項(xiàng)。
我們直接來看例子,假設(shè)文件中保存了每個(gè)省份的人口總數(shù),現(xiàn)在,需要求每個(gè)省份的人口占全國總?cè)丝?br/>的比例。顯然,我們需要先求出全國的總?cè)丝?,然后在遍歷每個(gè)省份的人口,用每個(gè)省的人口數(shù)除以總?cè)?br/>口數(shù),就得到了每個(gè)省份的人口占全國人口的比例。
如下所示:
def get_province_population(filename):
with open(filename) as f:
for line in f:
yield int(line)
gen = get_province_population('data.txt')
all_population = sum(gen)
#print all_population
for population in gen:
print population / all_population
執(zhí)行上面這段代碼,將不會(huì)有任何輸出,這是因?yàn)?,生成器只能遍歷一次。在我們執(zhí)行sum語句的時(shí)候,
就遍歷了我們的生成器,當(dāng)我們?cè)俅伪闅v我們的生成器的時(shí)候,將不會(huì)有任何記錄。所以,上面的代碼不
會(huì)有任何輸出。
因此,生成器的唯一注意事項(xiàng)就是:生成器只能遍歷一次。
5. 總結(jié)
2017/11/6 如何更好地理解Python迭代器和生成器? - 知乎
https://www.zhihu.com/question/20829330 5/5
本文深入淺出地介紹了Python中,一個(gè)容易被大家忽略的重要特性,即Python的生成器。為了講解生成
器,本文先介紹了迭代器協(xié)議,然后介紹了生成器函數(shù)和生成器表達(dá)式,并通過示例演示了生成器的優(yōu)點(diǎn)
和注意事項(xiàng)。在實(shí)際工作中,充分利用Python生成器,不但能夠減少內(nèi)存使用,還能夠提高代碼可讀性。
掌握生成器也是Python高手的標(biāo)配。希望本文能夠幫助大家理解Python的生成器
智能原創(chuàng)自動(dòng)寫作工具用什么好?求幫助!
智能原創(chuàng)自動(dòng)寫作工具推薦:
第1個(gè):搭畫快寫
搭畫快寫是國內(nèi)專業(yè)的AI原創(chuàng)內(nèi)容寫作平臺(tái),它基于強(qiáng)大的4.0-6.0自然語言模型,從寫作、批量寫作、一鍵發(fā)布、批量發(fā)布、文字加粗、自動(dòng)配圖、AI智能封面設(shè)計(jì)、自動(dòng)外鏈等全流程一鍵搞定。搭畫快寫可以讓軟文、論文、視頻腳本、評(píng)論、小說、電商產(chǎn)品介紹、企業(yè)公司品牌介紹等一鍵生成。搭畫快寫目前也是國內(nèi)AI人工智能企業(yè)營銷服務(wù)領(lǐng)先的平臺(tái)。
第2個(gè):觸站
觸站是結(jié)合AI繪畫、AI文章自動(dòng)生成為一體的綜合性AI人工智能內(nèi)容生成平臺(tái),它通過使用AI技術(shù)來提供一站式內(nèi)容創(chuàng)作服務(wù),從AI繪畫、AI原創(chuàng)文章、AI視頻、AI設(shè)計(jì)到AI聲音,全方位為個(gè)人和企業(yè)提供一站式內(nèi)容解決方案。
第3個(gè):文心一言
文心一言是一家專注于AI文章創(chuàng)作的企業(yè)文化服務(wù)商,旨在為企業(yè)提供高效率、高質(zhì)量、高性價(jià)比的文案輸出。作為一家AI企業(yè)級(jí)寫作平臺(tái),它具備豐富的自然語言處理技術(shù),在文章的選題、結(jié)構(gòu)、語法等方面具有的完全的自主能力,可以無需人工介入就能自動(dòng)生成符合企業(yè)需求的各種文本創(chuàng)作。
第4個(gè):輕微課
輕微課是一款可以快速生成微課視頻內(nèi)容的AI平臺(tái),它基于深度學(xué)習(xí)算法,通過自動(dòng)抽取并整理互聯(lián)網(wǎng)上的視頻、音頻、圖文等信息資源,基于業(yè)務(wù)數(shù)據(jù)模型生成符合企業(yè)需求的微課。平臺(tái)用戶可以根據(jù)具體的業(yè)務(wù)需求,快速生成和發(fā)布符合企業(yè)風(fēng)格的微課視頻。
大家一起來討論:“文章生成器”的誕生!
我覺得還是有一定難度吧.如果用戶換了主題,又要用同一個(gè)程序生成另外一篇文章.我想這個(gè)需要一個(gè)很大的數(shù)據(jù)庫,根據(jù)一些關(guān)鍵字在數(shù)據(jù)庫中進(jìn)行檢索,把結(jié)果拼成一篇文章.檢索可能不是難事,但要把結(jié)果拼成一篇有意義,讀得通的文章,很難吧以上就是關(guān)于文章生成器的作用和意義相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會(huì)為您講解更多精彩的知識(shí)和內(nèi)容。
推薦閱讀:
一鍵生成文章生成器手機(jī)版(一鍵生成文章生成器手機(jī)版下載)
關(guān)鍵詞ai文章生成器免費(fèi)版蘋果(關(guān)鍵詞ai文章生成器免費(fèi)版蘋果手機(jī))
用ai原創(chuàng)文章生成器(用ai原創(chuàng)文章生成器的軟件)
云服務(wù)ecs的快照功能有哪些(云服務(wù)ecs的快照功能有哪些用途)
怎么讓客戶同意加微信的話術(shù)(怎么讓顧客主動(dòng)加微信)