估算乙個字詞重要程度的方法TF IDF 機器學習

2021-08-17 21:46:46 字數 2518 閱讀 4520

tf-idf演算法

一種過濾掉常見詞語,保留重要詞語的演算法。

tf-idf是一種統計方法(演算法),用於評估一字詞對於乙個檔案集乙個語料庫中的其中乙份檔案的重要程度。

1、字詞的重要性隨著它在檔案中出現次數成正比增加。

2、字詞的

重要性隨著它在語料庫中出現的頻率成反比下降

3、詞頻tf:(term frequency):給定詞在該檔案中出現的頻率。

4、逆向檔案頻率idf(inverse document frequency):乙個詞語普遍重要性的度量。(用來度量乙個詞語的普片重要性

)計算方法:log(總檔案數目/包含該詞語的檔案數目)

|d|:語料庫中的文字(檔案)總數

j:包含該詞語的文字(檔案)總數。

5、計算tf與idf的乘積。

通過計算,可以求出某一檔案內的高頻詞,以及該詞語在整個檔案集合中的低檔案頻率。(其實後半句我也不太懂)

舉例:(以下文字忽略大小寫)

文字1:my dog ate my homework.

文字2:my cat ate the sandwich.

文字3:a dolphin ate the homework.

演算法從文字1開始檢索,先將 my、 dog、 ate依次放入詞袋。當檢索到文字1的第二個my的時候,不將其放入詞袋中,是因為詞袋中已經存在my這個詞。接著繼續檢索到homework,將其放入詞袋中。檢索完文字1以後,此時詞袋中已有的單詞為:my、 dog、 ate、 homework。

同理可得,演算法檢索完文字2後中,新收入詞袋的詞包含cat、 the、 sandwich,此時詞袋中包含的單詞有my、 dog、 ate、 

homework、cat、 the、 sandwich。演算法檢索完文字3後中,新收入詞袋的詞包含a、 dolphin此時詞袋中包含的單詞有

my、 dog、 ate、 

homework、cat、 the、 sandwich、

a、 dolphin(最終結果)。

將詞袋中的詞按照首字母的字典順序公升序排列得(括號中的數表示其在文字中出現的次數):

a(1),ate(3),cat(1),dolphin(1),dog(1),homework(2),my(3),sandwich(1),the(2)

將上述單詞按照順序編號,即

a:0號位置,

ate:1號位置

cat:2號位置

dolphin:3號位置

dog:4號位置

homework:5號位置

my:6號位置

sandwich:7號位置

the:8號位置

將上述相應的文字轉換為對應的出現次數序列

例如文字1包含my dog ate my homework這幾個單詞,也就是要將4、1、5號位置標記為1;6號位置標記為2(my出現2次),其餘位置(0,2,3,7,8號位置)標記為0

即文字1為:0,1,0,0,1,1,2,0,0

同理文字2:0,1,1,0,0,0,1,1,1

同理文字3:1,1,0,1,0,1,0,0,1

轉換為文字的詞頻(tf)、詞袋的詞頻(tf)

文字的詞頻(除以每個文字對應的單詞數)

即文字1為:0,1/5,0,0,1/5,1/5,2/5,0,0

同理文字2:0,1/5,1/5,0,0,0,1/5,1/5,1/5

同理文字3:1/5,1/5,0,1/5,0,1/5,0,0,1/5

詞袋的詞頻(除以詞袋中的文字數,本詞袋中的文字數為3)

即文字1為:0,1/3,0,0,1/3,1/3,2/3,0,0

同理文字2:0,1/3,1/3,0,0,0,1/3,1/3,1/3

同理文字3:1/3,1/3,0,1/3,0,1/3,0,0,1/3

詞袋的idf權重:例如,該詞袋中有3個文字,所以以下的所有分子為3;a只是在文字3中出現過,所以a的分母為1。其它同理可得。

a log(3/1)

ate log(3/3)

cat log(3/1)

dlophin log(3/1)

dog log(3/1)

homework log(3/2)

my log(3/2)

sandwich(3/1)

the log(3/2)

mybati查詢乙個字段出現的是另乙個欄位的值

使用mybatis的時候,查詢列表進行展示,joint bank number欄位總是為空 但是area欄位是沒有資料的,確有資料,很奇怪 最後我只查詢joint bank number欄位,發現,除了area欄位,所有的字段都是空,但是我查的是joint bank number欄位啊,然後我就在考...

拆分乙個字串的方法

小小問題集錦4 拆分乙個字串的方法 收藏 拆分乙個字串 問題描述 str fds,bbbf,eee,ddd,fff,hhhfg,dddde 拆分成 col fdsbbbf eeeddd fffhhhfg dddde 方法 動態 declare str varchar 500 aaa varchar ...

乙個字母引發的編譯血案

我的環境是linux作業系統。在當前目錄下有這樣幾個原始檔 dou.h int dou int data dou.cpp ifdef dou include int dou int data else include endif main.cpp include include int main m...