使用Gensim在专业领域高相关性小语料库上训练词向量

使用Gensim在专业领域、高相关性、小语料库上训练词向量

解决使用Gensim默认词向量训练参数得到的词向量过分集中的问题。

1 语料背景

采用热电厂《辅机运行规程》,其特点如下:

  • 语料规模:不到7000句

  • 语料特点:句法单一,相关性强,专业词语多
    比如:

    辅机冷却水系统投运
    闭式冷却水系统的投运
    主机手动盘车投运

2 语料预处理

采用用户自定义词典,使得分词结果符合要求。本例采用spaCy-pkuseg。由于训练窗口的限制,去掉分词数小于2的文本。

再用gensim的preprocess,清理掉符号、数字等。

3 训练词向量

3.1 gensim版本问题

经过测试,如高于3.7.1,会出现“c extension not loaded, training will be slow”警告,训练速度慢。故本例采用gensim3.7.1。

3.2 训练参数问题

gensim默认的参数:window=5, min_count=5, size=100, iter=5
由于本语料会有这么多短文本,而且语料规模小,首先改为:window=2, min_count=2, size=100, iter=5

其中window–滑动窗口大小;min_count–最小出现频次;size–词向量维度;iter–训练迭代次数

训练出来的词向量过于集中:

m.most_similar(‘高厂变’)

结果为:

[(‘生产’, 0.9991931915283203),
(‘误动’, 0.9991821646690369),
(‘相序’, 0.9991811513900757),
(‘至少’, 0.9991638660430908),
(‘切断’, 0.9991508722305298),
(‘熔断’, 0.9991501569747925),
(‘第二’, 0.9991487264633179),
(‘机构’, 0.9991455078125),
(‘执行’, 0.9991400241851807),
(‘然后’, 0.9991398453712463)]

由此可见,接近于1的相似度表明,模型应该是没有学到东西。

改动训练参数:包括window, min_count, size以及sg(0:CBOW 1:skip-gram),结果仍然没有什么变化。
提高iter=100,结果如下:

m.most_similar(‘高厂变’)

[(‘同一’, 0.7710763216018677),
(‘启备变’, 0.7308345437049866),
(‘低厂变’, 0.7288611531257629),
(‘主变’, 0.7078028321266174),
(‘油浸风冷变压器’, 0.687451183795929),
(‘油浸’, 0.6771216988563538),
(‘分裂’, 0.6610449552536011),
(‘b分’, 0.6084666848182678),
(‘风冷’, 0.5939120054244995),
(‘mva’, 0.5772408246994019)]

由此可见,模型确实学到了东西。

4 结论

对于在专业领域高相关性小语料库上训练词向量,训练迭代次数非常重要。提高训练迭代次数能够很好地解决词向量过于相似的问题。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值