NiV*_*VeR 2 string algorithm article matching
我有一个特别的问题,至少对我来说是如此.具体是因为经过相当多的搜索我找不到任何有用的东西.所以正如标题所说,我正在寻找一种算法,它可以找到输入中给出的两篇文章"匹配",但不是通常的字符串匹配意义,相反,我想找到的是,如果他们说同样的话论点.现在我预测,"匹配"应该与某个阈值进行比较,并使用某种权重来确定它们"匹配"多少,因此概念是模糊的,所以我们不能谈论完整的"匹配" ,但我们会谈论"匹配"的程度.
可悲的是,我没有更多.如果有人帮助我完成这个话题,我将非常感激,也欢迎理论思想.
谢谢.
有很多方法可以找到文章的"相似性",这实际上取决于您对文章的了解,以及您作为测试用例的用途,以显示您的结果有多好.
一个简单的解决方案是在这些文档使用的词汇表上使用Jaccard Similarity.伪代码:
similarity(doc1,doc2):
   set1 <- getWords(doc1)
   set2 <- getWords(doc2)
   intersection <- set_intersection(set1,set2)
   union <- set_union(set1,set2)
   return size(intersection)/size(union)
注意,代替getWords你也可以使用双字母组,卦...... 正克.
更复杂的无监督解决方案可以是从每个文档构建语言模型,并根据语言模型计算它们的Jensen-Shannon差异以判断它们是否相似.
一个简单的语言模型P(word|document) = #occurances(word,document)/size(document)
通常我们使用一些平滑技术来确保没有单词的概率为0.
其他解决方案正在使用监督学习算法,例如SVM.你的功能可以是单词(tf-idf model/bag of words model/...),并使用这些功能来分类doc1,doc2是否"相似".这需要获得一个"训练集",它基本上是一组样本(doc1,doc2)和标签,告诉你(doc1,doc2)是否"微笑".将训练数据提供给学习者并构建模型 - 稍后将用于对新文档对进行分类.