2012-05-06 61 views
24

我是一名文学研究生,我一直在阅读O'Reilly出版的自然语言处理书(nltk.org/book)。它看起来非常有用。我已经在第1章中讨论过所有示例文本和示例任务,例如协调一致。我现在知道莫比迪克用了多少次“鲸鱼”。问题是,我无法弄清楚如何在我自己的文本中进行这些计算。我找到了关于如何创建自己的语料库的信息(O'Reilly书第2章),但我不认为这正是我想要做的。换句话说,我希望能够做到如何从文本文件创建我自己的NLTK文本?

import nltk 
text1.concordance('yellow') 

,并得到这里所说的“黄”在我的文字使用的地方。目前我可以用示例文本来做到这一点,但不是我自己的。

我很新的蟒蛇和编程,所以这个东西是非常令人兴奋的,但非常混乱。

回答

43

我自己找到了答案。这很尴尬。或者真棒。

从Ch。 3:

f=open('my-file.txt','rU') 
raw=f.read() 
tokens = nltk.word_tokenize(raw) 
text = nltk.Text(tokens) 

是否有窍门。

+4

优秀。我只是想自己回答这个问题;很高兴我偶然发现了你的(自己)答案。 - 另一种文学学者 – cforster

+0

这个工作,我首先需要下载“PUNKT”: nltk.download(“PUNKT”) –

+0

什么茹呢? 找到了: f = open('myfile.txt','rU')#rU表示“读取”,并处理行结束 – ProfVersaggi

13

对于多个文件的结构化导入:

from nltk.corpus import PlaintextCorpusReader 

# RegEx or list of file names 
files = ".*\.txt" 

corpus0 = PlaintextCorpusReader("/path/", files) 
corpus = nltk.Text(corpus0.words()) 

看到:NLTK 3 book/1.9节

+0

我很高兴看到这一点,因为前面的方法(上面)没有工作为了我。唉,另一个错误信息。它不喜欢涉及PlaintextCorpusReader的行:UnicodeDecodeError:'utf8'编解码器无法解码位置50中的字节0xe8:无效的继续字节 –