2013-05-03 65 views
3

我想创建一个应用程序在其数据库中搜索相似的文档;例如。用户上传文件(文本,图像等),我想查询我的应用程序是否有类似的情况。文档相似性框架

我已经创建了用于该过程(指纹识别,特征提取,哈希,哈希比较等)的必要算法,我正在寻找一个框架,它将所有这些耦合起来。

例如,如果我要实现它在Lucene的,我会做到以下几点:

  • 创建自定义“标记生成器”和“词干”(〜特征提取和指纹)
  • 不是添加创建的元素到Lucene索引
  • 最后使用MoreLikeThis类找到类似文件

所以,基本上Lucene的可能是一个不错的选择 - 但据我所知, Lucene并不是一个文档相似性搜索引擎,而是一个基于术语的搜索引擎。

我的问题是:是否适用于上述问题的任何应用程序/框架?

感谢, krisy

更新:它看起来像我上面描述的过程被称为基于内容的媒体(声音,图像,视频)检索。

有使用Lucene的这许多项目,请参阅:http://wiki.apache.org/lucene-java/PoweredBy(里拉,同理,等等),但还是没没有发现任何专门的框架...

+0

看看[这个问题的答案](http://stackoverflow.com/questions/1844194/get-cosine-similarity-between-two-documents-in-lucene),我认为它解决了同一主题。 – mindas 2013-05-03 09:20:21

+0

谢谢;它证实了我最初的想法可以在Lucene中完成! :-)但是还有其他专门为此任务设计的框架吗? – krisy 2013-05-03 09:26:41

+0

我听说过[gensim](http://radimrehurek.com/gensim/),但这是针对Python的。不确定Java是否有类似的东西。 – mindas 2013-05-03 09:30:07

回答

0

由于您使用Lucene的,你可能会看一看SOLR。我确实意识到它不是一个专用的框架,但它确实在Lucene之上添加了一些非常方便的东西。考虑到Lucene的可插拔性,它的记录以及存在大量有用资源的事实,SOLR可能会帮助您完成工作。

此外,answer是@mindas指出,链接the blog post描述如何与SOLR达成你的目标的技术细节(但你可能已经读过,在此期间)。

+0

Solr看起来不错 - 将仔细看看! 博客文章 - 是的,我读了 - 看起来很棒;我自己的想法有点类似,谢谢! – krisy 2013-05-14 09:45:38

0

如果我正确地让你有你自己的数据库,并且您正在搜索数据库中用户上传时/用户上传后是否重复或复制/相似。

如果是这样的情况下,域相比是非常大的..

1)图像必须使用模式匹配,有可用于图像重复的发现者几篇论文,净,找到这些人,会得到很多选项是,

2)文档再次出现的特点是分工

  1. DOC(X)
  2. PDF
  3. TXT
  4. RTF等。

每个文件进行不同的属性,现在这里Lucene可以帮助你,但它的搜索引擎,

当搜索语言模式,有我们需要的东西检查,因为你正在寻找类似的(不完全相同)。

因此,模糊语言程序将派上用场。

这个要求太大,论坛页面将不足以反正解释一切,我希望这多少会做

+0

我知道,这是一个巨大的领域 - 知道我只想找到最适合这项工作的工具。 关于论坛页面的大小;这让我想起:“我已经发现了一个非常奇妙的证据,这个边缘太窄而无法包含”:-) – krisy 2013-05-14 09:49:04

+0

我已经看到了lucene,但没有太多的意识到这一点,所以无法这么说,但我知道使用神经语言或模糊逻辑你找到重复,使用神经语言你会创建一个模式,并使用模糊你可以分析和匹配它们。 SPSS工具是一种统计工具,只有在我记得正确的情况下才能使用包含文件的文本。它的演示是免费的。 – MarmiK 2013-05-14 09:52:30

+0

也许这是一个链接来匹配使用spss的两个数据集,如果它涉及'http:// www.ats.ucla.edu/stat/spss/faq/update.htm' :) – MarmiK 2013-05-14 09:57:13