在NLTK书的第6章第2.1节中,代码调用电影评论语料库进行文档分类。书中的代码如下:
from nltk.corpus import movie_reviews
documents = [(list(movie_reviews.words(fileid)), category)
for category in movie_reviews.categories()
for fileid in movie_reviews.fileids(category)]
random.shuffle(documents)
我在电子邮件的文本之间分隔了我自己的数据集逗号(文本,类别),并且该类别的正面或负面。我可以在自己的文件上调用.words()吗?此外,代码在调用movie_reviews.categories()时的含义是什么。我无法理解如何构建数据以使其成为代码所需的形式。我查看了各个语料库文件,但我无法弄清楚从这里做什么。任何帮助,将不胜感激。谢谢!
答案 0 :(得分:1)
words()
只根据the documentation将“给定文件作为单词和标点符号列表”返回。在这方面,您绝对可以在任何文本文件上调用nltk.corpus.words()
。
对于文档中的categories()
,further down,它表示“返回[s]为此语料库定义的类别列表,或者文件(如果它)给出。”然而,它的来源有点模糊。请注意,不同的语料库有不同的方式来指示其类别。 movie_reviews
通过目录名称执行此操作,但abc
和reuters
在文件中具有显式类别。 qc
具有与文本相同的文件中的类别。
可能需要对您自己的数据进行一些实验,看看您是否可以复制此行为,但合理的第一步是将包含数据子集的目录添加到nltk_data/corpora
并进行操作使用您在其他语料库中看到的格式。