自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

文本相似度判定

開發(fā) 后端
針對文本相似判定,本文提供余弦相似度和SimHash兩種算法,并根據(jù)實(shí)際項(xiàng)目遇到的一些問題,給出相應(yīng)的解決方法。經(jīng)過實(shí)際測試表明:余弦相似度算法適合于短文本,而SimHash算法適合于長文本,并且能應(yīng)用于大數(shù)據(jù)環(huán)境中。

簡介

        針對文本相似判定,本文提供余弦相似度和SimHash兩種算法,并根據(jù)實(shí)際項(xiàng)目遇到的一些問題,給出相應(yīng)的解決方法。經(jīng)過實(shí)際測試表明:余弦相似度算法適合于短文本,而SimHash算法適合于長文本,并且能應(yīng)用于大數(shù)據(jù)環(huán)境中。

余弦相似度

原理

        余弦定理:

wps4663.tmp                  wps46F1.tmp

圖-1 余弦定理圖示

         性質(zhì):

         余弦值的范圍在[-1,1]之間,值越趨近于1,代表兩個(gè)向量的方向越趨近于0°,他們的方向更加一致,相應(yīng)的相似度也越高。需要指出的是,在文本相似度判定中,因?yàn)槲谋咎卣飨蛄慷x的特殊性,其余弦值范圍為[0,1],即向量夾角越趨向于90°,則兩向量越不相似。

向量空間模型

        VSM(Vector Space Model)把對文本內(nèi)容的處理簡化為向量空間中的向量運(yùn)算。

        概念:

        1)文檔(D):泛指文檔或文檔片段,一般表征一篇文檔。

        2)詞匯(T):文本內(nèi)容特征的基本語言單位,包含字、詞、詞組或短語。

        3)權(quán)重(W):表征詞匯T的權(quán)重,在文檔D中的重要程度。

        權(quán)重:

        目前表征一個(gè)字詞在一個(gè)文本集或者語料庫中某篇文本中的重要程度的統(tǒng)計(jì)方法為TF-IDF(term frequency–inverse document frequency),詞匯的重要性隨著它在文件中出現(xiàn)的次數(shù)成正比增加,但同時(shí)會隨著它在語料庫中出現(xiàn)的頻率成反比下降,詳細(xì)內(nèi)容在此不贅述。但是本文在實(shí)際項(xiàng)目中面臨的問題是,文本集是變動的,而且變化速率比較快,因此并不適用于采用TF-IDF方法。本文采用非常簡單直觀的方法,即以詞頻來表征該詞匯在文本中的重要程度(即權(quán)重)。

        向量對齊:

        由于在實(shí)際應(yīng)用中,表征文本特征的兩個(gè)向量的長度是不同的,因此必然需要對上述向量進(jìn)行處理。目前存在兩種方法:1)剔除掉向量中不重要的詞匯,從而使得兩個(gè)向量長度保持一致,目前主要依靠經(jīng)驗(yàn)設(shè)定一些關(guān)鍵詞來處理,但是其準(zhǔn)確率不可保證;2)歸并向量,并根據(jù)原向量是否在新向量(歸并后的向量)存在,若存在則以該詞匯的詞頻來表征,若不存在則該節(jié)點(diǎn)置為0,示例如下:

        Text1: 我/是/中國人/

        Text2: 我們/是/中國人/

        Vector: 我/是/中國人/我們/

        Vector1 = (1, 1, 1, 0)

        Vector2 = (0, 1, 1, 1)

        上述“/”為采用IK分詞,智能切分后的間隔符,則歸并后的向量如Vector所示,對齊后的向量分別為Vector1 和Vector2。之后則根據(jù)兩向量的余弦值確定相似度。

文本特例

        由于在實(shí)際項(xiàng)目中,本文發(fā)現(xiàn)了2個(gè)特例,并相應(yīng)給出了解決方案。

        1)長句包含短句(無需完全包含):

        Text1:“貫徹強(qiáng)軍目標(biāo)出實(shí)招用實(shí)勁 努力開創(chuàng)部隊(duì)建設(shè)新局面”

        Text2:“在接見駐浙部隊(duì)領(lǐng)導(dǎo)干部時(shí)強(qiáng)調(diào) 貫徹強(qiáng)軍目標(biāo)出實(shí)招用實(shí)勁 努力開創(chuàng)部隊(duì)建設(shè)新局面”

        上述兩個(gè)文本為網(wǎng)絡(luò)上實(shí)際的網(wǎng)頁標(biāo)題,若簡單以余弦相似度來判定,其誤判率是比較高的。本文解決方案為:若長句長度(中文切分后以詞匯為單位表征,并非以字符為單位)為短句的1.5倍,則針對長句選定短句長度的文本內(nèi)容逐個(gè)與短句進(jìn)行相似度判定,直至長句結(jié)束,若中間達(dá)到預(yù)設(shè)的閾值,則跳出該循環(huán),否則判定文本不相似。

        2)文本中存在同義表述

        Text1:“臺灣居民明日起持臺胞證可通關(guān) 無需辦理簽注”

        Text2:“明起臺胞來京無需辦理簽注 電子臺胞證年內(nèi)實(shí)施”

        上述兩個(gè)文本中“臺胞”和“臺灣居民”,“明日起”和“明起”為同義表述,可以理解為近義詞,但不完全為近義詞范疇。本文解決方案為引入同義詞詞典,鑒于中文詞匯的豐富性,其能在一定程度上緩解,仍然不是根本解決之法。

應(yīng)用場景及優(yōu)缺點(diǎn)

        本文目前將該算法應(yīng)用于網(wǎng)頁標(biāo)題合并和標(biāo)題聚類中,目前仍在嘗試應(yīng)用于其它場景中。

        優(yōu)點(diǎn):計(jì)算結(jié)果準(zhǔn)確,適合對短文本進(jìn)行處理。

        缺點(diǎn):需要逐個(gè)進(jìn)行向量化,并進(jìn)行余弦計(jì)算,比較消耗CPU處理時(shí)間,因此不適合長文本,如網(wǎng)頁正文、文檔等。

 

  余弦相似度算法源程序:

[[152097]] Class Element
[[152097]] Class TextCosine

  備注:同義詞詞典“synonyms.dict”文件較大,完全可以自己構(gòu)建,在此就不贅述了。

 

SimHash

        SimHash為Google處理海量網(wǎng)頁的采用的文本相似判定方法。該方法的主要目的是降維,即將高維的特征向量映射成f-bit的指紋,通過比較兩篇文檔指紋的漢明距離來表征文檔重復(fù)或相似性。

過程

        該算法設(shè)計(jì)十分精巧,主要過程如下:

        1.  文檔特征量化為向量;

        2.  計(jì)算特征詞匯哈希值,并輔以權(quán)重進(jìn)行量化;

        3.  針對f-bit指紋,按位進(jìn)行疊加運(yùn)算;

        4.  針對疊加后的指紋,若對應(yīng)位為正,則標(biāo)記為1,否則標(biāo)記為0。

  備注:此處f-bit指紋,可以根據(jù)應(yīng)用需求,定制為16位、32位、64位或者其它位數(shù)等。

       如圖-2所示,為SimHash作者Charikar在論文中的圖示,本文結(jié)合實(shí)際項(xiàng)目解釋如下:Doc表征一篇文本,feature為該文本經(jīng)過中文分詞后的詞匯組合,按列向量組織,weight為對應(yīng)詞匯在文本中的詞頻,之后經(jīng)過某種哈希計(jì)算得出哈希值,見圖中1和0的組合,剩余部分不再贅述。需要指出,Charikar在論文中并未指定需要采用哪種哈希函數(shù),本文作者認(rèn)為,只要哈希計(jì)算值能夠均衡化、分散化,哈希函數(shù)可以根據(jù)實(shí)際應(yīng)用場景進(jìn)行設(shè)計(jì),本文在實(shí)際的項(xiàng)目中自行設(shè)計(jì)哈希函數(shù),雖未經(jīng)過完全驗(yàn)證,但是測試結(jié)果表明,該函數(shù)當(dāng)前能夠滿足需求。

wps46F2.tmp

圖-2 SimHash處理過程

漢明距離

        漢明距離應(yīng)用于數(shù)據(jù)傳輸差錯(cuò)控制編碼,它表示兩個(gè)(相同長度)字對應(yīng)位不同的數(shù)量。鑒于SimHash***計(jì)算出的指紋采用0和1進(jìn)行組織,故而用其來衡量文檔相似性或者重復(fù)性,該部分詳細(xì)內(nèi)容在此不再贅述。

應(yīng)用場景與優(yōu)缺點(diǎn)

        本文目前將該算法應(yīng)用于話題發(fā)現(xiàn)和內(nèi)容聚合等場景中,同時(shí)也在嘗試其它應(yīng)用場景。

        優(yōu)點(diǎn):文本處理速率快,計(jì)算后的指紋能夠存儲于數(shù)據(jù)庫,因此對海量文本相似判定非常適合。

        缺點(diǎn):由于短文本的用于哈希計(jì)算的數(shù)據(jù)源較少,因此短文本相似度識別率低。

 

  SimHash算法源程序: 

[[152097]] Class TermDict
[[152097]] Class SimHash

  備注:源程序中“131313”只是作者挑選的一個(gè)較大的素?cái)?shù)而已,不代表特別含義,該數(shù)字可以根據(jù)需求進(jìn)行設(shè)定。

責(zé)任編輯:李英杰 來源: 博客園
相關(guān)推薦

2021-06-23 18:36:20

AI

2024-05-23 08:48:21

2025-01-14 13:51:44

2019-12-11 10:50:06

JS圖片前端

2021-12-07 09:51:06

神經(jīng)網(wǎng)絡(luò)AI算法

2023-11-21 16:06:04

計(jì)算機(jī)視覺人工智能

2024-05-30 08:40:41

大型語言模型LLM人工智能

2023-10-10 15:33:55

機(jī)器學(xué)習(xí)相似性度量

2010-03-09 16:26:08

Python列表

2013-08-28 13:44:42

數(shù)據(jù)算法

2013-08-29 14:28:58

海量數(shù)據(jù)simhash

2019-09-20 13:34:35

蘇寧文本匹配自然語言

2022-11-30 07:49:49

交互事件屏幕手勢識別

2024-09-23 14:36:20

2024-08-29 09:03:56

2024-12-31 08:20:00

暹羅網(wǎng)絡(luò)機(jī)器學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)

2010-02-01 16:32:49

Python腳本

2010-02-05 17:04:31

Android版本

2022-10-26 13:36:59

模型計(jì)算

2024-04-07 14:48:00

模型訓(xùn)練
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號