5

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

一些例子:

示例 -> 示例一个简单的 's' 后缀
Glitch -> Glitch 'es' 后缀,与上面相反
国家 -> 国家 'ies' 后缀。
绵羊 -> 绵羊没有变化:不确定值的可能后备

或者,这似乎是一个相当详尽的列表。

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

4

6 回答 6

11

这实际上取决于您所说的“以编程方式”是什么意思。部分英语适用于易于理解的规则,而部分则没有。它主要与频率有关。对于简要概述,您可以阅读 Pinker 的“Words and Rules”,但请帮自己一个忙,不要将整个语言学生成理论完全放在心上。那里的经验主义比那种思想流派真正适合追求的要多得多。

许多英语可以在统计上进行词形还原。顺便说一句,词干提取或词形还原是您要查找的术语。Morpha Lemmatizer是使用基于频率的异常引导的统计规则的最有效的词形还原器之一。如果您有一个项目需要这种类型的简化表示英语特定术语的字符串,您可以试一试。

在规范化相关术语方面,还有更多天真的方法可以完成很多工作。看看Porter Stemmer,它足以有效地将英语中的大多数术语聚集在一起。

于 2009-09-04T03:17:10.813 回答
5

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

  • -y -> -ies(家庭 -> 家庭)
  • -us -> -i (仙人掌 -> 仙人掌)
  • -s -> -ses(损失 -> 损失)
  • 否则加 -s

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

  • 派:是派还是派?
  • 滑雪:“skus”是单数还是复数?
  • molasses:“molasse”或“molass”是单数还是复数?

所以它可以做到,但你将有一个更大的例外列表,你将不得不存储很多误报(即看起来是复数但不是复数的东西)。

于 2009-09-04T03:28:02.797 回答
3

“axes”是“ax”的复数还是“axis”的复数?没有上下文,即使是人类也无法分辨。

于 2009-09-04T04:13:51.837 回答
1

您可以查看Inflector.net - 我的 Rails 变形类端口。

于 2009-09-04T04:17:59.987 回答
0

不 - 英语不是一种遵守许多规则的语言。

我认为你最好的选择是:

  • 使用常用词及其复数的字典(或按复数规则对它们进行分组,例如:将仅添加 S 的单词分组,添加 ES 的单词,删除 Y 并添加 IES 的单词...)
  • 重新考虑你的申请
于 2009-09-04T03:11:25.593 回答
-3

正如 nickf 已经说过的那样,这是不可能的。对于您描述的单词类别来说这很简单,但是所有以 s 自然结尾的单词呢?例如,我的名字 Marius 不是 Mariu 的复数形式。我猜与巴士相同。英语单词的复数是一种单向函数(散列函数),您通常需要句子或段落的其余部分作为上下文。

于 2009-09-04T03:16:05.807 回答