【发布时间】:2017-05-02 13:12:30
【问题描述】:
text = codecs.open("lith.txt", encoding= 'utf-8')
text = text.read().lower().replace('"','').replace('?','').replace(',','').replace('!','').replace('.','')
text = text.split()
words = sorted(list(set(text)))
Unigram = np.zeros([len(words)])
ind = range(len(words))
Lexicon = dict(zip(words,ind))
Bigram = np.zeros([len(words),len(words)])
我在这部分程序的最后一行中一直遇到重大问题。文本文件大约有 7,000,000 字长。目前,字数/长度约为200,000。当我将文本文件剪切到单词长度变为 40,000 左右时,程序就可以工作了。有没有办法绕过这个内存限制?谢谢你的帮助。如果我只是继续剪切部分文本直到内存错误消失,我在程序后面部分得到的结果似乎真的会受到影响。
for n in range(len(text)-1):
Unigram[Lexicon[text[n]]] = Unigram[Lexicon[text[n]]] + 1
Bigram[Lexicon[text[n]]][Lexicon[text[n+1]]] = Bigram[Lexicon[text[n]]][Lexicon[text[n+1]]] + 1
Unigram_sorted = np.argsort(Unigram)
Unigram_sorted = Unigram_sorted[::-1]
Unigram_sorted = Unigram_sorted[0:4999]
【问题讨论】: