【问题标题】:detect words with the same root检测具有相同词根的单词
【发布时间】:2015-09-11 09:49:17
【问题描述】:

我目前正在为 Java 中的 pdf 文件开发一个自动化 Index-Generator。这个概念非常简单(现在):我遍历 pdf 中的每个单词,与一个忽略列表(类似于该语言中 10000 个最常见的单词)进行比较,然后将其添加到 com.google.common.collect.HashMultimap,单词为 String和一个 HashSet 页面,单词出现在。

这工作得很好,但我仍然将所有不同的偏角/共轭形式的单词作为索引中的单独项目。我正在考虑仅比较这些单词的相对子字符串,但例如在德语(该程序旨在用于)及其所有不规则性的情况下,这种方法的好处非常少。

还有其他想法、库、正则表达式吗? 提前致谢

【问题讨论】:

标签: java regex nlp similarity linguistics


【解决方案1】:

将单词简化为共同词根的过程称为词形还原。词形还原器会将eateneatsate 等词映射到eat

我没有使用德语的经验,但是可以使用不同的库来执行此任务,但英语可以使用,例如 Stanford CoreNLP,它是一个成熟的 NLP 库,还提供许多其他功能。它可能也支持德语,但我不确定。

我认为,否则,Google 搜索“German lemmatizer”将提供足够的结果。

您还可以使用词干分析器,这是词形还原的更简单版本。词干分析器通常是基于规则的组件,能够将词归约到它们的共同词根,但输出词并不总是有效的:例如,词 engine 可能被词干为 engin。如果您要求在此操作后单词仍然有效,则词形还原将是一个更好的解决方案,否则词干提取可能会更好,因为它的执行速度更快。

【讨论】:

  • 我在斯坦福 CoreNLP 上玩过,至少对于英文文本来说它工作正常
【解决方案2】:

您可以从http://danielnaber.de/morphologie/ 获取德语的变形数据。这也是例如LanguageTool 在内部使用its analysis。 (披露:在这里链接我自己的项目)

【讨论】:

    猜你喜欢
    • 2019-02-13
    • 2013-08-25
    • 1970-01-01
    • 2011-02-28
    • 2021-05-24
    • 1970-01-01
    • 1970-01-01
    • 2014-07-06
    • 2021-05-16
    相关资源
    最近更新 更多