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将xml和xsl转换为html的方法
Mar 10 Python
python读写二进制文件的方法
May 09 Python
安装Python的教程-Windows
Jul 22 Python
使用Python批量修改文件名的代码实例
Jan 24 Python
pyqt 实现为长内容添加滑轮 scrollArea
Jun 19 Python
python 处理微信对账单数据的实例代码
Jul 19 Python
Python基于BeautifulSoup和requests实现的爬虫功能示例
Aug 02 Python
基于python 等频分箱qcut问题的解决
Mar 03 Python
django模型类中,null=True,blank=True用法说明
Jul 09 Python
详解python tcp编程
Aug 24 Python
Python打包为exe详细教程
May 18 Python
Python内置包对JSON文件数据进行编码和解码
Apr 12 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 上一篇,下一篇文章实现代码与原理说明
2010/05/09 PHP
js代码实现微博导航栏
2015/07/30 PHP
详解PHP的Yii框架中组件行为的属性注入和方法注入
2016/03/18 PHP
基于php(Thinkphp)+jquery 实现ajax多选反选不选删除数据功能
2017/02/24 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
2019/12/18 PHP
PHP实现单例模式建立数据库连接的方法分析
2020/02/11 PHP
html下载本地
2006/06/19 Javascript
Cookie 注入是怎样产生的
2009/04/08 Javascript
广告切换效果(缓动切换)
2009/05/27 Javascript
js拆分字符串并将分割的数据放到数组中的方法
2015/05/06 Javascript
JS判断字符串字节数并截取长度的方法
2016/03/05 Javascript
jQuery插件开发汇总
2016/05/15 Javascript
浅谈jquery的map()和each()方法
2016/06/12 Javascript
纯js模仿windows系统日历
2017/02/04 Javascript
JS写XSS cookie stealer来窃取密码的步骤详解
2017/11/20 Javascript
vue中简单弹框dialog的实现方法
2018/02/26 Javascript
js经验分享 JavaScript反调试技巧
2018/03/10 Javascript
Express之托管静态文件的方法
2018/06/01 Javascript
vue刷新页面时去闪烁提升用户体验效果的实现方法
2018/12/10 Javascript
VUEX 数据持久化,刷新后重新获取的例子
2019/11/12 Javascript
Vue 中 filter 与 computed 的区别与用法解析
2019/11/21 Javascript
解决Vue-Router升级导致的Uncaught (in promise)问题
2020/08/07 Javascript
js实现简单的无缝轮播效果
2020/09/05 Javascript
Openlayers实现地图全屏显示
2020/09/28 Javascript
antd design table更改某行数据的样式操作
2020/10/31 Javascript
[01:37]PWL S2开团时刻DAY1&2——这符有毒
2020/11/20 DOTA
Python 多进程和数据传递的理解
2017/10/09 Python
Python用5行代码写一个自定义简单二维码
2018/10/21 Python
详解利用Python scipy.signal.filtfilt() 实现信号滤波
2019/06/05 Python
python3 打印输出字典中特定的某个key的方法示例
2019/07/06 Python
python高斯分布概率密度函数的使用详解
2019/07/10 Python
python自动化测试无法启动谷歌浏览器问题
2019/10/10 Python
Python turtle画图库&&画姓名实例
2020/01/19 Python
澳大利亚排名第一的在线酒类商店:MyBottleShop
2018/04/26 全球购物
优秀会计求职信
2014/07/04 职场文书
2014年团支部工作总结
2014/11/17 职场文书