我想弄几个小时,如何用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这样的字符串相似性的论文
谢谢