詞庫的高階擴充套件
制約關係加權重
「哇,這個應用真好用!」要的數量還不小,聽說每個月都要?「這是我見過最棒的應用」
「這個應用給我們的生活帶來了極大便利,我非常喜歡」
於是我就想,還是用 程式解決問題吧。完全的人工智慧是不太可能的,但是建立乙個小型的詞庫,設計一些簡單的規則,應該還是能解決很大問題的。
第一步是拆分:
其中的也可以繼續拆分,除了一些成語,還可以是 ,也就是乙個副詞加上乙個表達正向的形容詞。
第二步是擴充:
我們對每乙個元件進行擴充,不斷去完善每乙個元件。
例如: 可以擴充為:很、非常、極其、最……
可以擴充為:好用、極致、簡單、極客、優雅……
第三步是排列組合:如上我們擴充了兩個詞庫,之後我們來隨機選取其中的內容,就能組合成如下內容:
很極致、最優雅、極其簡單、非常好用、非常極客……
在 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介面中,...