使用余弦相似度演算法計算文字相似度

2021-09-17 06:59:31 字數 2183 閱讀 3975

在求相似度的時候經常會有以下一些方法,

1.基於詞向量

2.基於字元的

3.基於概率統計的

4.基於詞嵌入模型的

在求文字相似度的時候經常會使用余弦相似度來求,下面來記錄一下余弦相似度的原理。

余弦相似度量:計算個體間的相似度。

相似度越小,距離越大。相似度越大,距離越小。

假設有3個物品,item1,item2和item3,用向量表示分別為:

item1[1,1,0,0,1],

item2[0,0,1,2,1],

item3[0,0,1,2,0],

即五維空間中的3個點。用歐式距離公式計算item1、itme2之間的距離,以及item2和item3之間的距離,分別是:

item1-item2=

item2-item3=

用余弦函式計算item1和item2夾角間的余弦值為:

用余弦函式計算item2和item3夾角間的余弦值為:

由此可得出item1和item2相似度小,兩個之間的距離大(距離為7),item2和itme3相似度大,兩者之間的距離小(距離為1)。

余弦相似度演算法:乙個向量空間中兩個向量夾角間的余弦值作為衡量兩個個體之間差異的大小,余弦值接近1,夾角趨於0,表明兩個向量越相似,余弦值接近於0,夾角趨於90度,表明兩個向量越不相似。

余弦相似度量:計算個體間的相似度。

相似度越小,距離越大。相似度越大,距離越小。

余弦相似度演算法:乙個向量空間中兩個向量夾角間的余弦值作為衡量兩個個體之間差異的大小,余弦值接近1,夾角趨於0,表明兩個向量越相似,余弦值接近於0,夾角趨於90度,表明兩個向量越不相似。

下面我們介紹使用余弦相似度計算兩段文字的相似度。思路:1、分詞;2、列出所有詞;3、分詞編碼;4、詞頻向量化;5、套用余弦函式計量兩個句子的相似度。

句子a:這只皮靴號碼大了。那只號碼合適。

句子b:這只皮靴號碼不小,那只更合適。

1、分詞:

使用結巴分詞對上面兩個句子分詞後,分別得到兩個列表:

lista=[『這『, 『只『, 『皮靴『, 『號碼『, 『大『, 『了『, 『那『, 『只『, 『號碼『, 『合適『]

listb=[『這『, 『只『, 『皮靴『, 『號碼『, 『不小『, 『那『, 『只『, 『更合『, 『合適『]

2、列出所有詞,將lista和listb放在乙個set中,得到:

set=

將上述set轉換為dict,key為set中的詞,value為set中詞出現的位置,即『這』:1這樣的形式。

dict1=,可以看出「不小」這個詞在set中排第1,下標為0。

3、將lista和listb進行編碼,將每個字轉換為出現在set中的位置,轉換後為:

listacode=[8, 4, 5, 7, 9, 1, 3, 4, 7, 2]

listbcode=[8, 4, 5, 7, 0, 3, 4, 6, 2]

我們來分析listacode,結合dict1,可以看到8對應的字是「這」,4對應的字是「只」,9對應的字是「大」,就是句子a和句子b轉換為用數字來表示。

4、對listacode和listbcode進行onehot編碼,就是計算每個分詞出現的次數。onehot編號後得到的結果如下:

listacodeonehot = [0, 1, 1, 1, 2, 1, 0, 2, 1, 1]

listbcodeonehot = [1, 0, 1, 1, 2, 1, 1, 1, 1, 0]

下圖總結了句子從分詞,列出所有詞,對分詞進行編碼,計算詞頻的過程

5、得出兩個句子的詞頻向量之後,就變成了計算兩個向量之間夾角的余弦值,值越大相似度越高。

listacodeonehot = [0, 1, 1, 1, 2, 1, 0, 2, 1, 1]

listbcodeonehot = [1, 0, 1, 1, 2, 1, 1, 1, 1, 0]

根據余弦相似度,句子a和句子b相似度很高。

使用余弦相似度計算文字相似度

1.使用simhash計算文字相似度 2.使用余弦相似度計算文字相似度 3.使用編輯距離計算文字相似度 4.jaccard係數計算文字相似度 余弦相似性 兩個向量的夾角越接近於0,其餘弦值越接近於1,表面兩個向量越相似。向量夾角余弦計算 co s x 1 x2 y1 y2x1 2 y1 2 x2 2...

文字相似度 自己實現文字相似度演算法(餘弦定理)

最近由於工作專案,需要判斷兩個txt文字是否相似,於是開始在網上找資料研究,因為在程式中會把文字轉換成string再做比較,所以最開始找到了這篇關於 距離編輯演算法 blog寫的非常好,受益匪淺。於是我決定把它用到專案中,來判斷兩個文字的相似度。但後來實際操作發現有一些問題 直接說就是查詢一本書中的...

計算文字相似度 文字相似度演算法之 simhash

文字相似度演算法種類繁多,今天先介紹一種常見的網頁去重演算法simhash。1 什麼是simhash 2 simhash步驟 人工智慧,1 大資料,2 科技,3 網際網路,4 機器學習,5 人工智慧 00101 大資料 11001 科技 00110 網際網路 10101 機器學習 01011 has...