python 余弦相似度

2021-10-05 23:39:39 字數 1494 閱讀 4866

余弦相似度相關係數

#——————————————————————————建立樣本與分詞———————————————————————————————————————

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).union(s2_cut)

#——————————————————————————特徵提取—————————————————————————————————————————————

word_dict={}

j=0for i in word_set:

word_dict[i] = j

j +=1

#————————————————————————onehot編碼處理—————————————————————————————————————————

#s1_cut_code =[word_dict[i] for i in s1_cut] 返回[7, 2, 6, 4]

s1_cut_code = [0]*len(word_dict)

for i in s1_cut:

s1_cut_code[word_dict[i]]=1

print(s1_cut_code)

#s2_cut_code =[word_dict[i] for i in s2_cut] 返回[3, 6, 1, 9, 0, 5, 8]

s2_cut_code = [0]*len(word_dict)

for i in s2_cut:

s2_cut_code[word_dict[i]]=1

print(s2_cut_code)

#————————————————————計算兩樣本的余弦相似度cos⊙————————————————————————————————

s1_array = np.array(s1_cut_code)

s2_array = np.array(s2_cut_code)

fz = np.dot(s1_array,s2_array)

fm = np.linalg.norm(s1_array) + np.linalg.norm(s2_array)

result = round(fz/fm,2)

print('余弦相似度為:',result)

參考文章:

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

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

余弦相似度

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

余弦相似度

基於餘弦定理計算相似度的應用很多,比如推薦系統中的協同過濾,計算文字的相似性等等。它用計算兩者空間向量的夾角來表示兩者的相似性。先看一下餘弦定理的公式 wu v u ivi u2i v 2i 上訴公式表示uv兩者的相似度,ui表示u在i緯度的數值。在使用者行為資料 使用者只有操作和未操作兩種狀態,也...