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 相关文章推荐
paramiko模块安装和使用(远程登录服务器)
Jan 27 Python
Python中的面向对象编程详解(上)
Apr 13 Python
python基于xmlrpc实现二进制文件传输的方法
Jun 02 Python
python调用Delphi写的Dll代码示例
Dec 05 Python
Python 实现在文件中的每一行添加一个逗号
Apr 29 Python
在python带权重的列表中随机取值的方法
Jan 23 Python
对python 判断数字是否小于0的方法详解
Jan 26 Python
python正则表达式匹配不包含某几个字符的字符串方法
Jul 23 Python
使用python求解二次规划的问题
Feb 29 Python
如何使用Python处理HDF格式数据及可视化问题
Jun 24 Python
Python 解析xml文件的示例
Sep 29 Python
详解win10下pytorch-gpu安装以及CUDA详细安装过程
Jan 28 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
在PHP里得到前天和昨天的日期的代码
2007/08/16 PHP
php+jQuery+Ajax简单实现页面异步刷新
2016/08/08 PHP
IE6下通过a标签点击切换图片的问题
2010/11/14 Javascript
关于eval 与new Function 到底该选哪个?
2013/04/17 Javascript
简单漂亮的js弹窗可自由拖拽且兼容大部分浏览器
2013/10/22 Javascript
全面理解面向对象的 JavaScript(来自ibm)
2013/11/10 Javascript
JS获取屏幕,浏览器窗口大小,网页高度宽度(实现代码)
2013/12/17 Javascript
js中直接声明一个对象的方法
2014/08/10 Javascript
javascript实现动态导入js与css等静态资源文件的方法
2015/07/25 Javascript
jQuery焦点图轮播特效代码分享(3款)
2015/09/05 Javascript
浅谈使用MVC模式进行JavaScript程序开发
2015/11/10 Javascript
js实现商品抛物线加入购物车特效
2020/11/18 Javascript
Js 获取当前函数参数对象的实现代码
2016/06/20 Javascript
详解Angular的内置过滤器和自定义过滤器【推荐】
2016/12/26 Javascript
JS表格组件神器bootstrap table使用指南详解
2017/04/12 Javascript
深入浅析Vue不同场景下组件间的数据交流
2017/08/15 Javascript
nodejs创建简易web服务器与文件读写的实例
2017/09/07 NodeJs
React Navigation 使用中遇到的问题小结
2018/05/08 Javascript
详解webpack运行Babel教程
2018/06/13 Javascript
基于layui框架响应式布局的一些使用详解
2019/09/16 Javascript
微信小程序 this.triggerEvent()的具体使用
2019/12/10 Javascript
[01:12]DOTA2 2015年秋季互动指南
2015/11/10 DOTA
Python中list列表的一些进阶使用方法介绍
2015/08/15 Python
解决tensorflow1.x版本加载saver.restore目录报错的问题
2018/07/26 Python
详解利用Python scipy.signal.filtfilt() 实现信号滤波
2019/06/05 Python
python GUI库图形界面开发之PyQt5打开保存对话框QFileDialog详细使用方法与实例
2020/02/27 Python
Python socket处理client连接过程解析
2020/03/18 Python
python如何保存文本文件
2020/06/07 Python
Python 多线程C段扫描、检测 Ping扫描脚本的实现
2020/09/03 Python
让IE可以变相支持CSS3选择器
2010/01/21 HTML / CSS
Html5大文件断点续传实现方法
2015/12/05 HTML / CSS
HTML5单页面手势滑屏切换原理分析
2017/07/10 HTML / CSS
Visual-Click葡萄牙:欧洲领先的在线眼镜商
2020/02/17 全球购物
中学教师实习自我鉴定
2013/09/28 职场文书
2015年人民调解工作总结
2015/05/18 职场文书
变长双向rnn的正确使用姿势教学
2021/05/31 Python