最近在學習自己訓練詞向量,整理了13GB的小說語料,昨晚設置好從分詞做到詞向量訓練,結果今天早上看了一下內存溢出。僅僅只完成了130M的分詞,連詞向量的訓練都沒開始就宕機了。請問是我代碼有問題還是正常現象? 下圖為執行代碼 分詞工具使用的是北大的pkuseg如果是代碼問題請問如何應如何修改?

sentences = []

rules = u"[u4e00-u9fa5]+"

pattern = re.compile(rules)

f_writer = open("data/分詞後的1s1lCN13G.txt", "w", encoding="utf-8")

with open("data/1s1lCN13G.txt", "r" , encoding="utf-8") as f_reader:

for line in f_reader:

# line = line.replace("
","").replace("
","").strip()

if line == "" or line is None:

continue

line = " ".join(seg.cut(line))

seg_list = pattern.findall(line)

word_list = []

for word in seg_list:

if word not in stop_words:

word_list.append(word)

if len(word_list) &> 0:

sentences.append(word_list)

line = " ".join(word_list)

f_writer.write(line + "
")

f_writer.flush()

f_writer.close()

#模型訓練

model = word2vec.Word2Vec(sentences,sg=1,hs=1,window=10,min_count=20,iter=10,size=256,workers=16)

model.save("data/13G")


一次性讀入文件太傷了,用生成器讀一個batch或者用tensorflow或pytorch寫代碼,都好些。


可以使用生成器,一點一點的從文檔中拿出數據做訓練,就算你訓練文本再多,也OK的。


謝邀。

可以把向量長度調小一些,先跑通流程;然後再把參數調大,復現問題,進而再定位問題。

另外文本一次性讀入,也有點傷內存


這麼點數據,我建議你不要使用python這種訓練,Google最原始版本的c語言版本那個性能最高。


可以嘗試採用這種方式,看你ok不?

保存為二進位的


推薦閱讀:
相关文章