余弦-两个字符串之间的TF-IDF相似度

时间:2018-09-12 09:12:06

标签: matching string-matching similarity tf-idf cosine-similarity

我想弄几个小时,如何用tf idf计算具有余弦相似度加权的两个字符串之间的相似度:

s1 =鲍勃 s2 =抢

我的分割条款将是b,o和r。 因此,我得到以下术语频率(文档中的特定术语/文档中的所有术语):

TF(s1, b) = 2/3      
TF(s1, o) = 1/3
TF(s1, r) = 0/3
TF(s2, b) = 1/3
TF(s2, o) = 1/3
TF(s2, r) = 1/3

现在IDF(文件总数/其中带有术语的文件数)将为:

IDF(b) = log(2/2) = 0
IDF(o) = log(2/2) = 0
IDF(r) = log(2/1) = 0,3010

这将我带到if-idf(if * idf):

TF-IDF(s1, b) = 0 
TF-IDF(s1, o) = 0
TF-IDF(s1, r) = 0
TF-IDF(s2, b) = 0
TF-IDF(s2, o) = 0
TF-IDF(s2, r) = 1/3 * 0.3010 = 0.1

所以我的Vecors看起来像这样: sx(b,o,r) s1(0,0,0) s2(0,0,0.1)

现在,如果我对它执行余弦相似度公式,它将返回相似度0。

对于我的问题:TF-IDF是否仅可用于更多多个文档? TF-IDF加权的余弦相似度仅对单词之类的较大术语有用吗?关于bigrams,我可以使用Bigrams获得更好的结果吗? 即使当我尝试比较分成“单词术语”(也称为原子字符串)的字符串“ Smith先生”和“ Smith先生”时,我也只会得到垃圾结果。

我指的是将Cosine与IF-IDF结合使用以实现类似Title Matching这样的字符串相似性的论文

谢谢

0 个答案:

没有答案