自己训练一个word2vec模型

1、使用《倚天屠龙记》文本词向量模型训练
首先从百度中下载小说《倚天屠龙记》的txt文本格式文件,将其放入py文件所在的文件夹下 。

首先我们先进行分词处理:

import jieba
fin=open('倚天屠龙记.txt','r',encoding='UTF-8')
fou=open('倚天屠龙记_分词.txt','w',encoding='UTF-8')
line =fin.readline()
while line:
    newline=jieba.cut(line,cut_all=False)
    str_out=' '.join(newline).replace(',','').replace('。','').replace('?','').replace('!','') \
            .replace('“', '').replace('”','').replace(':','').replace('‘','').replace('’','').replace('-','') \
            .replace('(', '').replace(')','').replace('《','').replace('》','').replace(';','').replace('.','') \
            .replace('、', '').replace('...','').replace(',','').replace('?','').replace('!','')
    print(str_out,file=fou)
    line=fin.readline()
fin.close()
fou.close()

运行以上代码,我们能够得到一个已经分好词的文本文档—倚天屠龙记_分词.txt。

可以看到分词效果还是不错的,下面我们调用gensim工具包训练词向量模型:

import gensim.models.word2vec as w2v
model_file_name = '倚天屠龙记_词向量模型.txt'

模型训练,生成词向量

sentences = w2v.LineSentence('倚天屠龙记_分词.txt')
model = w2v.Word2Vec(sentences, size=20, window=5, min_count=5, workers=4)
model.save(model_file_name)

由于我们采用的是pip进行下载库的,

在模型训练的过程中可能会出现如下所示的警告:
C extension not loaded for Word2Vec, training will be slow
解决方案如下,在Anaconda Prompt中输入下方代码即可。

conda install mingw libpython 
pip uninstall gensim 
conda install gensim
pip install scipy

模型训练完成后,

会产生一个训练好的模型文件—倚天屠龙记_词向量模型.txt
接下来,我们对模型进行测试:

model=w2v.Word2Vec.load(model_file_name)
#赵敏和赵敏的相似度为1
print(model.similarity('赵敏','赵敏'))
#赵敏和周芷若的相似度为0.946226
print(model.similarity('赵敏','周芷若'))
#以下代码用于输出与张三丰相似度最高的词
for i in model.most_similar('张三丰'):
    print(i[0],i[1])

输出结果如下:

'''
1.0
0.946226
张松溪 0.9943674802780151
谢逊叹 0.9936306476593018
俞莲舟 0.9919953942298889
黄衫女子 0.9910756349563599
宋青书 0.9897383451461792
缓缓的 0.9882280826568604
谢居士 0.9876694679260254
拱手 0.9874775409698486
陈友谅 0.9871797561645508
胡青牛 0.9854443073272705
'''

由于本人只采用了少部分的小说片段进行训练,可以测试的结果没有想象中的那么好,但整体情况还算不错,本文主要是为了演示Word2Vec词向量训练过程,如果要取得较好的效果,需要更大的语料库,如维基百科、微博、百度百科等等。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值