Osa*_*eed 60 language-agnostic string algorithm text similarity
我在数据库中有很多文章(标题,文字),我正在寻找一种算法来找到X最相似的文章,比如Stack Overflow的"相关问题",当你提出问题时.
我尝试谷歌搜索,但只找到关于其他"类似文本"问题的页面,比如将每篇文章与所有其他文章进行比较并在某处存储相似性.因此,我只是在我刚输入的文本上"实时"执行此操作.
怎么样?
Wil*_*ill 14
这取决于你对类似的定义.
该编辑距离算法是(拉丁语)词典建议的标准算法,并可以在整个文本工作.两种文本具有similiar如果他们有基本的相同顺序相同的话(EH字母).因此,以下两本书评论将非常相似:
1)"这是一本好书"
2)"这些不是很好的书"
(字母数去除,插入,删除或改变转动(2)代入(1)被称为"编辑距离".)
要实现此功能,您需要以编程方式访问每个审核.这也许并不像听起来那么昂贵,如果成本太高,你可以做comparisions作为后台任务,并存储在数据库领域本身正最similiar.
另一种方法是了解(拉丁语)语言的结构.如果您删除短(非元素化或引用)单词,并为常用或唯一的单词(或前缀)分配权重,则可以进行贝叶斯比较.以下两本书的评论可能会被复制,并且发现类似:
3)"法国革命是等等的战争与和平等等等等法国." - >法国/法国(2)革命(1)战争(1)和平(1)(请注意,字典已被用于结合法国和法国)
4)"这本书真的是法国菜的革命." - >法国(1)革命(1)
要实现这一点,您需要在评论创建/更新时识别"关键字",并查找类似评论在查询的where子句中使用这些关键字(理想情况下,如果数据库支持,则搜索"全文" ),可能会对结果集进行后处理,以便对找到的候选人进行评分.
书籍也有类别 - 在法国设置的惊悚片类似于法国的历史研究,等等?标题和文本之外的元数据可能有助于保持结果的相关性.