我在字符串变量中有一个随机文本内容。我想查找用户指定的特定单词的所有单词变形。
示例:如果用户正在寻找单词“assist”,那么它应该抓取字符串中出现的所有“assist、assist、assist、assisting”。
问题是:是否有 Java 库可用于在指定的 String 中自动检测此类变形?
注意:我看到一个名为WolframAlpha的 Java 库声称它可以做到这一点,这里是它的 Web 界面,但我没有看到这个库工作,也没有使用它的指南。
我在字符串变量中有一个随机文本内容。我想查找用户指定的特定单词的所有单词变形。
示例:如果用户正在寻找单词“assist”,那么它应该抓取字符串中出现的所有“assist、assist、assist、assisting”。
问题是:是否有 Java 库可用于在指定的 String 中自动检测此类变形?
注意:我看到一个名为WolframAlpha的 Java 库声称它可以做到这一点,这里是它的 Web 界面,但我没有看到这个库工作,也没有使用它的指南。
它被称为词干。首先,您需要(对于特定语言)派生词干:
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}"
对于前缀 un-dis-inter-,情况仍然会更复杂,但一般来说,变形是英语中的词尾。然后是同义词搜索。
那里的字典通常称为语料库。搜索“免费英语语料库”将产生结果。
\\b
= 单词边界
p{L}*
= 0 个或更多 ( *
) 个字母