乙個自動生成評論的小工具

2021-08-14 23:29:33 字數 3556 閱讀 7563

詞庫的高階擴充套件

制約關係加權重

「哇,這個應用真好用!」

「這是我見過最棒的應用」

「這個應用給我們的生活帶來了極大便利,我非常喜歡」

要的數量還不小,聽說每個月都要?

於是我就想,還是用 程式解決問題吧。完全的人工智慧是不太可能的,但是建立乙個小型的詞庫,設計一些簡單的規則,應該還是能解決很大問題的。

第一步是拆分:

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

第二步是擴充:

我們對每乙個元件進行擴充,不斷去完善每乙個元件。

例如: 可以擴充為:很、非常、極其、最……

可以擴充為:好用、極致、簡單、極客、優雅……

第三步是排列組合:如上我們擴充了兩個詞庫,之後我們來隨機選取其中的內容,就能組合成如下內容:

很極致、最優雅、極其簡單、非常好用、非常極客……

在 config 中可以擴充套件詞庫,需要說明的是,程式是基於 這個元件來執行的,因此所有拓展請基於 來進行。

為了適應各種情況,具體設計如下:

lexiconname = [

'content1',

'content2',

...]

說明:

lexiconname 是詞庫名稱

contentn 是詞庫中的內容,注意,最後乙個元素後不要加逗號

舉例:

adv = [

'很',

'非常',

'最',

'極其'

]

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

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

舉例:

shortcomment = [

'','令人印象深刻',

'強烈推薦',

'喜歡'

]

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

# 這是一行注釋

shortcomment = [ # 井號之前的是詞庫,井號之後的這部分是注釋

'content1',

'content2',

...]

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

希望後乙個和前乙個保持一致

有點類似「代詞」的概念,只要保持前後的引用名稱相同即可

例如:

shortcomment = [

''...

]

希望後乙個和前乙個不同

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

shortcomment = [

''...

]

為了自然,有些元件可能需要需要填充為,此時需要使用'_',千萬不要使用''

例如:

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% 概率

'?',

'?',

'?',

'?',

'?',

'?',

'?']

如果元件之間存在制約關係,例如 (裝置元件)和 (家中位置元件)就存在著制約關係。

中的電飯鍋之類的裝置,只能與 中的廚房等位置關聯,因此需要單獨的方式來維護這種制約關係。

這會比較麻煩,有三步:

為兩個相關的元件中的每個內容新增乙個屬性

語法如下:

lexicon = , # 用來記錄制約關係,這裡先不填

'v':

}

需要說明的是,這裡支援 乙個屬性(propertyn)對應多個內容(contentn)。

例如:

lexicon = , # 用來記錄制約關係,這裡先不填

'v':

}

新增乙個制約關係的描述表

假設兩個元件庫的名稱分別為 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 = ,

'v':

}# 第二個元件庫

placeinhome = ,

'v':

}# 記錄制約關係的表

devicevsplaceinhome =

還是以 為例,把概率加到屬性之後,並把屬性和概率使用方括號包起來即可。

舉例:

device = ,

'v':

}

專案上傳到了 github 上,歡迎關注和提建議。

diy乙個小工具

仔細分析任務,其實關鍵點就是環境變數,建立乙個新程序,然後把環境變數塊傳遞進去,變可完成任務,環境塊是乙個string,name value 而且對於unicode 和ansi 的對待方式不同,如果是unicode,createprocess時要傳遞 dword dwcreationflags這個引...

介紹乙個小工具 SSL exporter

kubeadm 安裝時的證書有效期設定為 1 年,雖說有 sealos 這樣的不知名安裝器以及各種方案來更新證書,但是對於像我一樣經常跟不知 的 kubernetes 集群打交道的人來說,這個有效期就是達摩什麼的利劍,不一定什麼時候會砍到脖子上。如果能用 prometheus 對證書有效期進行監控或...

介紹乙個小工具 Linqer

這些天寫linq挺煩人的,就上網搜搜可有什麼好的sql轉linq的工具,咦,馬上就看上了linqer。哈哈,介紹一下使用方法吧 第一步 執行這個神馬檔案。第二步 指定乙個路徑給它。他會生成乙個linqer.exe可執行的檔案。第三步 執行這個exe檔案,點選add按鈕,第四步 在彈出的add介面中,...