SHINGLE
shingle是指文檔中一組鄰近的 有序詞。基于shingle的算法要求從文檔中選取一系列 shingle,然后把shingle映射到Hash表中,一個 shingle對應一個Hash值,最后統(tǒng)計Hash表中相同的shingle比率,作為判定文本相似度依據,比率越高,相 似度越高。?
下面就用維基百科的一個淺顯例子來講解shingle算法的原理,這個比較權威。?
比如,一個文檔?
"a rose is a rose is a rose"?
分詞后的詞匯(token,語匯單元)集合是?
(a,rose,is,a,rose,is, a, rose)?
那么w=4的4-shingling,即四個鄰近有序詞的組合,它們形成這個么一個類似數組的集合集合:?
{ (a,rose,is,a), (rose,is,a,rose), (is,a,rose,is), (a,rose,is,a), (rose,is,a,rose) }?
如上分別以一個詞的開后向后擴展3個詞,一共4個詞,我們把它們編號分別為1-5號。然后往掉重復 的子集合,我們發(fā)現(xiàn)2號,4號,5號這四個組合里面的詞是一樣的,所以只保存2號,往掉4號,5號,那么就 只留下1號,2號,3號,結果如武漢網站建設哪家好 下:?
{ (a,rose,is,a), (rose,is,a,rose), (is,a,rose,is) }?
給定shingle的大小,兩個文檔A和B的相似度 r 定義為:?
r(A,B)=|S(A)∩S(B)| / |S(A)∪S(B)|?
意思是兩個文檔相交的shingle數及相同的shingle數除以兩個文檔相加的shingle數,,再精練一點就是兩 個文檔的shingle數的交集除以并集,由此可見相似度r是一個0-1之間的數,r值越來,相似度越高。
下面就用維基百科的一個淺顯例子來講解shingle算法的原理,這個比較權威。?
比如,一個文檔?
"a rose is a rose is a rose"?
分詞后的詞匯(token,語匯單元)集合是?
(a,rose,is,a,rose,is, a, rose)?
那么w=4的4-shingling,即四個鄰近有序詞的組合,它們形成這個么一個類似數組的集合集合:?
{ (a,rose,is,a), (rose,is,a,rose), (is,a,rose,is), (a,rose,is,a), (rose,is,a,rose) }?
如上分別以一個詞的開后向后擴展3個詞,一共4個詞,我們把它們編號分別為1-5號。然后往掉重復 的子集合,我們發(fā)現(xiàn)2號,4號,5號這四個組合里面的詞是一樣的,所以只保存2號,往掉4號,5號,那么就 只留下1號,2號,3號,結果如武漢網站建設哪家好 下:?
{ (a,rose,is,a), (rose,is,a,rose), (is,a,rose,is) }?
給定shingle的大小,兩個文檔A和B的相似度 r 定義為:?
r(A,B)=|S(A)∩S(B)| / |S(A)∪S(B)|?
意思是兩個文檔相交的shingle數及相同的shingle數除以兩個文檔相加的shingle數,,再精練一點就是兩 個文檔的shingle數的交集除以并集,由此可見相似度r是一個0-1之間的數,r值越來,相似度越高。
總結
- 上一篇: Qt+OSG/osgEarth跨平台编译
- 下一篇: 解除当前设置不允许下载该文件