【发布时间】:2019-07-12 17:28:30
【问题描述】:
试图用一些硬编码的值来匹配一个词,假设我有这个词
'revenue' but 'revenues'
也应该是 match.same 这样的方式
'liability' > 'liabilities' .
我们应该在这里采取什么方法,在此先感谢。
我尝试过使用自己的算法,但很难维护词库及其各自的复数或单数。
【问题讨论】:
标签: java dictionary lucene javadoc pluralize
试图用一些硬编码的值来匹配一个词,假设我有这个词
'revenue' but 'revenues'
也应该是 match.same 这样的方式
'liability' > 'liabilities' .
我们应该在这里采取什么方法,在此先感谢。
我尝试过使用自己的算法,但很难维护词库及其各自的复数或单数。
【问题讨论】:
标签: java dictionary lucene javadoc pluralize
如果您不想维护完整的字典,那么您可以尝试实施一些通用规则以及这些规则的例外字典。 但这些都是快速而简单的解决方案。根据它必须有多好,还可以使用不同的方法,例如机器学习,并且可能在 AWS 或 Azure 等云上提供一些语言服务......
【讨论】:
你可能想看看 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());
以上为两个词返回相同的词干。
【讨论】: