我正在尝试编写一个脚本,它将浏览我的语料库,其中包含93000个txt文件,并找到所有这些图表的频率分布(因此不是单独的频率分布,而是整个语料库的一个频率分布)。我已经用它来计算语料库中单个文件的频率分布,但根本不具备进一步研究的技能。代码如下:
import nltk
import re
from nltk.corpus.reader.plaintext import PlaintextCorpusReader
from nltk import FreqDist
corpus_root = '/Users/jolijttamanaha/Python/CRspeeches'
speeches = PlaintextCorpusReader(corpus_root, '.*\.txt')
print "Finished importing corpus"
f = speeches.open('Mr. THOMPSON of Pennsylvania.2010-12-07.2014sep17_at_233337.txt')
raw = f.read()
tokens = nltk.word_tokenize(raw)
tgs = nltk.trigrams(tokens)
fdist = nltk.FreqDist(tgs)
for k,v in fdist.items():
print k,v
提前谢谢你的帮助。在
一旦你用
PlaintextCorpusReader
定义了你的speeches
语料库,你就可以很简单地得到整个语料库的三元组:但这有一个不受欢迎的问题:它形成了从一个文件末尾到下一个文件的三元组。但这样的三元组并不代表可以在文本中互相跟随的标记,它们完全是偶然的。您真正想要的是将每个单独文件中的三元数组合起来,可以这样得到:
^{pr2}$您的
fdist
现在包含了累积统计信息,您可以用各种可用的方法检查这些统计信息。E、 g对于预先编码的corporapi,您可以尝试使用
corpus.raw()
,而不是使用corpus.words()
,例如正如@alexis所指出的,上面的代码也适用于加载了
PlaintextCorpusReader
的自定义语料库,请参见http://www.nltk.org/_modules/nltk/corpus/reader/plaintext.html相关问题 更多 >
编程相关推荐