赞
踩
踩过很多坑,查过很多相关资料,最终终于将中文转换成词向量。
在此,分享给正在刨坑的程序猿。
做法:
第一步:利用linux虚拟机将中文转换成词向量bin文件
使用命令在虚拟机中进行转词向量: 注意:必须cd到word2vec/w2v/trunk下面才能使用 ./word2vec nohup ./word2vec -train /usr/local/python3/word2vec/w2v/suopc/spchzsss.txt -output /usr/local/python3/word2vec/w2v/suopc/spchzsss.bin -cbow 0 -size 300 -window 5 -negative 0 -hs 1 -sample 1e-3 -threads 12 -binary 1 & (参数不懂的可自己去查哦)
threads 进程个数 binary 保存结果为2进制 cbow 0=skip-gream 1=cbow sample:采样阈值 运行完命令之后,得到词向量spchzsss.bin文件。
注意:中文词必须是linux格式,否则转换出来的每个词可能有问题,导致bin文件无法使用。
# -*- coding: utf-8 -*-
import gensim
from gensim.models import word2vec
model = gensim.models.KeyedVectors.load_word2vec_format('spchzsss.bin',binary=True)
model.save_word2vec_format('spchzsss.txt', binary=False)
print(model.shape)
import numpy as np
import tensorflow as tf
emb = []
vocab = []
with open('spchzking.txt','rb') as f:
print(f)
for line in f.readlines():
row=line.strip().split(' '.encode())
vocab.append(row[0])
emb.append(row[1:])
emb = np.array(emb,dtype="float32") #,dtype="float32"
print(emb)
ss = np.save("spchzking.npy",emb)
print('转换完毕')
#!/usr/bin/python3
#open file
f = open("spcbestnew.txt","w",encoding='utf8') #转换之后的文件
f2 = open("spcbest.txt","r",encoding='utf8') #要转换的文件
#bian li wenjian,bing xie ru xin wen jian
for line in f2.readlines():
line=line.strip('\n')
f.write(line+' ')
#close file
f.close()
f2.close()
import numpy as np
import tensorflow as tf
emb = []
vocab = []
with open('spchzkwordlists.txt','r',encoding='utf-8') as f: #如果转换成二进制格式,将r改成rb,split(' '.encode()),去掉encoding='utf-8'
print(f)
for line in f.readlines():
row=line.strip().split(' ') #.encode()
#print(row)
#vocab.append(row[0:])
#emb.append(row[1:])
#emb = np.array(emb) #,dtype="float32"
#print(emb)
ss = np.save("spchzkwordlists.npy",row)
print('转换完毕')
测试:
import numpy as np
#wordVectors = np.load('spchzking.npy')
#wordVectors = np.load('wordsList.npy')
wordVectors = np.load('spchzkwordlists.npy')
print(len(wordVectors))
print("加载完成")
import numpy as np
import gensim
wordsList = np.load('spchzkwordlists.npy')
print('Loaded the word list!') #加载了单词列表
wordsList = wordsList.tolist() #Originally loaded as numpy array
wordsList = [word for word in wordsList] #Encode words as UTF-8
wordVectors = np.load('spchzkvector.npy')
print(len(wordsList))
print(wordVectors.shape)
最终的运行结果如下:
注:此博文是8月份研究的,现在才记录,难免会有一些遗忘,欢迎感兴趣的朋友一起交流。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。