我有尺寸6.如何计算余弦相似度两个字符串向量之间的咒骂r
a=c("HDa","2Pb","2","BxU","BuQ","Bve")
b=c("HCK","2Pb","2","09","F","G")
的2个载体谁能解释我应该怎么办呢?
我有尺寸6.如何计算余弦相似度两个字符串向量之间的咒骂r
a=c("HDa","2Pb","2","BxU","BuQ","Bve")
b=c("HCK","2Pb","2","09","F","G")
的2个载体谁能解释我应该怎么办呢?
使用lsa
包以及用于该包
# create some files
library('lsa')
td = tempfile()
dir.create(td)
write(c("HDa","2Pb","2","BxU","BuQ","Bve"), file=paste(td, "D1", sep="/"))
write(c("HCK","2Pb","2","09","F","G"), file=paste(td, "D2", sep="/"))
# read files into a document-term matrix
myMatrix = textmatrix(td, minWordLength=1)
EDIT该手册:示出了如何为mymatrix
对象
myMatrix
#myMatrix
# docs
# terms D1 D2
# 2 1 1
# 2pb 1 1
# buq 1 0
# bve 1 0
# bxu 1 0
# hda 1 0
# 09 0 1
# f 0 1
# g 0 1
# hck 0 1
# Calculate cosine similarity
res <- lsa::cosine(myMatrix[,1], myMatrix[,2])
res
#0.3333
你能解释你的代码吗?当你比较“HDa”和“HCK”时,这并不重要,它们都有普通字母“H”。他们是完全不同的。我们的代码工作就像那样 –
当你为工作分配索引时,代码将使用你的输入向量创建一个'textmatrix-document',即'HDa'是将会与'HCK'不同,请参阅我的编辑。然后,“余弦”函数将计算两个文档之间的余弦相似度(例如,你的例子中的“a”和“b”) – user2380782
非常感谢。它真的为我工作 –
首先需要可能的术语词典,然后将您的向量转换为二进制向量,其中相应术语的位置为1,其他位置为0。如果您命名新载体a2
和b2
,你可以用同样cor(a2, b2)
计算余弦值,但要注意余弦同样介于-1和1你可以像这样的东西它映射到[0,1]:0.5*cor(a2, b2) + 0.5
创建字典后,可以使用软件包'lsa'并运行'cos'函数,例如'cos(a2,b2)' – user2380782
这是正确的方法,但这看起来更像一条评论而不是一个答案,因为它显示了一般方法而不是一个具体的解决方案。另外,cor(a2,b2,method ='pearson)'与余弦相似度(几乎)相同。 – LyzandeR
@ user2380782我认为函数是'lsa :: cosine' – LyzandeR
CSString_vector <- c("Hi Hello","Hello");
corp <- tm::VCorpus(VectorSource(CSString_vector));
controlForMatrix <- list(removePunctuation = TRUE,wordLengths = c(1, Inf), weighting = weightTf)
dtm <- DocumentTermMatrix(corp,control = controlForMatrix);
matrix_of_vector = as.matrix(dtm);
res <- lsa::cosine(matrix_of_vector[1,], matrix_of_vector[2,]);
可能是较大的数据集更好的一个。
对于您的示例,您希望的输出是什么? – etienne
我希望将结果视为介于0和1之间的值 –
在这种情况下,'0.667 0.00 0.00 1.00 1.00 1.00'是您想要的还是'0.333 1.00 1.00 0.00 0.00 0.00'? – etienne