如何检查一个词的复数形式是否比复数形式更常见';单词数组中的单数形式(使用Python/NLTK)?

如何检查一个词的复数形式是否比复数形式更常见';单词数组中的单数形式(使用Python/NLTK)?,python,nltk,Python,Nltk,我正试着做NLTK练习,但我不能做这个。“哪些名词在复数形式中更常见,而不是它们的单数形式?(只考虑规则复数,用-S后缀形成)。”我花了一天的时间思考这个问题,尝试一些事情,但我就是做不到。 谢谢。拿一个语料库,数一数: >>> from collections import Counter >>> from nltk.corpus import brown >>> texts = brown.words()[:10000] >>

我正试着做NLTK练习,但我不能做这个。“哪些名词在复数形式中更常见,而不是它们的单数形式?(只考虑规则复数,用-S后缀形成)。”我花了一天的时间思考这个问题,尝试一些事情,但我就是做不到。
谢谢。

拿一个语料库,数一数:

>>> from collections import Counter
>>> from nltk.corpus import brown
>>> texts = brown.words()[:10000]
>>> word_counts = Counter(texts)
>>> word_counts['dollar']
5
>>> word_counts['dollars']
15
但请注意,有时在计数时仅使用表面字符串是不清楚的,例如

>>> texts = brown.words()[:10000]
>>> word_counts = Counter(texts)
>>> word_counts['hits']
14
>>> word_counts['hit']
34
>>> word_counts['needs']
14
>>> word_counts['need']
30
POS敏感计数(参见类型与令牌):

让我们稍微逆向一下, Brown 语料库是好的,它在NLTK被标记和标记,但是如果你想使用你自己的语料库,那么你必须考虑以下:

  • 使用哪种语料库?如何标记化?如何使用POS标签
  • 你在数什么?类型还是代币
  • 如何处理词性歧义?如何区分名词和非名词
最后,考虑这一点:

  • 是否真的有办法找出一个词在语言中是复数还是单数更常见?或者它总是相对于您选择分析的语料库
  • 是否存在某些名词不存在复数或单数的情况?(答案很可能是肯定的)
      brw是一个单词数组

      counter = Counter(brw);
      plurals = [];
      for word in brw:
          if(word[-1]!='s'):
              plural = counter[word+'s'];
              singul = counter[word];
              if(plural>singul):
                  plurals.append(word+'s');
      

      复数是输出数组,仅包含复数(重复,meh)。如果我使用set(),它们将不会重复。是这样吗?

      你试过什么了吗?第一步当然是将文本标记化。我使用了棕色语料库。所有的话。它们被标记和标记。我只选了名词,没有标签什么的。我会用棕色语料库。你可以用一个单词手动完成。但是,例如,如何处理所有棕色语料库单词?以自动的方式。我可以用一个循环来完成。但是,有没有什么特殊而神奇的NLTK函数可以做到这一点呢?所以我需要一个循环来检查每个单词是否有相同的单词以s或其他形式结尾。正确的。我将尝试它,并将其作为一个响应添加到此中。谢谢
      counter = Counter(brw);
      plurals = [];
      for word in brw:
          if(word[-1]!='s'):
              plural = counter[word+'s'];
              singul = counter[word];
              if(plural>singul):
                  plurals.append(word+'s');