试图将一个单词与一些硬编码值匹配,假设我有这个单词
'revenue' but 'revenues'
也应该是match。类似的方式
'liability' > 'liabilities' .
我们要在这里采取什么方法,谢谢?
我尝试使用自己的算法,但是很难维护单词库及其相应的复数或单数形式。
答案 0 :(得分:3)
如果您不想维护完整的字典,则可以尝试实现一些通用规则以及这些规则中的例外字典。 但是,这些都是快速而棘手的解决方案。根据必须达到的良好程度,也可以使用诸如机器学习之类的不同方法,以及也许可以在诸如AWS或Azure的云上使用的某些语言服务...
答案 1 :(得分:1)
您可能希望查看PorterStemmer
的lucene。这个想法是比较两个词的词干,而不是比较单数和复数。您可以详细了解here。
Here是Maven依赖项,下面是一个示例:
PorterStemmer stemmer = new PorterStemmer();
stemmer.setCurrent("liability");
stemmer.stem();
System.out.println(stemmer.getCurrent());
stemmer.setCurrent("liabilities");
stemmer.stem();
System.out.println(stemmer.getCurrent());
上面的两个词都返回相同的词干。