Word2Vec实验浅尝

word2vec环境

这里我使用python中的包gensim,该包封装了word2vec及其优化。
实验环境为 Win10+python3.9+pycharm
这里的下载过程直接使用pip,打开cmd,进入pip所在的Scripts位置,输入

pip3 install gensim

由于默认下载网址是国外网址,这里建议将源地址改成清华镜像,具体方法见我之前的博客 Windows打开.ipynb文件
在这里插入图片描述

所用数据集

用来训练的数据集是从维基百科中爬取的中文词条,使用jieba进行分词,这里感谢最小森林大佬提供的数据集
该数据集是已经进行去分词和去停用词过后的数据集,可以直接用于训练word2vec
同时,我们也提供了基于MSR训练集的版本,该训练集是由SIGHAN Bakeoff 2005发布的四个中文数据集之一,包含3000+句子,下载地址为
http://sighan.cs.uchicago.edu/bakeoff2005/
对于该数据集我们需要先进行分词处理,再用于训练

针对维基百科爬取数据训练

from gensim.models import Word2Vec
from gensim.models.word2vec import LineSentence
# 训练模型
sentences = LineSentence('wiki.zh.word.txt')
# size:词向量的维度
# window:上下文环境的窗口大小
# min_count:忽略出现次数低于min_count的词
model = Word2Vec(sentences, size=128, window=5, min_count=5, workers=4)
# 保存模型
model.save('word_embedding_128')

该数据集的训练时间较长,我这里大概跑了1个多小时(普通办公本,笑)

针对MSR数据集训练

首先我们要对其进行分词,将分词结果进行保存

import jieba
text=[]
f=open("msr_test.txt",'r', encoding='GBK')
t=f.readline()
while t:
    text.append(t)
    t=f.readline()
f.close();
f=open('result2.txt',"w");
for word in text: #输出结果
    word=jieba.cut(word)
    f.write(" ".join(word))
f.close()

分词后结果如下

扬帆 远东 做 与 中国 合作 的 先行 
希腊 的 经济 结构 较 特殊 。 
海运业 雄踞 全球 之 首 , 按 吨位 计占 世界 总数 的 1 7 % 。 
另外 旅游 、 侨汇 也 是 经济 收入 的 重要 组成部分 , 制造业 规模 相对 较 小 。 
多年 来 , 中希 贸易 始终 处于 较 低 的 水平 , 希腊 几乎 没有 在 中国 投资 。 
十几年来 , 改革开放 的 中国 经济 高速 发展 , 远东 在 崛起 。 
瓦西里 斯 的 船只 中有 4 0 % 驶向 远东 , 每个 月 几乎 都 有 两三条 船 停靠 中国 港口 。 
他 感受 到 了 中国 经济 发展 的 大潮 。 
他 要 与 中国 人 合作 。 
他 来到 中国 , 成为 第一个 访华 的 大 船主 。 
访问 归来 , 他 对 中国 发展 充满信心 , 他 向 希腊 海运 部长 介绍 了 情况 , 提出 了 两国 在 海运 、 造船业 方面 合作 的 建议 。 
1 9 9 5 年 1 0 月 , 希腊 海运 部长 访华 时 , 他 根据 “ 船长 ” 的 建议 与 中方 探讨 了 在 海运 、 造船 方面 合作 的 可能 与 途径 。 
“ 船长 ” 本人 还 与 几个 船主 联合 起来 准备 与 我 远洋 公司 建立 合资企业 。 
“ 船长 ” 常说 , 要么 不干 , 干 就要 争 第一 。 
他 拥有 世界 最大 的 私人 集装箱船 队 , 也 要 做 与 中国 合作 的 先行 。

训练过程如下

from gensim.models import Word2Vec
from gensim.models.word2vec import LineSentence
# 训练模型
sentences = LineSentence('result2.txt')
# size:词向量的维度
# window:上下文环境的窗口大小
# min_count:忽略出现次数低于min_count的词
model = Word2Vec(sentences, size=100, window=5, min_count=3, workers=4)
# 保存模型
model.save('word_embedding_msr')

该数据集由于数据量较小,大概10s左右就能训练完成,所以我们在这里仅用作展示word2vec训练完成后的输出为何。

这里找‘中国‘对应的词向量,如下

[-0.343487   -0.64089763  0.04869369  0.30353695  0.69588625 -0.14519633
 -0.72343487  0.36691028 -0.4456488   0.19088745  0.08641527  0.13320787
  0.3254474  -0.410061   -0.16562903 -0.0349944   0.2895313   0.6492203
 -0.6339436  -0.330329   -0.3913359  -0.2970704   0.20166887  0.16386898
 -0.3957427  -0.05471497 -0.4112644  -0.23662147  0.03442516 -0.43710214
 -0.771916   -0.1959945  -0.2717788   0.08272666  0.4859701   0.49311143
  0.8147059   0.11530653  0.02399883  0.35907894 -0.5990176   0.03943931
  0.4130272   0.1654321   0.642082   -0.55487806  0.41838712 -0.0030092
 -0.15443897  0.34707847 -0.60119224  0.11023442  0.4595765  -0.15609838
 -0.50447994 -0.4849194  -0.31738335 -0.06616133 -0.16081819  0.21695867
 -0.9720431  -0.39655724  0.131794   -0.51368624  0.98723054  0.5436631
 -0.59230137 -0.79371446  0.61901087  0.8051073   0.19478592 -0.44383404
  0.868485   -0.35039797  0.52206135 -0.53102964 -0.34816676  0.5235386
  0.31923193  0.77775395  1.2184122  -0.35520673  0.12621686 -0.10448229
  1.1372876  -0.05676529 -0.23803782 -0.00363045 -0.46833056 -0.7078941
 -0.31415704  0.10456796 -0.15455903  0.46362948 -0.15287219 -0.69624406
 -0.04977696 -0.28300795  0.37679717 -0.5752296 ]

使用

# 如果已经保存过模型,则直接加载即可
# 前面训练并保存的代码都可以省略
model = Word2Vec.load("word_embedding_128")
# 使用模型
# 根据词义搜索词语
items = model.wv.most_similar(positive=['电脑'],topn=10)
for item in items:
    print(item[0], item[1])

# 返回两个词语之间的相似度
x=model.wv.similarity('咖啡','咖啡豆')
y=model.wv.similarity('咖啡','茶')
z=model.wv.similarity('咖啡','汽车')
print('咖啡和咖啡豆的相似度为',x)
print('咖啡与茶的相似度为',y)
print('咖啡和汽车的相似度为',z)

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值