【问题标题】:Text processing / comparison engine文本处理/比较引擎
【发布时间】:2009-11-06 05:45:29
【问题描述】:

我希望比较两个文档,以确定基于关键字的文本匹配百分比。

为此,我可以轻松地将它们切成一组经过净化的单词并进行比较,但我想要一些更智能的东西,可以根据词根匹配单词的东西,即。即使它们的时态或复数不同。这种技术似乎用于全文搜索,但我不知道要查找什么。

这样的引擎(最好适用于Java)是否存在?

【问题讨论】:

    标签: java parsing text full-text-search


    【解决方案1】:

    是的,你想要一个词干分析器。 Lauri Karttunen 在有限状态机上做了一些令人惊叹的工作,但遗憾的是我认为没有可用的实现可供使用。如前所述,Lucene 具有多种语言的词干分析器,OpenNLP 和 Gate 项目也可能对您有所帮助。另外,您打算如何“砍掉它们”?由于标点符号、所有格等,这比大多数人想象的要复杂一些。在许多语言中,仅在空白处分割根本不起作用。也可以看看 OpenNLP。

    要考虑的另一件事是,仅比较两个文档的非停用词可能不是获得良好相似性的最佳方法,具体取决于您实际尝试执行的操作,因为您会丢失位置信息。例如,一种常见的抄袭检测方法是将文档分成 n 个标记的块并进行比较。有一些算法可以让您同时比较多个文档,这种方式比在每个文档之间进行成对比较更有效。

    【讨论】:

      【解决方案2】:

      我不知道预构建的引擎,但如果您决定推出自己的引擎(例如,如果您找不到执行所需的预编写代码),搜索“Porter Stemmer”应该让您开始使用一种算法来相当好地摆脱(大多数)后缀。

      【讨论】:

        【解决方案3】:

        我认为Lucene 可能符合您的要求。根据我的经验,它非常易于使用。

        编辑:我只是重读了这个问题并进一步考虑了它。 Lucene 是一个用于 java 的全文搜索引擎。但是,我不太确定将其重新用于您尝试做的事情会有多难。无论哪种方式,它都可能是一个很好的资源,可以从那里开始研究。

        【讨论】:

          猜你喜欢
          • 2014-08-19
          • 2010-09-26
          • 1970-01-01
          • 2010-11-29
          • 1970-01-01
          • 2010-09-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多