你能以编程方式检测英语单词的复数形式,并推导出单数形式吗?

Mat*_*ley 5 language-agnostic nlp stemming lemmatization

鉴于我们假设的一些(英语)单词是复数,是否可以推导出单数形式?如果可能的话,我想避免查找/字典表.

一些例子:

Examples  -> Example    a simple 's' suffix
Glitch    -> Glitches   'es' suffix, as opposed to above
Countries -> Country    'ies' suffix.
Sheep     -> Sheep      no change: possible fallback for indeterminate values

或者,这似乎是一个相当详尽的清单.

对语言库的建议x是好的,只要它们是开源的(即,有人可以检查它们以确定如何用语言进行y)

Rob*_*ell 11

这实际上取决于"以编程方式"的含义.部分英语适用于易于理解的规则,而部分不适用.它主要与频率有关.简要概述一下,你可以阅读Pinker的"单词和规则",但要帮自己一个忙,不要把整个语言学的生成理论完全放在心上.那里有更多的经验主义,而不是那种思想学派真正有助于追求.

很多英语可以在统计学上被引理.顺便说一句,词干或词形还原是你正在寻找的术语.Morpha Lemmatizer是基于频率异常引导的统计规则的最有效的引理器之一.如果您的项目需要这种类型的字符串简化代表英语中的特定术语,您可以试一试.

在规范化相关术语方面,还有更多天真的方法可以取得很大成就.看看Porter Stemmer,它足以将大多数英语术语聚集在一起.


cle*_*tus 5

从单数形式到复数形式,与我熟悉的其他一些欧洲语言相比,英语复数形式实际上是非常规则的.例如,在德语中,计算复数形式非常复杂(例如Land - >Länder).我认为大约有20-30个例外,其余的遵循一个相当简单的规则集:

  • -y - > -ies(家庭 - >家庭)
  • -us - > -i(cactus - > cacti)
  • -s - > - - (损失 - >损失)
  • 否则添加-s

话虽如此,复数到单数形式变得更难,因为相反的情况有歧义.例如:

  • 馅饼:是馅饼还是馅饼?
  • 滑雪:'skus'是单数还是复数?
  • 糖蜜:'molasse'或'molass'是单数还是复数?

所以它可以完成,但你会有一个更大的异常列表,你将不得不存储很多误报(即看似复数但不是的东西).

  • 如果您仍在使用字典,则可以访问所有复数,因此不需要算法. (3认同)
  • 英文:盒子 - >盒子(不是盒子),菜 - >菜(不是菜)等 (2认同)