在使用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
答案 0 :(得分:1)
获取类别的文件ID:
fileids = nltk.corpus.brown.fileids(categories=category)
对于每个文件,计算非停用词:
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)