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

时间:2016-03-05 19:58:26

标签: python nltk corpus stop-words

在使用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 个答案:

答案 0 :(得分:1)

  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)