如何删除名词列表中的复数?

时间:2011-11-13 04:53:29

标签: python

我有一个字符串列表:

['bill', 'simpsons', 'cosbys', 'cosby','bills','mango', 'mangoes']

删除此列表中的所有复数有什么效果? 所以,我希望输出为:

['bill', 'simpsons', 'cosby','mango']

4 个答案:

答案 0 :(得分:6)

一般来说,这个过程称为“词干”,并且有一个名为'stemming'的包用于python。

像这样使用:

from stemming.porter2 import stem
stem("simpsons")

词干不只是干复数,但你可以修改词干包只能执行复数词干。看一下来源:http://tartarus.org/martin/PorterStemmer/python.txt

答案 1 :(得分:3)

使用NodeBox Linguistics只需要两行:

import en
only_singulars = [w for w in noun_list if w == en.noun.singular(w)]

图书馆实施Conway's pluralization rules,考虑各种例外情况。

答案 2 :(得分:1)

Pluralization rules有很多极端情况。也许您可以绕过基于规则的方法并使用字典查找来识别单词的复数形式和单数形式。

答案 3 :(得分:0)

除非提供额外信息,否则无法做到这一点。例如,列表中的所有字符串都是英文单词吗?他们会成为名词吗?如果是这样的话,似乎有几个用于Python的源代码软件包在大多数情况下可能做得很好,但是您可以更严格地定义您的需求,从而获得更多成功。如果列表是根据用户输入创建的,则用户可能不同意您的处理结果;考虑“章鱼”,“指数”,等等。