免费男女视频_国产系列 视频二区_羞羞视频免费入口网站_久国久产久精永久网页_国产免费观看av_一区二区三区日韩在线观看

分词词向量余弦相似度

說白了,就是所有的計算都要轉(zhuǎn)換成數(shù)字,首先分詞,詞集合,轉(zhuǎn)換成ID,然后匹配即可,這種模式比較粗糙。
詞向量余弦
詞向量余弦算法,是將文本作為一個多維空間的向量,計算兩個文本的相識度即計算判斷兩個向量在這個多維空間中的方向是否是一樣的。而這個多維空間的構(gòu)成是通過將文本進行分詞,每個分詞代表空間的一個維度。
下面通過例子來說明多維空間的構(gòu)成即詞向量問題。比如要計算如下兩個短文本的相識度:
文本一:天氣預(yù)報說,明天會下雨,你明天早上去上班的時候記得帶上傘。
文本二:你明天早上去上班的時候記得帶上傘,天氣預(yù)報說的可能會下雨。
首先我們利用某種分詞方法將文本進行分詞,如下:
這里不考慮標點符號,當然也可以涵蓋
文本一分詞:[天氣 預(yù)報 說 明天 會 下雨 你 明天 早上 去 上班 的 時候 記 得 帶 上 傘]
文本二分詞:[你 明天 早上 去 上班 的 時候 記 得 帶 上 傘 天氣 預(yù)報 說 的 可能會 下 雨]
多維空間的詞集合如下:
[天氣 你 的 帶 可能會 雨 上班 上 下 早上 時候 記 預(yù)報 說 明天 下雨 得 會 去 傘]
這是便可以得出連個文本在這個詞集合構(gòu)建的多維空間的詞向量。
文本一的詞向量:[1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1 ]
文本二的詞向量:[1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1]
詞向量得到了,這是便可以根據(jù)詞向量余弦的公式計算出相似度值了,公式如下:
計算出的相似度值為: similarity = 0.8295150620062532
由余弦定理可知,cosine值的范圍為[0,1],越趨近于1時兩個向量的夾角越小,也代表兩個文本越相似,

我們在做推薦或者信息檢索任務(wù)時經(jīng)常需要比較項目嵌入和項目嵌入之間或者用戶嵌入和項目嵌入之間的相似度,然后進行推薦。余弦相似度的計算公式如下:

余弦相似度cosine similarity和余弦距離cosine distance是相似度度量中常用的兩個指標,我們可以用sklearn.metrics.pairwise下的cosine_similarity和paired_distances函數(shù)分別計算兩個向量之間的余弦相似度和余弦距離,效果如下:

import numpy as np
from sklearn.metrics.pairwise import cosine_similarity, paired_distances

x = np.array([[0.26304135, 0.91725843, 0.61099966, 0.40816231, 0.93606288, 0.52462691]])
print(x)
y = np.array([[0.03756129, 0.50223667, 0.66529424, 0.57392135, 0.20479857, 0.27286363]])
print(y)

余弦相似度
simi = cosine_similarity(x, y)
print(‘cosine similarity:’, simi)

余弦距離 = 1 - 余弦相似度
dist = paired_distances(x, y, metric=‘cosine’)
print(‘cosine distance:’, dist)

這里可以看到,余弦相似度 + 余弦距離 = 1。

我們試一下用cosine_similarity和paired_distances函數(shù)分別計算多個向量與一個向量的余弦相似度和余弦距離,效果如下:

import numpy as np
from sklearn.metrics.pairwise import cosine_similarity, paired_distances

x = np.array([[0.26304135, 0.91725843, 0.61099966, 0.40816231, 0.93606288, 0.52462691], [0.26304135, 0.91725843, 0.61099966, 0.40816231, 0.93606288, 0.52462691]])
print(x)
y = np.array([[0.03756129, 0.50223667, 0.66529424, 0.57392135, 0.20479857, 0.27286363]])
print(y)

余弦相似度
simi = cosine_similarity(x, y)
print(‘cosine similarity:’, simi)

余弦距離 = 1 - 余弦相似度
dist = paired_distances(x, y, metric=‘cosine’)
print(‘cosine distance:’, dist)

親測有效的方法:

1、余弦相似性(cosine)

(1)使用sklearn中的向量相似性的計算包,代碼如下:

  這個函數(shù)的輸入是n個長度相同的list或者array,函數(shù)的處理是計算這n個list兩兩之間的余弦相似性,最后生成的相似矩陣中的s[i][j]表示的是原來輸入的矩陣中的第i行和第j行兩個向量的相似性,所以生成的是n*n的相似性矩陣
1
2
3
from sklearn.metrics.pairwise import cosine_similarity

s = cosine_similarity([[1, 0, 0, 0]], [[1, 0, 0, 0]])
print(s)
輸出:

[[1.]]

(2)使用scipy包中的距離計算,代碼如下:

    這里的vec1和vec2都是一維的array向量。
1
2
3
from scipy.spatial.distance import cosine

vec1 = [1, 2, 3]
vec2 = [2, 3, 4]
s = cosine(vec1, vec2)

print(s)
0.007416666029069763

2、皮爾森相關(guān)系數(shù)(pearson)

from scipy import stats
import numpy as np

a = np.array([0, 0, 0, 1, 1, 1, 1])
b = np.arange(7)
s1 = stats.pearsonr(a, b)

s2 = stats.pearsonr([1,2,3,4,5], [5,6,7,8,7])
print(“s1:”, s1)
print(“s2:”, s2)
s1: (0.8660254037844387, 0.011724811003954626)
s2: (0.8320502943378438, 0.08050957329849848)

前面的0.866025和0.862050即為所要求的相關(guān)系數(shù),具體用法參見:scipy.stats.pearsonr

3、歐式距離

    歐式距離,即歐幾里得距離,這里的計算有三種方式:

    (1)已知vec1和vec2是兩個Numpy array,即數(shù)組,使用numpy包計算:
1
2
3
import numpy

a = numpy.array([0, 0, 0, 1, 1, 1, 1])
b = numpy.arange(7)

dist = numpy.sqrt(numpy.sum(numpy.square(a - b)))

print(dist)
dist: 7.681145747868608

    (2)也是使用numpy包,相對更加直接,代碼如下:
1
import numpy

a = numpy.array([0, 0, 0, 1, 1, 1, 1])
b = numpy.arange(7)
dist = numpy.linalg.norm(a - b)

print(“dist:”, dist)
dist: 7.681145747868608

    (3) 使用sklearn中的向量相似性的計算包,這個沒有具體使用,就不貼代碼了。
1
import numpy
a=[1,2,3,1,4,5,5846,464,64,456,456,4]
print(a)
b=numpy.array(a).reshape(len(a),1) # reshape(列的長度,行的長度)
print(b) #轉(zhuǎn)換為二維矩陣
print(‘b的形狀是’+numpy.shape(b)) #12行1列

keys = [‘a(chǎn)’, ‘b’, ‘c’]
values = [1, 2, 3]
dictionary = dict(zip(keys, values))
print dictionary

“”"
輸出:
{‘a(chǎn)’: 1, ‘c’: 3, ‘b’: 2}
“”"

[numpy] ndarray 與 list 互相轉(zhuǎn)換

豆腐羲羲 2018-05-19 13:29:20 136354 收藏 32
分類專欄: numpy
版權(quán)

list 轉(zhuǎn) numpy

np.array(a)

ndarray 轉(zhuǎn) list

a.tolist()
————————————————
版權(quán)聲明:本文為CSDN博主「愚昧之山絕望之谷開悟之坡」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_15821487/article/details/115693841
主站蜘蛛池模板: 久久久久久久久国产 | 主人在调教室性调教女仆游戏 | 成人在线视频精品 | 成人国产精品一区二区毛片在线 | 欧美日韩1区2区 | 97青青 | 久精品国产| 免费a视频在线观看 | 日韩欧美激情视频 | 激情大乳女做爰办公室韩国 | 精品亚洲一区二区三区 | 亚洲精品成人久久久 | 中文字幕在线亚洲精品 | 久久在现视频 | 黄色毛片一级视频 | 亚洲精中文字幕二区三区 | 中文字幕一区2区 | 亚洲一区在线观看视频 | 成人毛片视频免费 | xxxx8| 国产精品一区2区3区 | 日韩视频在线观看免费 | 午夜精品视频免费观看 | 免费毛片电影 | 久久久涩 | 一本色道久久综合亚洲精品小说 | 久久www视频| 性欧美视频在线观看 | 在线观看一二区 | 欧美亚州 | 欧美wwwwww| 久久精品之 | 自拍偷拍999 | 青热久思思 | 成人做爰高潮片免费视频美国 | 一级电影免费看 | 色的综合 | 久久久久久久久久网 | 亚洲第五色综合网 | 欧美精品v国产精品v日韩精品 | 国产在线午夜 |