检测同根词
detect words with the same root
我目前正在为 Java 中的 pdf 文件开发一个自动化的 索引生成器 。这个概念非常简单(现在):我遍历 pdf 中的每个单词,与忽略列表(类似于该语言中 10000 个最常见的单词)进行比较,然后将其添加到 com.google.common.collect.HashMultimap
中作为 String 和页面的 HashSet,单词出现在。
这工作得很好,但我仍然在索引中将所有不同的 declination/conjugation 形式的单词作为单独的项目。我正在考虑只比较这些词的相对子字符串,但是例如在德语(该程序旨在用于)及其所有不规则性中,这种方法的好处非常小。
还有其他想法、库、正则表达式吗?
提前致谢
您可以从 http://danielnaber.de/morphologie/. This is also what e.g. LanguageTool uses internally for its analysis 获取德语的词形变化数据。 (披露:在此处链接我自己的项目)
将单词简化为其共同词根的过程称为词形还原。词形还原器会将 eaten
、eats
和 ate
之类的词映射到 eat
。
我没有使用德语的经验,但是执行此任务的不同库可用于英语,例如 Stanford CoreNLP,它是一个成熟的 NLP 库,还提供许多其他功能。它可能也支持德语,但我不确定。
否则,Google 搜索 "German lemmatizer" 将提供足够的结果,我认为。
您还可以使用词干分析器,它是词形还原的更简单版本。词干提取器通常是一个基于规则的组件,能够将单词缩减为它们的共同词根,但输出单词并不总是有效:例如,单词 engine
可能会被提取为 engin
。如果您要求单词在此操作后仍然有效,词形还原将是更好的解决方案,否则词干提取可能会更好,因为它执行起来更快。
我目前正在为 Java 中的 pdf 文件开发一个自动化的 索引生成器 。这个概念非常简单(现在):我遍历 pdf 中的每个单词,与忽略列表(类似于该语言中 10000 个最常见的单词)进行比较,然后将其添加到 com.google.common.collect.HashMultimap
中作为 String 和页面的 HashSet,单词出现在。
这工作得很好,但我仍然在索引中将所有不同的 declination/conjugation 形式的单词作为单独的项目。我正在考虑只比较这些词的相对子字符串,但是例如在德语(该程序旨在用于)及其所有不规则性中,这种方法的好处非常小。
还有其他想法、库、正则表达式吗? 提前致谢
您可以从 http://danielnaber.de/morphologie/. This is also what e.g. LanguageTool uses internally for its analysis 获取德语的词形变化数据。 (披露:在此处链接我自己的项目)
将单词简化为其共同词根的过程称为词形还原。词形还原器会将 eaten
、eats
和 ate
之类的词映射到 eat
。
我没有使用德语的经验,但是执行此任务的不同库可用于英语,例如 Stanford CoreNLP,它是一个成熟的 NLP 库,还提供许多其他功能。它可能也支持德语,但我不确定。
否则,Google 搜索 "German lemmatizer" 将提供足够的结果,我认为。
您还可以使用词干分析器,它是词形还原的更简单版本。词干提取器通常是一个基于规则的组件,能够将单词缩减为它们的共同词根,但输出单词并不总是有效:例如,单词 engine
可能会被提取为 engin
。如果您要求单词在此操作后仍然有效,词形还原将是更好的解决方案,否则词干提取可能会更好,因为它执行起来更快。