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中不同进制互相转换(二进制、八进制、十进制和十六进制)
Apr 05 Python
在Python中调用ggplot的三种方法
Apr 08 Python
Python脚本判断 Linux 是否运行在虚拟机上
Apr 25 Python
Python读取sqlite数据库文件的方法分析
Aug 07 Python
Python基于回溯法子集树模板解决m着色问题示例
Sep 07 Python
Python编程使用NLTK进行自然语言处理详解
Nov 16 Python
Python使用matplotlib绘制余弦的散点图示例
Mar 14 Python
PyQt5 对图片进行缩放的实例
Jun 18 Python
window7下的python2.7版本和python3.5版本的opencv-python安装过程
Oct 24 Python
Python实现病毒仿真器的方法示例(附demo)
Feb 19 Python
python模拟斗地主发牌
Apr 22 Python
python初步实现word2vec操作
Jun 09 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
模板引擎正则表达式调试小技巧
2011/07/20 PHP
url decode problem 解决方法
2011/12/26 PHP
基于php导出到Excel或CSV的详解(附utf8、gbk 编码转换)
2013/06/25 PHP
PHP开发框架Laravel数据库操作方法总结
2014/09/03 PHP
Laravel 4 初级教程之Pages、表单验证
2014/10/30 PHP
php通过rmdir删除目录的简单用法
2015/03/18 PHP
详解thinkphp实现excel数据的导入导出(附完整案例)
2016/12/29 PHP
客户端脚本中常常出现的一些问题和调试技巧
2007/01/09 Javascript
jquery form表单提交插件asp.net后台中文解码
2010/06/12 Javascript
Ext对基本类型的扩展 ext,extjs,format
2010/12/25 Javascript
解析JavaScript中的标签语句
2013/06/19 Javascript
js判断屏幕分辨率的代码
2013/07/16 Javascript
js对table的td进行相同内容合并示例详解
2013/12/27 Javascript
js实现按钮颜色渐变动画效果
2015/08/20 Javascript
jquery实现点击其他区域时隐藏下拉div和遮罩层的方法
2015/12/23 Javascript
关于JS Lodop打印插件打印Bootstrap样式错乱问题的解决方案
2016/12/23 Javascript
详解Angularjs 如何自定义Img的ng-load 事件
2017/02/15 Javascript
vue 百度地图(vue-baidu-map)绘制方向箭头折线实例代码详解
2020/04/28 Javascript
Node.js API详解之 dgram模块用法实例分析
2020/06/05 Javascript
nuxt.js 在middleware(中间件)中实现路由鉴权操作
2020/11/06 Javascript
Python2随机数列生成器简单实例
2017/09/04 Python
python2.7无法使用pip的解决方法(安装easy_install)
2018/04/03 Python
详解Python 多线程 Timer定时器/延迟执行、Event事件
2019/06/27 Python
Django用户登录与注册系统的实现示例
2020/06/03 Python
python实现启动一个外部程序,并且不阻塞当前进程
2020/12/05 Python
python爬取代理ip的示例
2020/12/18 Python
python 下载文件的几种方法汇总
2021/01/06 Python
Python脚本调试工具安装过程
2021/01/11 Python
使用canvas绘制超炫时钟
2014/12/17 HTML / CSS
请解释virtual关键字的含义
2015/06/17 面试题
韩国商务邀请函
2014/01/14 职场文书
国贸专业求职信
2014/06/28 职场文书
优秀教师申报材料
2014/12/16 职场文书
2015年纪委工作总结
2015/05/13 职场文书
宇宙与人观后感
2015/06/05 职场文书
Python实现PIL图像处理库绘制国际象棋棋盘
2021/07/16 Python