最近在看pymining開源專案,對其詞頻矩陣的生成過程有些模糊,現在過一遍。
首先,pymining中所定義詞頻矩陣是乙個什麼樣的矩陣?它是乙個行 為 文章編號,列為單詞的矩陣,而矩陣中的元素是該列單詞在該行文章中出現的次數。
例如:生成的詞頻矩陣可以是:
小明上學
青菜蘿蔔
文章1211
0文章221
01pymining是怎樣完成這個過程的呢?詞頻矩陣又是採用何種形式儲存的呢? 接下來將一一介紹:
先介紹一下pymining的配置檔案:
<?xml version="1.0"?>
<__segmenter__>
dict/dict.main
<__matrix__>
<__global__>
mining/term_to_id
mining/id_to_term
mining/id_to_doc_count
mining/class_to_doc_count
mining/id_to_idf
<__filter__>
0.9maxmining/filter.log
mining/filter.model
mining/*****_bayes.model
mining/*****_bayes.log
mining/*****_bayes.model
mining/*****_bayes.log
其中:dict/dict.main為pymining自帶字典,其中包含41897個單詞,每個單詞佔一行。
1 pymining首先通過 configuration(minidom.parse(path).childnodes[0]) 得到物件,它儲存在configuration物件下的mcurnode
2 然後在類globalinfo中儲存物件,並用四個字串來分別儲存「mining/term_to_id」,「mining/id_to_term」,「mining/id_to_doc_count」 ,「mining/class_to_doc_count」,「mining/id_to_idf」。
3 生成乙個text2matrix類的物件 其內部生成了乙個segmenter物件segmenter,segmenter的curnode是<__segmenter__>物件 ,然後segmenter的內部生成了乙個字典maindict,字典的key是dict.main中的每乙個單詞,value全部為1。
4 通過text2matrix類自帶的createtrainmatrix函式生成詞頻矩陣。
pymining採用termtoid字典(key:word,value:id) ,idtoterm字典(key: id,value: word) 和三個列表col,row,val,來儲存訓練文字轉化成的詞頻矩陣(訓練文字逐行劃分)
termtoid: termtoid與idtoterm相反
若再次輸入一行文字: 小白也喜歡小明 小白喜歡吃蒜薹,小白喜歡跳繩
則termtoid: termtoid與idtoterm相反
所以col row val 的含義是:
Python中的計數(詞頻)
a.用自定義函式來統計技術 def get count sequence counts for x in sequence if x in sequence count x 1 else count x 1 return counts 或者利用python標準庫 from collections i...
統計中文句子中的詞頻
題目內容 對於乙個已分詞的句子 可方便地擴充套件到統計檔案中的詞頻 我 是 乙個 測試 句子 大家 趕快 來 統計 我 吧 大家 趕快 來 統計 我 吧 大家 趕快 來 統計 我 吧 重要 事情 說 三遍 可以用collections模組中的counter 函式方便地統計詞頻,例如可用如下 impo...
詞頻數的統計
做乙個詞頻統計程式,該程式具有以下功能 基本要求 1 可匯入任意英文文字檔案 2 統計該英文檔案中單詞數和各單詞出現的頻率 次數 並能將單詞按字典順序輸出。3 將單詞及頻率寫入檔案。提高要求 完成基本要求的基礎上,實現下述功能 1.實現gui介面。2.將單詞及頻率寫入資料庫。include incl...