我在String变量中有一个随机文本内容。我想查找用户指定的特定单词的所有单词变形。
示例:如果用户正在寻找单词“assist”,那么它应该抓住String中的所有“协助,助攻,辅助,协助”事件。
问题是:是否有可用于在指定字符串中自动检测此类变形的Java库?
注意:我见过一个名为WolframAlpha的Java库声称它会这样做而here是它的Web界面,但是我没有看到这个库工作,没有指南是可以使用它。
答案 0 :(得分:1)
首先它不是Java库,它是以前称为Mathematica的Wolfram语言。它确实有JLink,可以从Java调用,但你必须运行Wolfram Kernel来执行代码。
这称为Natural Language Processing,它是一个庞大而复杂的领域。我已经摆弄了几个问题,但是如果你想获得可靠的解决方案,我可以说这更难以复杂。
您可能想要查看的内容是:The Stanford NLP
答案 1 :(得分:0)
答案 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或更多(*
)个字母