一个自动生成评论的小工具
文章目錄
- 基本思想
- 基礎(chǔ)使用
- 詞庫的基本擴(kuò)展
- 簡單數(shù)據(jù)
- 引用其他詞庫
- 注釋
- 引用多個同類組件
- 希望后一個和前一個保持一致
- 希望后一個和前一個不同
- 詞庫的高級擴(kuò)展
- 空組件
- 自定義權(quán)重
- 制約關(guān)系
- 為兩個相關(guān)的組件中的每個內(nèi)容添加一個屬性
- 添加一個制約關(guān)系的描述表
- 把制約關(guān)系的描述表信息記錄在組件庫中
- 舉例
- 制約關(guān)系加權(quán)重
- 下載地址
公司 App 的評分有點(diǎn)不盡如人意,所以就想著刷一刷評論。
前幾天運(yùn)營的小妹子跑來找我們,說需要提供一些評論內(nèi)容,諸如
“哇,這個應(yīng)用真好用!”
“這是我見過最棒的應(yīng)用”
“這個應(yīng)用給我們的生活帶來了極大便利,我非常喜歡”
要的數(shù)量還不小,聽說每個月都要?
于是我就想,還是用 程序解決問題吧。完全的人工智能是不太可能的,但是建立一個小型的詞庫,設(shè)計(jì)一些簡單的規(guī)則,應(yīng)該還是能解決很大問題的。
基本思想
第一步是拆分:
我們可以把評論拆分成一些標(biāo)準(zhǔn)的組件,每個標(biāo)準(zhǔn)組建其實(shí)也是可以再進(jìn)行拆分的,最后變成非常簡單的規(guī)則。
例如:
- {sentence}:完整的句子,最大的組件,可能包括以下:
- {shortComment}:最簡單的、用于表達(dá)正向情緒的語句
- {buyIt}:從哪里獲取的我們的智能硬件
- {favoriteFunction}:對最喜愛的功能進(jìn)行描述
- {sorrow}:一些建議、遺憾(當(dāng)然是很虛假的)
- {symbol}:表達(dá)情緒的句尾標(biāo)點(diǎn)
- {face}:emoji 表情
其中的{shortComment}也可以繼續(xù)拆分,除了一些成語,還可以是 {adv}{good},也就是一個副詞加上一個表達(dá)正向的形容詞。
第二步是擴(kuò)充:
我們對每一個組件進(jìn)行擴(kuò)充,不斷去完善每一個組件。
例如:
{adv} 可以擴(kuò)充為:很、非常、極其、最……
{good} 可以擴(kuò)充為:好用、極致、簡單、極客、優(yōu)雅……
第三步是排列組合:
也就是隨機(jī)選取和搭配,有了前兩步的鋪墊,我們就能組合出非常多的評論。
我們還是拿 {adv}{good} 舉例:
如上我們擴(kuò)充了兩個詞庫,之后我們來隨機(jī)選取其中的內(nèi)容,就能組合成如下內(nèi)容:
很極致、最優(yōu)雅、極其簡單、非常好用、非常極客……
基礎(chǔ)使用
確定自己需要生成多少條評論后,在 config 文件中設(shè)置 totalNumbers 即完成了基礎(chǔ)設(shè)置。
之后直接執(zhí)行程序即可,程序執(zhí)行完成后,生成的 comment 會出現(xiàn)在 comment.txt 的底部。
詞庫的基本擴(kuò)展
在 config 中可以擴(kuò)展詞庫,需要說明的是,程序是基于 {sentence} 這個組件來運(yùn)行的,因此所有拓展請基于 {sentence} 來進(jìn)行。
為了適應(yīng)各種情況,具體設(shè)計(jì)如下:
簡單數(shù)據(jù)
lexiconName = ['content1','content2',... ]說明:
lexiconName 是詞庫名稱
contentN 是詞庫中的內(nèi)容,注意,最后一個元素后不要加逗號
舉例:
adv = ['很','非常','最','極其' ]引用其他詞庫
在某個詞庫中引用另一個詞庫的語法很簡單:
{lexiconName}即把詞庫名稱用花括號包裹
舉例:
注釋
只是寫給自己看,用以提示自己的部分,以 # 開頭即可
# 這是一行注釋 shortComment = [ # 井號之前的是詞庫,井號之后的這部分是注釋'content1','content2',... ]引用多個同類組件
在某個語句中出現(xiàn)了多個同類組件,此時分兩種情況。
希望后一個和前一個保持一致
有點(diǎn)類似“代詞”的概念,只要保持前后的引用名稱相同即可
例如:
希望后一個和前一個不同
此時需要在后續(xù)的組件名稱后加上數(shù)字進(jìn)行區(qū)分,例如
shortComment = ['{face}{face1}{face2}{adv}{good}'... ]詞庫的高級擴(kuò)展
空組件
為了自然,有些組件可能需要需要填充為空,此時需要使用 '_',千萬不要使用 ''。
例如:
自定義權(quán)重
為了更加自然、達(dá)到更好的效果,組件中不同內(nèi)容出現(xiàn)的概率可能不同,此時可以通過自定義權(quán)重的方式解決。
語法如下:
說明:
content1.N 是需要自定義權(quán)重的內(nèi)容,chanceN 即對應(yīng)內(nèi)容的權(quán)重(概率)。
content2.N 是不需要自定義權(quán)重的內(nèi)容,它們會平分沒有定義的那部分權(quán)重。
舉例:
face = [['_', 0.8], # 無表情的占 80%['?', 0.05], # 這個表情占 5%'?', # 剩下的所有表情均分剩下的 15% 概率'?','?','?','?','?','?','?' ]制約關(guān)系
如果組件之間存在制約關(guān)系,例如 {device}(設(shè)備組件)和 {placeInHome} (家中位置組件)就存在著制約關(guān)系。
{device} 中的電飯鍋之類的設(shè)備,只能與 {placeInHome} 中的廚房等位置關(guān)聯(lián),因此需要單獨(dú)的方式來維護(hù)這種制約關(guān)系。
這會比較麻煩,有三步:
- 為兩個相關(guān)的組件中的每個內(nèi)容添加一個屬性
- 添加一個制約關(guān)系的描述表
- 把制約關(guān)系的描述表信息記錄在組件庫中
為兩個相關(guān)的組件中的每個內(nèi)容添加一個屬性
語法如下:
lexicon = {'conditions': {}, # 用來記錄制約關(guān)系,這里先不填'v':{'content1':property1,'content2':property2,'content3':property3,...} }需要說明的是,這里支持 一個屬性(propertyN)對應(yīng)多個內(nèi)容(contentN)。
例如:
添加一個制約關(guān)系的描述表
假設(shè)兩個組件庫的名稱分別為 lexicon1 和 lexicon2,創(chuàng)建的描述表需要命名為 lexicon1VSlexicon2。
表的內(nèi)容如下:
把制約關(guān)系的描述表信息記錄在組件庫中
需要在 lexicon1 中的 conditions 部分增加:'lexicon2': 'lexicon1VSlexicon2'
同時在 lexicon2 中的 conditions 部分增加: 'lexicon1': 'lexicon1VSlexicon2'
舉例
# 第一個組件庫 device = {'conditions':{'placeInHome': 'deviceVSPlaceInHome'},'v':{'插座':'p', # plugin'電量統(tǒng)計(jì)插座':'p','球泡燈':'b', # bulb'彩燈':'b','空調(diào)':'c', # circumstance'空氣凈化器':'c','電風(fēng)扇':'c','凈水器':'k', # kitchen'家用攝像機(jī)':'s', # 安全'門磁':'s'} }# 第二個組件庫 placeInHome = {'conditions':{'device': 'deviceVSPlaceInHome',},'v':{'客廳':'l','廚房':'k','臥室':'b','書房':'s','樓上':'u','樓下':'d','衛(wèi)生間':'w'} }# 記錄制約關(guān)系的表 deviceVSPlaceInHome = {'p': ['l', 'k', 'b', 's', 'u', 'd', 'w'],'b': ['l', 'k', 'b', 's', 'u', 'd', 'w'],'c': ['l', 'k', 'b', 's', 'u', 'd'],'k': ['k', 'u', 'd'],'s': ['l', 'k', 'b', 's', 'u', 'd'] }制約關(guān)系加權(quán)重
還是以 {device} 為例,把概率加到屬性之后,并把屬性和概率使用方括號包起來即可。
舉例:
下載地址
項(xiàng)目上傳到了 GitHub 上,歡迎關(guān)注和提建議。
https://github.com/maquedexiju/AutoComment
總結(jié)
以上是生活随笔為你收集整理的一个自动生成评论的小工具的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【诗歌】值得背诵古诗(一)
- 下一篇: 阶段小练—篮球比赛计分器