python結巴分詞余弦相似度演算法實現

2022-07-02 17:18:16 字數 1126 閱讀 6524

**附上:

# -*- coding: utf-8 -*-

from jieba import posseg

import math

import time

def simicos(str1, str2):

# 對兩個要計算的字串進行分詞, 使用隱馬爾科夫模型(也可不用)

# 由於不同的分詞演算法, 所以分出來的結果可能不一樣

# 也會導致相似度會有所誤差, 但是一般影響不大

cut_str1 = [w for w, t in posseg.lcut(str1) if 'n' in t or 'v' in t]

cut_str2 = [w for w, t in posseg.lcut(str2) if 'n' in t or 'v' in t]

# 列出所有詞

all_words = set(cut_str1 + cut_str2)

# 計算詞頻

freq_str1 = [cut_str1.count(x) for x in all_words]

freq_str2 = [cut_str2.count(x) for x in all_words]

# 計算相似度

sum_all = sum(map(lambda z, y: z * y, freq_str1, freq_str2))

sqrt_str1 = math.sqrt(sum(x ** 2 for x in freq_str1))

sqrt_str2 = math.sqrt(sum(x ** 2 for x in freq_str2))

return sum_all / (sqrt_str1 * sqrt_str2)

if __name__ == '__main__':

case1 = "seo"

case2 = "seo培訓網"

start = time.time()

similarity = simicos(case1, case2)

end = time.time()

print()

print("耗時: %.3fs" % (end - start))

print("相似度: %.3f" % similarity)

python 余弦相似度

余弦相似度相關係數 建立樣本與分詞 s1 本週末去釣魚 s1 cut i for i in jieba.cut s1,cut all true s2 下週去花卉市場買花 s2 cut i for i in jieba.cut s2,cut all true word set set s1 cut u...

余弦相似度及基於python的余弦相似度實現

余弦相似度,又稱為余弦相似性,是通過計算兩個向量的夾角余弦值來評估他們的相似度。對於兩個向量,可以想象成空間中的兩條線段,都是從原點 0,0,出發,指向不同的方向。兩條線段之間形成乙個夾角 如果夾角為0度,則意味著方向相同 線段重合 如果夾角為90度,意味著形成直角,方向完全不相似 如果夾角為180...

余弦相似度

余弦距離 歐氏距離和傑卡德相似性度量的對比分析 1 余弦距離 余弦距離,也稱為余弦相似度,是用向量空間中兩個向量夾角的余弦值作為衡量兩個個體間差異的大小的度量。向量,是多維空間中有方向的線段,如果兩個向量的方向一致,即夾角接近零,那麼這兩個向量就相近。而要確定兩個向量方向是否一致,這就要用到餘弦定理...