首先,我是python/nltk的新手,所以如果问题太简单,我很抱歉。我有一个我想要标记的大文件;我收到内存错误。使用Python NLTK标记大型(> 70MB)TXT文件。连接和写入数据以传输错误
我读过的一个解决方案是一次读取一行文件,这是有道理的,但是,这样做时,出现错误cannot concatenate 'str' and 'list' objects
。我不知道为什么会出现这个错误(看完文件后,我检查它的类型,实际上是一个字符串)
我试图将7MB文件分成4个小文件,我得到: error: failed to write data to stream
最后,努力的文件(100KB以下)的一个非常小的样本时,运行修改后的代码,我能够来标记文件
任何见解发生了什么。 ?谢谢。
# tokenizing large file one line at a time
import nltk
filename=open("X:\MyFile.txt","r").read()
type(raw) #str
tokens = ''
for line in filename
tokens+=nltk.word_tokenize(filename)
#cannot concatenate 'str' and 'list' objects
下面的作品与小档案:
import nltk
filename=open("X:\MyFile.txt","r").read()
type(raw)
tokens = nltk.word.tokenize(filename)
完美地工作!非常感谢你luke14free – 2012-03-24 17:34:28
但请注意,'word_tokenize'假设它一次只运行一个句子,所以这会给你一些标记错误。真的,你需要读取一个文件块,用'sent_tokenize'分割它,然后将它传递给'word_tokenize'。如果你需要一行一行地阅读,并且你的句子跨越了一条线,这是一种痛苦。所以你可能更喜欢现在只是住在不完善的地方...... – alexis 2012-03-28 16:06:01
是的,我的代码是基于相当强烈的假设,你无法在句子中找到\ n。 – luke14free 2012-03-28 19:15:27