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获得一个月有多少天的方法
Jun 04 Python
基于Python实现文件大小输出
Jan 11 Python
python中matplotlib的颜色及线条控制的示例
Mar 16 Python
Python获取二维矩阵每列最大值的方法
Apr 03 Python
解决Pycharm无法import自己安装的第三方module问题
May 18 Python
python引入不同文件夹下的自定义模块方法
Oct 27 Python
5分钟 Pipenv 上手指南
Dec 20 Python
python requests.post带head和body的实例
Jan 02 Python
Flask框架重定向,错误显示,Responses响应及Sessions会话操作示例
Aug 01 Python
tensorflow之读取jpg图像长和宽实例
Jun 18 Python
python的json包位置及用法总结
Jun 21 Python
Python使用内置函数setattr设置对象的属性值
Oct 16 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从数据库中获取数据用ajax传送到前台的方法
2018/08/20 PHP
判断控件是否已加载完成的代码
2010/02/24 Javascript
解析jQuery与其它js(Prototype)库兼容共存
2013/07/04 Javascript
javascript 寻找错误方法整理
2014/06/15 Javascript
Javascript遍历table中的元素示例代码
2014/07/08 Javascript
jquery仅用6行代码实现滑动门效果
2015/09/07 Javascript
javascript实现自动填写表单实例简析
2015/12/02 Javascript
微信小程序 获取设备信息 API实例详解
2016/10/02 Javascript
使用base64对图片的二进制进行编码并用ajax进行显示
2017/01/03 Javascript
原生js实现倒计时功能(多种格式调用)
2017/01/12 Javascript
js数据类型检测总结
2018/08/05 Javascript
nuxt.js中间件实现拦截权限判断的方法
2018/11/21 Javascript
详解Express笔记之动态渲染HTML(新手入坑)
2018/12/13 Javascript
JS实现数组去重,显示重复元素及个数的方法示例
2019/01/21 Javascript
详解在网页上通过JS实现文本的语音朗读
2019/03/28 Javascript
详解关于webpack多入口热加载很慢的原因
2019/04/24 Javascript
Vue2.0 实现页面缓存和不缓存的方式
2019/11/12 Javascript
React生命周期原理与用法踩坑笔记
2020/04/28 Javascript
谈谈node.js中的模块系统
2020/09/01 Javascript
vue全局使用axios的操作
2020/09/08 Javascript
[01:08:32]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第二场 1月18日
2021/03/11 DOTA
在Python中使用matplotlib模块绘制数据图的示例
2015/05/04 Python
Python查找函数f(x)=0根的解决方法
2015/05/07 Python
selenium+python 去除启动的黑色cmd窗口方法
2018/05/22 Python
解决pyecharts在jupyter notebook中使用报错问题
2020/04/23 Python
bluepy 一款python封装的BLE利器简单介绍
2019/06/25 Python
Python基于stuck实现scoket文件传输
2020/04/02 Python
教你如何一步一步用Canvas写一个贪吃蛇
2018/10/22 HTML / CSS
在C中是否有模拟继承等面向对象程序设计特性的好方法
2012/05/22 面试题
毕业生求职的求职信
2013/12/05 职场文书
《分一分》教学反思
2014/04/13 职场文书
北京天坛导游词
2015/02/12 职场文书
信用卡工资证明范本
2015/06/19 职场文书
个人业务学习心得体会
2016/01/25 职场文书
大学生暑期实践报告之企业经营管理
2019/08/08 职场文书
vue项目两种方式实现竖向表格的思路分析
2021/04/28 Vue.js