计算 NLTK 语料库中的非停用词

Counting non stop words in an NLTK corpus

在使用 NLTK 的 python 中,我如何计算按类别过滤的文档中的非停用词数量?

我可以弄清楚如何按类别过滤语料库中的单词,例如类别“新闻”的棕色语料库中的所有单词是:

text = nltk.corpus.brown.words(categories=category)

另外,我可以弄清楚如何获取特定文档的所有单词,例如棕色语料库中文档“cj47”中的所有单词是:

text = nltk.corpus.brown.words(fileids='cj47')

然后我可以遍历结果并计算不是停用词的单词,例如

stopwords = nltk.corpus.stopwords.words('english')
for w in text:    
    if w.lower() not in stopwords:
#found a non stop words

但是如何将它们放在一起以便按类别过滤特定文档?如果我尝试同时指定类别和过滤器,例如

 text = nltk.corpus.brown.words(categories=category, fields=’cj47’)

我收到一条错误消息:

 ValueError: Specify fields or categories, not both
  1. 获取类别的文件 ID:

    fileids = nltk.corpus.brown.fileids(categories=category)

  2. 对于每个文件,统计非停用词:

    for f in fileids: words = nltk.corpus.brown.words(fileids=f) sum = sum([1 for w in words if w.lower() not in stopwords]) print "Document %s: %d non-stopwords." % (f, sum)