11

主题中的问题 - 我正在尝试在 Google App Engine 中的应用程序的 python 中执行此操作。我知道 PyEnchant 库用于自然语言识别,但我不知道是否可以将它用于我的问题以及如何使用它。

4

3 回答 3

19

Ashwini 提到了有用的变形库,但没有解释如何检查给定单词是复数形式还是单数形式。

如果你知道这个词是单数还是复数,你可以使用:

singular_noun(word)

False如果单词不是复数,这将返回,因此您的单词理论上应该是单数。

请注意我的示例中显示的经典复数形式的缺点,可以是单数或复数形式,以及对于一般无法识别的形式它将返回 False 的事实。

import inflect
inflect = inflect.engine()

english_words = ["hat", "hats",
                 "hero", "heroes",
                 "cherry", "cherries",
                 "dish", "dishes",
                 "stadium", "stadia", "stadiums",
                 "mitochondrion", "mitochondria",
                 "sheep", "a sheep", "the sheep",
                 "whjkjhkjh", "msipelling"]

for en in english_words:
    if inflect.singular_noun(en) == False:
        print (en, "is singular")
    else:
        print (en, "is plural")

>>>
hat is singular
hats is plural
hero is singular
heroes is plural
cherry is singular
cherries is plural
dish is singular
dishes is plural
stadium is singular
stadia is singular
stadiums is plural
mitochondrion is singular
mitochondria is singular
sheep is plural
a sheep is plural
the sheep is plural
whjkjhkjh is singular
于 2016-08-22T11:05:23.070 回答
11

签出inflect 0.2.4库。

变形 0.2.4

正确生成复数、单数名词、序数、不定冠词;将数字转换为单词

于 2012-08-30T22:27:26.797 回答
3

您不会说您的问题是孤立的单词还是英语句子上下文中的单词。

例如“ thesheep ”可以是单数也可以是复数。然而:

羊在地里

是单数并且

羊在田里

是复数。

对于后者,您需要一个词性标注器,它将识别句子中名词的角色。有很多免费的和商业的,维基百科有一个很好的列表。NLTK 可能是 Python 的自然选择。

如果你只有孤立的词,你能做的最好的就是参考许多字典(例如 Wordnet,它会指示名词的单数和复数形式)。

于 2012-08-31T08:16:04.477 回答