【问题标题】:NLTK document classificationNLTK 文档分类
【发布时间】:2014-01-06 03:09:46
【问题描述】:

在 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() 时,代码的含义是什么。我无法理解如何构造数据以将其转换为代码所需的形式。我查看了各个语料库文件,但我不知道从这里做什么。任何帮助,将不胜感激。谢谢!

【问题讨论】:

  • 嗨!你试过在你的文件上调用words()吗?如果是这样,会发生什么或你得到什么样的错误? categories()呢?
  • 另外,你看过这个问题吗? stackoverflow.com/q/4951751/583834

标签: python text classification nltk


【解决方案1】:

words() 根据the documentation 仅返回“给定文件作为单词和标点符号列表”。在这方面,您绝对可以在您拥有的任何文本文件上调用nltk.corpus.words()

至于文档中的categories()further down,它说它“返回[s] 为该语料库定义的类别列表,或者为文件(如果已给出)。”但是,它的来源有点模糊。请注意,不同的语料库有不同的方式来表示它们的类别。 movie_reviews 通过目录名称来实现,但 abcreuters 在文件中有明确的类别。 qc 在与文本相同的文件中具有类别。

可能需要对您自己的数据进行一些试验,看看您是否可以复制此行为,但合理的第一步是将包含您的数据子集的目录添加到 nltk_data/corpora 并尝试使用您在其他语料库中看到的格式。

【讨论】:

    猜你喜欢
    • 2017-04-11
    • 2012-10-12
    • 2018-09-04
    • 2017-01-14
    • 2014-03-05
    • 2012-02-05
    • 2011-07-12
    • 2018-04-09
    • 2014-06-27
    相关资源
    最近更新 更多