如何使用 nltk python 3.4 创建类似于 movie_review 的语料库

How to create a corpus somthing similar to movie_review using nltk python 3.4

我 运行 正在解决一个问题,我将向您总结我正在努力完成的工作,以便您获得清晰的画面来指导我。

我想创建一个类似于 movie_reviews 的语料库 ,其中 movie_review 只有 2类别,但是在我的情况下,我将有多个类别和子类别

For instance:

say I have a corpus as my_corpus in which i wanted to create categories such as 'A', 'B', 'C', 'D' and 'E'. Each of this categories will contain sub-categories such as in 'A' I want to have sub-category like 'a1', 'a2', 'a3' so on and so forth for all other categories as well (B , C, D and E). Each of this sub-category will again have its own sub-categories like 'a1' might have 'a1.1', 'a1.2' etc.. and finally the bottom most (the leaf) will contain all the text files related to that category or sub-category.

我的问题是

1> 我怎样才能创建这样的语料库,有没有办法做到这一点,请指导我,您的回复将有很大帮助,您也可以将我映射到 link 这可以帮助我这样做

2> 我可以 运行 naivebayes 算法或任何其他适合这种情况的算法在 movie_reviews 中找到 neg 和 pos,在我这里,我也需要找到新问的问题与哪个类别及其子类别等相关?

请帮助我。

查看 CategorizedCorpusReader 的文档(and/or 来源),例如像这样:

>>> help(nltk.corpus.reader.CategorizedCorpusReader.__init__)

这是基地class;您实际上将使用适合您的数据格式的分类 reader。如果您的文件是纯文本,则为 CategorizedPlaintextCorpusReader。当您创建 reader 时,您可以通过从文件名中提取类别的正则表达式、通过提供类别的文件或通过直接传递给构造函数的字典来定义类别:

- cat_pattern: A regular expression pattern used to find the
  category for each file identifier.  The pattern will be
  applied to each file identifier, and the first matching
  group will be used as the category label for that file.

- cat_map: A dictionary, mapping from file identifiers to
  category labels.

- cat_file: The name of a file that contains the mapping
  from file identifiers to categories.  The argument
  ``cat_delimiter`` can be used to specify a delimiter.

不直接支持分层类别,但您可以自行安排,因为一个文件可以属于多个类别。例如,您可以将文件 donkey.txt 分配给 animalmammal。 nltk 的 brown 语料库有属于多个类别的文件,所以你可以检查它的细节(它使用 cat_file 方法)。

nltk 的系统将类别映射到 fileid,而不是低级类别。如果您按照我的建议进行设置,您将能够编写 mycorpus.words(categories=["A", "B"]) 并从类别 Aa1Aa2 等中的所有文件中获取单词。如果您想公开您的类别层次结构,您必须自己编写代码。 (例如,您可以使用仅 returns 类别树的方法 hierarchy 扩展 reader class。)