【问题标题】:Getting Ngram frequency from a a large corpus of txt. files从大量文本中获取 Bigram 频率。文件
【发布时间】:2015-09-03 13:59:38
【问题描述】:

我需要开发一个代码,用于使用 NLTK 在大型 txt 语料库中计算 Ngram (1,2,3,4,5,6) 频率。我有两个问题: 1:我有以下代码批量导入文件:

from nltk.corpus import PlaintextCorpusReader

Corpus_root = 'C/x/x/Myfolder'
files = PlaintextCorpusReader(corpus_root, '.*')
files.fileids()

给我所有读入 NLTK 的文件的输出。

我的第一个问题是如何将语料库阅读器连接到即将到来的代码以计算 ngram?

下一步我的问题是我应该使用什么代码模块来计算二元组、三元组和四元组和五元组以及它们的频率,哪些是高效和快速的?

我有 300 个 txt 文件,想用它们来获取 ngram 频率。

【问题讨论】:

    标签: python nltk n-gram


    【解决方案1】:

    您使用新语料库的方式与内置 nltk 语料库(如 Brown 或 Reuters 语料库)相同:根据需要调用方法 words()sents()。两种方法都接受文件名参数;如果使用,您只会得到该文件的单词。我建议使用它一次处理一个文件,否则您的一些 ngram 将在一个文件中开始并在另一个文件中结束。 (您是否想要跨越句子边界的 ngram?您必须做出相应的决定并继续进行)。

    NLTK 书有函数nltk.bigramsnltk.trigramsnltk.ngrams(它接受第二个参数n 指定ngram 大小)。

    for fname in files.fileids():
        lots_of_bigrams = nltk.bigrams(files.words(fname))
        # count them however you want
    

    NLTK 书的Chapter 2 展示了如何使用words()sents(),甚至还有一个关于ngrams 的部分。好好看看吧。

    【讨论】:

    • 嗨,谢谢亚历克西斯,实际上我想分批处理我的文件,我想拥有所有可能的 ngram(单词)。
    猜你喜欢
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-16
    • 2020-01-22
    • 1970-01-01
    • 2020-05-09
    相关资源
    最近更新 更多