網頁去重(三)特徵值
一、 什麼是特徵值
tfidf
tf高,並且在其他文章中很少出現,則認為此詞或者短語具有很好的類別區分能力,適合用來分類。
tfidf
實際上是:
tf *idf,tf
詞頻(termfrequency)
,idf
逆向檔案頻率
(inversedocument frequency)。tf
表示詞條在文件
d中出現的頻率。
idf的主要思想是:如果包含詞條
t的文件越少,也就是
n越小,
idf越大,則說明詞條
t具有很好的類別區分能力。如果某一類文件
c中包含詞條
t的文件數為
m,而其它類包含
t的文件總數為
k,顯然所有包含
t的文件數
n=m+k,當m
大的時候,
n也大,按照
idf公式得到的
idf的值會小,就說明該詞條
t類別區分能力不強。但是實際上,如果乙個詞條在乙個類的文件中頻繁出現,則說明該詞條能夠很好代表這個類的文字的特徵,這樣的詞條應該給它們賦予較高的權重,並選來作為該類文字的特徵詞以區別與其它類文件。這就是
idf的不足之處
. 在乙份給定的檔案裡,詞頻(
term frequency,tf
)指的是某乙個給定的詞語在該檔案中出現的頻率。這個數字是對詞數(term count)
的歸一化,以防止它偏向長的檔案。(同乙個詞語在長檔案裡可能會比短檔案有更高的詞數,而不管該詞語重要與否。)對於在某一特定檔案裡的詞語來說,它的重要性可表示為:
·
以上式子中分子是該詞在檔案中的出現次數,而分母則是在檔案中所有字詞的出現次數之和。
逆向檔案頻率(
inverse document frequency
,idf
)是乙個詞語普遍重要性的度量。某一特定詞語的
idf,可以由總檔案數目除以包含該詞語之檔案的數目,再將得到的商取
對數得到:
·
·
|d|:語料庫中的檔案總數
·
:包含詞語的檔案數目(即的檔案數目)如果該詞語不在語料庫中,就會導致分母為零,因此一般情況下使用
作為分母。
idf公式分母
然後再計算tf與
idf的乘積。
·
某一特定檔案內的高詞語頻率,以及該詞語在整個檔案集合中的低檔案頻率,可以產生出高權重的
tf-idf
。因此,
tf-idf
傾向於過濾掉常見的詞語,保留重要的詞語。
[2]例1
有很多不同的數學公式可以用來計算
tf-idf
。這邊的例子以上述的
數學公式
來計算。詞頻
(tf)
是一詞語出現的次數除以該檔案的總詞語數。假如一篇檔案的總詞語數是
100個,而詞語「母牛
」出現了
3次,那麼「母牛
」一詞在該檔案中的詞頻就是
3/100=0.03
。乙個計算檔案頻率
(idf)
的方法是測定有多少份檔案出現過「母牛
」一詞,然後除以檔案集裡包含的檔案總數。所以,如果「母牛
」一詞在
1,000
份檔案出現過,而檔案總數是
10,000,000
份的話,其逆向檔案頻率就是
log(10,000,000 / 1,000)=4
。最後的
tf-idf
的分數為
0.03* 4=0.12。
二、 演算法實現
2.1 獲取tf演算法並排序:
public static voidgettf(string inputfile, string outputfile)
stringutil.string2file(result,outputfile);
}*/ public static voidsortwords(string inputfile, string outputfile)
stringutil.string2file(result,outputfile);
}
截圖:
2.2獲取df演算法:
/**
* 獲取單個檔案的df
*@paraminputfilestr
*@paraminputpathall
*@paramoutputdirstr
*@throwsexception */
public
static
voidgetdf(string inputfilestr,string inputpathall,string outputdirstr)throwsexception//for
result += temp+""+df+constantstring.win_nextline
;stringutil.string2file(result,outputfilestr);
}catch(exception e)catch(exception e) {
e.printstacktrace();
原文:
特徵值之積等於矩陣行列式 特徵值之和等於矩陣的跡
對於 n 階方陣 a 我們可以解 lambda 的 n 次方程 a lambda e 0 來求 a 的特徵值。又因為在複數域內,a 一定存在 n 個特徵值 lambda 1,lambda 2.lambda n 使上式成立。因此作為 lambda 的 n 次多項式,a lambda e 可以寫成 be...
20171029機器學習之特徵值選擇
在我們對於有很多特徵值資料處理時,往往需要找到特徵值對於結果y權重最大的幾個,便於做降維。於是我們可以用以下這段 github coding utf 8 import numpy as np import matplotlib.pyplot as plt import matplotlib as m...
搜尋引擎手記(三)之網頁的去重
015 年4月1日 星期二 晴 南風 今天是愚人節,我們給同事過愚人節,爬蟲也讓我們技術部過了愚人節。通過對抓取資料的分析,發現有20 的資料都是重複資料。開會討論,原來有兩個問題,乙個爬蟲引擎有重大bug 另外乙個問題,竟然對網頁沒有做去重處理。啊!my god!通過和群裡進行技術交流,大概明白了...