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

时间:2009-09-04 03:09:53

标签: 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

或者,this seems to be a fairly exhaustive list.

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

6 个答案:

答案 0 :(得分:11)

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

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

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

答案 1 :(得分:5)

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

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

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

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

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

答案 2 :(得分:3)

“轴”是“ax”或“轴”的复数吗?即使是没有背景的人也无法分辨。

答案 3 :(得分:1)

你可以看看Inflector.net - 我的Rails'拐点类的端口。

答案 4 :(得分:0)

不 - 英语不是一种符合许多规则的语言。

我认为你最好的选择是:

  • 使用常用单词及其复数形式的字典(或按其复数规则对它们进行分组,例如:组合单词,只需添加S,单词添加ES,单词放下Y并添加IES ... )
  • 重新考虑您的申请

答案 5 :(得分:-3)

这是不可能的,正如尼克已经说过的那样。对于你所描述的词汇类别来说,这很简单,但是所有以s结尾的词语自然呢?例如,我的名字Marius不是Mariu的复数。我觉得和巴士一样。英语单词的多元化是单向函数(哈希函数),你通常需要句子的其余部分或段落用于上下文。