【问题标题】:JAVA get Plural/Singular for a given String/Word [closed]JAVA获取给定字符串/单词的复数/单数[关闭]
【发布时间】:2019-07-12 17:28:30
【问题描述】:

试图用一些硬编码的值来匹配一个词,假设我有这个词

'revenue' but 'revenues'

也应该是 match.same 这样的方式

 'liability' > 'liabilities' .

我们应该在这里采取什么方法,在此先感谢。

我尝试过使用自己的算法,但很难维护词库及其各自的复数或单数。

【问题讨论】:

    标签: java dictionary lucene javadoc pluralize


    【解决方案1】:

    如果您不想维护完整的字典,那么您可以尝试实施一些通用规则以及这些规则的例外字典。 但这些都是快速而简单的解决方案。根据它必须有多好,还可以使用不同的方法,例如机器学习,并且可能在 AWS 或 Azure 等云上提供一些语言服务......

    【讨论】:

      【解决方案2】:

      你可能想看看 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());
      

      以上为两个词返回相同的词干。

      【讨论】:

      • 体面的答案,但不幸的是,它似乎把“负债”变成了“负债”而不是“负债”
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-18
      • 1970-01-01
      • 2021-07-04
      • 2012-10-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多