我正在使用64位Python使用MemoryError
。这是我的功能:
def entr_langue(path,nom_langue):
mots_ts=[]
table_tr=dict((ord(char),None) for char in string.punctuation)#table de translation/mapping
with codecs.open(path,"r","utf-8") as filep:
for i,line in enumerate(filep):
#extraction par ligne
line=" ".join(line.split()[1:])
line=line.lower()
line=re.sub(r"\d+"," ",line) #suppression des digits
if len(line) !=0:
line=line.translate(table_tr)#suppression des poncts
mots_ts += line
mots_ts.append(" ")#ajout des espaces
ts_str=''.join(mots_ts)
ts_str=re.sub(' +',' ',ts_str) #remp des series d'espaces par un seul espace
seq_ts=[i for i in ts_str]
#daba extraction des Bigram et les trier selon la frequ
fn=BigramCollocationFinder.from_words(seq_ts)
fn.apply_freq_filter(6) #"li 3ndhom frequ 9el m 6 ytfiltraw
bigram_model=fn.ngram_fd.viewitems()
bigram_model=sorted(fn.ngram_fd.viewitems(), key=lambda item: item[1],reverse=True)
print (bigram_model)
np.save(nom_langue+".npy",bigram_model)
错误:
File "C:/Users/msi/Documents/projIA/extraction_bigram.py", line 23, in entr_langue
mots_ts += line
MemoryError
答案 0 :(得分:0)
如果您在python 32bit上没有该错误,那应该是错误的移植代码。 因为在python 64位上您可以在列表中包含更多元素,所以标准PC实际上无法实现完全填充这些庞大数据。但是,即使您甚至在32位操作系统上运行该列表,列表所包含的空间也无法超过4 GB的容量(或其他类似的设备,我不确定。)
有一个关于内存限制的类似主题: Memory errors and list limits?