当前位置: 首页 > 面试题库 >

生成名词的复数形式

阎卓
2023-03-14
问题内容

给定一个单词,该单词可能是也可能不是单数形式的名词,您将如何生成其复数形式?

基于这个NLTK教程和这个关于复数规则的非正式列表,我编写了这个简单的函数

def plural(word):
    """
    Converts a word to its plural form.
    """
    if word in c.PLURALE_TANTUMS:
        # defective nouns, fish, deer, etc
        return word
    elif word in c.IRREGULAR_NOUNS:
        # foot->feet, person->people, etc
        return c.IRREGULAR_NOUNS[word]
    elif word.endswith('fe'):
        # wolf -> wolves
        return word[:-2] + 'ves'
    elif word.endswith('f'):
        # knife -> knives
        return word[:-1] + 'ves'
    elif word.endswith('o'):
        # potato -> potatoes
        return word + 'es'
    elif word.endswith('us'):
        # cactus -> cacti
        return word[:-2] + 'i'
    elif word.endswith('on'):
        # criterion -> criteria
        return word[:-2] + 'a'
    elif word.endswith('y'):
        # community -> communities
        return word[:-1] + 'ies'
    elif word[-1] in 'sx' or word[-2:] in ['sh', 'ch']:
        return word + 'es'
    elif word.endswith('an'):
        return word[:-2] + 'en'
    else:
        return word + 's'

但是我认为这是不完整的。有一个更好的方法吗?


问题答案:

pattern-en软件包(适用于python 2.5+,但不适用于python
3)提供了复数形式

>>> import pattern.en
>>> pattern.en.pluralize("dog")
'dogs'
>>>


 类似资料:
  • 我正在从事一个与NLP相关的项目,在这个项目中,我想从一个句子中识别主要动词(我可以使用依赖项解析器),然后将动词转换为其名词形式(或者我们可以说从动词派生的名词),例如或,只要可能。有没有类似于wordnet或verbnet的资源提供这种功能?

  • 问题内容: 是否有任何Java API(S),将提供(如英语单词的复数形式的)? 问题答案: Wolfram | Alpha返回给定单词的变形形式列表。 参见以下示例: http://www.wolframalpha.com/input/?i=word+cactus+inflected+forms 这是他们的API: http://products.wolframalpha.com/api/

  • 基于输入数字返回单词的单数或复数形式。如果第一个参数是一个 object,那么它将使用一个闭包来返回一个函数,该函数可以自动实现多个单词,如果所提供的字典包含这个单词,它不会简单地以 s 结尾。 如果 num 为 -1 或者 1,返回单词的单数形式。如果 num 是任何其他数字,返回复数形式。忽略第三个参数 plural,默认使单词 + s,或在必要时提供自定义的复数单词。如果第一个参数是一个 o

  • 问题内容: 所以我基本上是在一个项目中,计算机从单词列表中提取一个单词,然后为用户弄乱它。只有一个问题:我不想一直在列表中写很多单词,所以我想知道是否有一种方法可以导入很多随机单词,所以即使我也不知道它是什么,并且那我也可以玩游戏吗?这是整个程序的编码,我只输入了6个字: 问题答案: 如果您重复执行此操作,我将在本地下载它并从本地文件中提取。* nix用户可以使用。 例: 从远程字典中提取 如果您

  • 谢谢你。

  • 我正在尝试构建我的第一个签名APK以供发布,但出现了一些错误。看起来效果很好,但现在我就是无法生成APK。我做了研究,但什么也没找到。 Gradle版本:4.8,Android插件版本3.1.4,这是我的应用程序Gradle屏幕截图:link 这来自assembleDebug: 我曾经有过布局和不赞成使用的功能的其他问题,但我解决了它。其中一个就这样消失了,但我什么也没做:-) 我已经尝试过的事情