日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

一个自动生成评论的小工具

發布時間:2024/3/13 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一个自动生成评论的小工具 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 基本思想
    • 基礎使用
    • 詞庫的基本擴展
      • 簡單數據
      • 引用其他詞庫
      • 注釋
      • 引用多個同類組件
        • 希望后一個和前一個保持一致
        • 希望后一個和前一個不同
    • 詞庫的高級擴展
      • 空組件
      • 自定義權重
      • 制約關系
        • 為兩個相關的組件中的每個內容添加一個屬性
        • 添加一個制約關系的描述表
        • 把制約關系的描述表信息記錄在組件庫中
        • 舉例
      • 制約關系加權重
    • 下載地址

公司 App 的評分有點不盡如人意,所以就想著刷一刷評論。
前幾天運營的小妹子跑來找我們,說需要提供一些評論內容,諸如

“哇,這個應用真好用!”
“這是我見過最棒的應用”
“這個應用給我們的生活帶來了極大便利,我非常喜歡”

要的數量還不小,聽說每個月都要?
于是我就想,還是用 程序解決問題吧。完全的人工智能是不太可能的,但是建立一個小型的詞庫,設計一些簡單的規則,應該還是能解決很大問題的。

基本思想

第一步是拆分:
我們可以把評論拆分成一些標準的組件,每個標準組建其實也是可以再進行拆分的,最后變成非常簡單的規則。
例如:

  • {sentence}:完整的句子,最大的組件,可能包括以下:
    • {shortComment}:最簡單的、用于表達正向情緒的語句
    • {buyIt}:從哪里獲取的我們的智能硬件
    • {favoriteFunction}:對最喜愛的功能進行描述
    • {sorrow}:一些建議、遺憾(當然是很虛假的)
    • {symbol}:表達情緒的句尾標點
    • {face}:emoji 表情

其中的{shortComment}也可以繼續拆分,除了一些成語,還可以是 {adv}{good},也就是一個副詞加上一個表達正向的形容詞。

第二步是擴充:
我們對每一個組件進行擴充,不斷去完善每一個組件。
例如:

{adv} 可以擴充為:很、非常、極其、最……
{good} 可以擴充為:好用、極致、簡單、極客、優雅……

第三步是排列組合:
也就是隨機選取和搭配,有了前兩步的鋪墊,我們就能組合出非常多的評論。
我們還是拿 {adv}{good} 舉例:

如上我們擴充了兩個詞庫,之后我們來隨機選取其中的內容,就能組合成如下內容:
很極致、最優雅、極其簡單、非常好用、非常極客……

基礎使用

確定自己需要生成多少條評論后,在 config 文件中設置 totalNumbers 即完成了基礎設置。
之后直接執行程序即可,程序執行完成后,生成的 comment 會出現在 comment.txt 的底部。

詞庫的基本擴展

在 config 中可以擴展詞庫,需要說明的是,程序是基于 {sentence} 這個組件來運行的,因此所有拓展請基于 {sentence} 來進行。
為了適應各種情況,具體設計如下:

簡單數據

lexiconName = ['content1','content2',... ]

說明:
lexiconName 是詞庫名稱
contentN 是詞庫中的內容,注意,最后一個元素后不要加逗號

舉例:

adv = ['很','非常','最','極其' ]

引用其他詞庫

在某個詞庫中引用另一個詞庫的語法很簡單:

{lexiconName}

即把詞庫名稱用花括號包裹
舉例:

shortComment = ['{adv}{good}','令人印象深刻','強烈推薦','{adv}喜歡' ]

注釋

只是寫給自己看,用以提示自己的部分,以 # 開頭即可

# 這是一行注釋 shortComment = [ # 井號之前的是詞庫,井號之后的這部分是注釋'content1','content2',... ]

引用多個同類組件

在某個語句中出現了多個同類組件,此時分兩種情況。

希望后一個和前一個保持一致

有點類似“代詞”的概念,只要保持前后的引用名稱相同即可
例如:

shortComment = ['{face}{face}{face}{adv}{good}'... ]

希望后一個和前一個不同

此時需要在后續的組件名稱后加上數字進行區分,例如

shortComment = ['{face}{face1}{face2}{adv}{good}'... ]

詞庫的高級擴展

空組件

為了自然,有些組件可能需要需要填充為,此時需要使用 '_',千萬不要使用 ''。
例如:

symbol = ['_', # 這是正確的,結果不會顯示"_",而是什么有不會顯示'', # 這是錯誤的,會導致生成失敗'!','!!','。', ]

自定義權重

為了更加自然、達到更好的效果,組件中不同內容出現的概率可能不同,此時可以通過自定義權重的方式解決。
語法如下:

lexiconName = [['content1.1', chance1],['content1.2', chance2],...'content2.1','content2.2',... ]

說明:
content1.N 是需要自定義權重的內容,chanceN 即對應內容的權重(概率)。
content2.N 是不需要自定義權重的內容,它們會平分沒有定義的那部分權重。

舉例:

face = [['_', 0.8], # 無表情的占 80%['?', 0.05], # 這個表情占 5%'?', # 剩下的所有表情均分剩下的 15% 概率'?','?','?','?','?','?','?' ]

制約關系

如果組件之間存在制約關系,例如 {device}(設備組件)和 {placeInHome} (家中位置組件)就存在著制約關系。
{device} 中的電飯鍋之類的設備,只能與 {placeInHome} 中的廚房等位置關聯,因此需要單獨的方式來維護這種制約關系。

這會比較麻煩,有三步:

  • 為兩個相關的組件中的每個內容添加一個屬性
  • 添加一個制約關系的描述表
  • 把制約關系的描述表信息記錄在組件庫中

為兩個相關的組件中的每個內容添加一個屬性

語法如下:

lexicon = {'conditions': {}, # 用來記錄制約關系,這里先不填'v':{'content1':property1,'content2':property2,'content3':property3,...} }

需要說明的是,這里支持 一個屬性(propertyN)對應多個內容(contentN)。
例如:

lexicon = {'conditions': {}, # 用來記錄制約關系,這里先不填'v':{'content1':property1,'content2':property1,'content3':property2,...} }

添加一個制約關系的描述表

假設兩個組件庫的名稱分別為 lexicon1 和 lexicon2,創建的描述表需要命名為 lexicon1VSlexicon2。
表的內容如下:

lexicon1VSlexicon2 = ['property1_of_lexicon1':[the_list_of_lexicon2_properties, ...],'property2_of_lexicon1':[the_list_of_lexicon2_properties, ...],'property3_of_lexicon1':[the_list_of_lexicon2_properties, ...] ]

把制約關系的描述表信息記錄在組件庫中

需要在 lexicon1 中的 conditions 部分增加:'lexicon2': 'lexicon1VSlexicon2'
同時在 lexicon2 中的 conditions 部分增加: 'lexicon1': 'lexicon1VSlexicon2'

舉例

# 第一個組件庫 device = {'conditions':{'placeInHome': 'deviceVSPlaceInHome'},'v':{'插座':'p', # plugin'電量統計插座':'p','球泡燈':'b', # bulb'彩燈':'b','空調':'c', # circumstance'空氣凈化器':'c','電風扇':'c','凈水器':'k', # kitchen'家用攝像機':'s', # 安全'門磁':'s'} }# 第二個組件庫 placeInHome = {'conditions':{'device': 'deviceVSPlaceInHome',},'v':{'客廳':'l','廚房':'k','臥室':'b','書房':'s','樓上':'u','樓下':'d','衛生間':'w'} }# 記錄制約關系的表 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'] }

制約關系加權重

還是以 {device} 為例,把概率加到屬性之后,并把屬性和概率使用方括號包起來即可。
舉例:

device = {'conditions':{'placeInHome': 'deviceVSPlaceInHome','purpose': 'deviceVSPurpose'},'v':{'插座':['p', 0.2], # plugin'電量統計插座':['p', 0.05],'墻面開關':['p', 0.03],'球泡燈':['b', 0.15], # bulb'彩燈':'b','吸頂燈':'b','燈帶':'b','空調':'c', # circumstance'空氣凈化器':'c','電風扇':'c','凈水器':'k', # kitchen'沖奶機':'k','面包機':'k','家用攝像機':'s', # 安全'門磁':'s'} }

下載地址

項目上傳到了 GitHub 上,歡迎關注和提建議。
https://github.com/maquedexiju/AutoComment

總結

以上是生活随笔為你收集整理的一个自动生成评论的小工具的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。