python gensim使用word2vec词向量处理中文语料的方法


Posted in Python onJuly 05, 2019

word2vec介绍

word2vec官网:https://code.google.com/p/word2vec/

  • word2vec是google的一个开源工具,能够根据输入的词的集合计算出词与词之间的距离。
  • 它将term转换成向量形式,可以把对文本内容的处理简化为向量空间中的向量运算,计算出向量空间上的相似度,来表示文本语义上的相似度。
  • word2vec计算的是余弦值,距离范围为0-1之间,值越大代表两个词关联度越高。
  • 词向量:用Distributed Representation表示词,通常也被称为“Word Representation”或“Word Embedding(嵌入)”。

简言之:词向量表示法让相关或者相似的词,在距离上更接近。

具体使用(处理中文)

收集语料

本文:亚马逊中文书评语料,12万+句子文本。
语料以纯文本形式存入txt文本。
注意:
理论上语料越大越好
理论上语料越大越好
理论上语料越大越好
重要的事情说三遍。
因为太小的语料跑出来的结果并没有太大意义。

分词

中文分词工具还是很多的,我自己常用的:
- 中科院NLPIR
- 哈工大LTP
- 结巴分词

注意:分词文本将作为word2vec的输入文件。

分词文本示例

python gensim使用word2vec词向量处理中文语料的方法

word2vec使用

python,利用gensim模块。

win7系统下在通常的python基础上gensim模块不太好安装,所以建议使用anaconda,具体参见: python开发之anaconda【以及win7下安装gensim】

直接上代码——
#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
功能:测试gensim使用,处理中文语料
时间:2016年5月21日 20:49:07
"""

from gensim.models import word2vec
import logging

# 主程序
logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)
sentences = word2vec.Text8Corpus(u"C:\\Users\\lenovo\\Desktop\\word2vec实验\\亚马逊中文书评语料.txt") # 加载语料
model = word2vec.Word2Vec(sentences, size=200) # 默认window=5

# 计算两个词的相似度/相关程度
y1 = model.similarity(u"不错", u"好")
print u"【不错】和【好】的相似度为:", y1
print "--------\n"

# 计算某个词的相关词列表
y2 = model.most_similar(u"书", topn=20) # 20个最相关的
print u"和【书】最相关的词有:\n"
for item in y2:
  print item[0], item[1]
print "--------\n"

# 寻找对应关系
print u"书-不错,质量-"
y3 = model.most_similar([u'质量', u'不错'], [u'书'], topn=3)
for item in y3:
  print item[0], item[1]
print "--------\n"

# 寻找不合群的词
y4 = model.doesnt_match(u"书 书籍 教材 很".split())
print u"不合群的词:", y4
print "--------\n"

# 保存模型,以便重用
model.save(u"书评.model")
# 对应的加载方式
# model_2 = word2vec.Word2Vec.load("text8.model")

# 以一种C语言可以解析的形式存储词向量
model.save_word2vec_format(u"书评.model.bin", binary=True)
# 对应的加载方式
# model_3 = word2vec.Word2Vec.load_word2vec_format("text8.model.bin", binary=True)

if __name__ == "__main__":
  pass

运行结果

【不错】和【好】的相似度为: 0.790186663972
--------

和【书】最相关的词有:

书籍 0.675163209438
书本 0.633386790752
确实 0.568059504032
教材 0.551493048668
正品 0.532882153988
没得说 0.529319941998
好 0.522468209267
据说 0.51004421711
图书 0.508755385876
挺 0.497194319963
新书 0.494331330061
很 0.490583062172
不错 0.476392805576
正版 0.460161447525
纸张 0.454929769039
可惜 0.450752496719
工具书 0.449723362923
的确 0.448629021645
商品 0.444284260273
纸质 0.443040698767
--------

书-不错,质量-
精美 0.507958948612
总的来说 0.496103972197
材质 0.493623793125
--------

不合群的词: 很

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
解决python中遇到字典里key值为None的情况,取不出来的问题
Oct 17 Python
python 随机打乱 图片和对应的标签方法
Dec 14 Python
Python提取支付宝和微信支付二维码的示例代码
Feb 15 Python
Python3.5面向对象编程图文与实例详解
Apr 24 Python
pytorch 预训练层的使用方法
Aug 20 Python
python使用docx模块读写docx文件的方法与docx模块常用方法详解
Feb 17 Python
django为Form生成的label标签添加class方式
May 20 Python
python多线程和多进程关系详解
Dec 14 Python
python使用matplotlib的savefig保存时图片保存不完整的问题
Jan 08 Python
python解决OpenCV在读取显示图片的时候闪退的问题
Feb 23 Python
Python爬虫数据的分类及json数据使用小结
Mar 29 Python
Python语言规范之Pylint的详细用法
Jun 24 Python
python开发之anaconda以及win7下安装gensim的方法
Jul 05 #Python
python使用opencv对图像mask处理的方法
Jul 05 #Python
Python代码太长换行的实现
Jul 05 #Python
Python PyCharm如何进行断点调试
Jul 05 #Python
python 使用matplotlib 实现从文件中读取x,y坐标的可视化方法
Jul 04 #Python
Python计算一个点到所有点的欧式距离实现方法
Jul 04 #Python
python绘制已知点的坐标的直线实例
Jul 04 #Python
You might like
MySQL 日期时间函数常用总结
2012/06/12 PHP
详解WordPress中用于合成数组的wp_parse_args()函数
2015/12/18 PHP
php微信高级接口群发 多客服
2016/06/23 PHP
PHP排序算法之堆排序(Heap Sort)实例详解
2018/04/21 PHP
Thinkphp极验滑动验证码实现步骤解析
2020/11/24 PHP
jQuery 相关控件的事件操作分解
2009/08/03 Javascript
Underscore.js 的模板功能介绍与应用
2012/12/24 Javascript
jQuery插件 selectToSelect使用方法
2013/10/02 Javascript
js操作label给label赋值及取label的值示例
2013/11/07 Javascript
jQuery 删除或是清空某个HTML元素示例
2014/08/04 Javascript
JavaScript通过setTimeout实时显示当前时间的方法
2015/04/16 Javascript
jQuery绑定事件on()与弹窗的简要概述
2016/04/27 Javascript
Extjs4.0 ComboBox如何实现三级联动
2016/05/11 Javascript
NodeJs安装npm包一直失败的解决方法
2017/04/28 NodeJs
ligerUI---ListBox(列表框可移动的实例)
2017/11/28 Javascript
JS实现对json对象排序并删除id相同项功能示例
2018/04/18 Javascript
JS操作字符串转数字的常见方法示例
2019/10/29 Javascript
浅谈vue生命周期共有几个阶段?分别是什么?
2020/08/07 Javascript
[05:01]3.19DOTA2发布会 我们都是刀塔人
2014/03/25 DOTA
深入学习Python中的装饰器使用
2016/06/20 Python
Python 调用Java实例详解
2017/06/02 Python
Python实现冒泡排序的简单应用示例
2017/12/11 Python
pandas表连接 索引上的合并方法
2018/06/08 Python
Pycharm新手使用教程(图文详解)
2020/09/17 Python
html5理解head_动力节点Java学院整理
2017/07/13 HTML / CSS
AmazeUI 列表的实现示例
2020/08/17 HTML / CSS
Structs界面控制层技术
2013/10/11 面试题
应届毕业生通用的自荐书范文
2014/02/07 职场文书
竞聘书模板
2014/03/31 职场文书
六一亲子活动总结
2014/07/01 职场文书
2014年学校国庆主题活动方案
2014/09/16 职场文书
民主评议党员自我鉴定
2014/10/21 职场文书
村干部任职承诺书
2015/01/21 职场文书
升学宴家长致辞
2015/07/27 职场文书
2016抗战胜利71周年红领巾广播稿
2015/12/18 职场文书
《春酒》教学反思
2016/02/22 职场文书