首先,我是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