首页 > 试题广场 >

给定词典 [a, b, c, d, e],基于这个五单词词典

[单选题]

给定词典 [a, b, c, d, e],基于这个五单词词典的三个文档(document)内容如下:

DocA: [a, b, b, d, d]

DocB: [b, b, b, e, e, e, d]

DocC: [d, d, b, b, e]

如果使用 bag-of-words model 将每个文档表示成五维的向量,例如,DocA 可以被表示为 {a:1, b:2, c:0, d:2, e:0}。基于这三个五维向量,计算两两之间的余弦相似性(Cosine similarity),最相似的两个向量是:

  • DocA和DocB的向量
  • DocA和DocC的向量
  • DocB和DocC的向量
  • 三个向量两两间的余弦相似性是一样的
import numpy as np 

vector1 = np.array([1,2,0,2,0])
vector2 = np.array([0,3,0,1,3])
vector3 = np.array([0,2,0,2,1])
 
op12=np.dot(vector1,vector2)/(np.linalg.norm(vector1)*(np.linalg.norm(vector2)))
print(op12)
op13=np.dot(vector1,vector3)/(np.linalg.norm(vector1)*(np.linalg.norm(vector3)))
print(op13)
op23=np.dot(vector3,vector2)/(np.linalg.norm(vector3)*(np.linalg.norm(vector2)))
print(op23
0.6117752903214979
0.8888888888888888
0.8411910241920597
发表于 2019-04-22 02:18:31 回复(0)
A = (1,2,0,2,0)
B = (0,3,0,1,3)
C = (0,2,0,2,1) 
直接计算
cos θ = A·B / |A||B|
可见,AC是cos值最大的。
相似性范围从-1到1:-1意味着两个向量指向的方向正好截然相反,1表示它们的指向是完全相同的,0通常表示它们之间是独立的
当然,直接看,也应该是AC,然而我做错了😤

发表于 2019-04-03 16:49:14 回复(1)
应该是越大越相似==居然算成了最小的
发表于 2019-04-14 00:22:04 回复(1)
词袋模型向量每一个值对应词汇出现的次数
发表于 2019-04-09 23:24:29 回复(0)
借前楼述(A = (1,2,0,2,0)
                 B = (0,3,0,1,3)
                 C = (0,2,0,2,1) 
                 直接计算
                 cos θ = A·B / |A||B|)
算个A和C的ps:(1*0+2*2+0*0+2*2+0*1)/sqrt((1+2*2+2*2)*(2*2+2*2+1)) =8/9
同理算其他两个发现AC最小
发表于 2019-04-07 21:13:14 回复(3)
编辑于 2019-04-13 10:08:10 回复(3)