【问题标题】:Need to set categorized corpus reader in NLTK and Python, corpus texts in one file, one text per line需要在 NLTK 和 Python 中设置分类语料阅读器,语料在一个文件中,每行一个文本
【发布时间】:2014-12-18 03:37:14
【问题描述】:

Jacob Perkins 的《Python Text Processing with NLTK 2.0 Cookbook》一书让我熟悉了 NLTK 和文本分类。

我的语料库文档/文本每个都由一段文本组成,因此它们每个都位于单独的文件行中,而不是单独的文件中。这些段落/行的数量约为200万。因此,机器学习实例大约有 200 万个。

我文件中的每一行(一段文本 - 域标题、描述、关键字的组合)都是特征提取的主题:标记化等,使其成为机器学习算法的实例。

我有两个这样的文件,其中包含所有的正面和负面。

如何将它加载到 CategorizedCorpusReader?有可能吗?

我之前尝试过其他解决方案,比如 scikit,最后选择了 NLTK,希望从一个更简单的点开始。

【问题讨论】:

    标签: python-2.7 text nltk corpus categorization


    【解决方案1】:

    假设你有两个文件:

    file_pos.txt、file_neg.txt

    from nltk.corpus.reader import CategorizedCorpusReader
    reader = CategorizedCorpusReader('/path/to/corpora/', \
                                     r'file_.*\.txt', \
                                     cat_pattern=r'file_(\w+)\.txt')
    

    在此之后,您可以对其应用常用的 Corpus 函数,例如:

    >>> reader.categories()
    ['neg', 'pos']
    >>> reader.fileids(categories=['neg'])
    ['file_neg.txt']
    

    还有 tagged_sents、tagged_words 等。

    您可能会喜欢这个关于创建自定义语料库的教程: https://www.packtpub.com/books/content/python-text-processing-nltk-20-creating-custom-corpora

    【讨论】:

    • 在这种情况下,如何从语料库中检索单个文档?你不能使用corpus.sents()[0]corpus.paras()[0]corpus.words()[0],因为这些方法会给你不给你的第一个文件。
    • 这是一个公平的观点。您可以做的一件事是将 pos 和 neg 句子拆分到它们自己的文件中。这样,单独获取它们可能会更简单一些。 编辑:当我说成他们自己的文件时,我说将它们分成 pos_1..N.txt 和 neg_1..N.txt
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 2012-05-14
    • 2016-09-24
    • 2019-02-27
    • 1970-01-01
    • 2014-02-02
    相关资源
    最近更新 更多