Java - 如何在大型字符串中查找单词变形形式?

时间:2014-09-03 11:39:05

标签: java search inflection

我在String变量中有一个随机文本内容。我想查找用户指定的特定单词的所有单词变形。

示例:如果用户正在寻找单词“assist”,那么它应该抓住String中的所有“协助,助攻,辅助,协助”事件。

问题是:是否有可用于在指定字符串中自动检测此类变形的Java库?

注意:我见过一个名为WolframAlpha的Java库声称它会这样做而here是它的Web界面,但是我没有看到这个库工作,没有指南是可以使用它。

3 个答案:

答案 0 :(得分:1)

首先它不是Java库,它是以前称为Mathematica的Wolfram语言。它确实有JLink,可以从Java调用,但你必须运行Wolfram Kernel来执行代码。

这称为Natural Language Processing,它是一个庞大而复杂的领域。我已经摆弄了几个问题,但是如果你想获得可靠的解决方案,我可以说这更难以复杂。

您可能想要查看的内容是:The Stanford NLP

答案 1 :(得分:0)

检查this ..

我不知道您的要求有多大,但您可以随时使用wiktionary并解析您的数据?

检查this问题..可以提供帮助

答案 2 :(得分:0)

它被称为词词干。首先,您需要(针对特定语言)派生词干:

assisting -> assist using -ance, -ing, -ly, -s, -ed etcetera.
sought -> search using an exception list

然后进行搜索,也许使用正则表达式(Matcher.find)。图案:

"\\bassist\\p{L}*"
"\\b(search|sought)\\p{L}"

对于不同的前缀 - 案例仍然会更复杂,但一般来说,选词都是英文单词结尾。然后有同义词搜索。

那里的字典通常被称为语料库。搜索"免费英语语料库"将产生结果。

\\b =字边界 p{L}* = 0或更多(*)个字母