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单元测试框架unittest简明使用实例
Apr 13 Python
python判断windows系统是32位还是64位的方法
May 11 Python
Python下的常用下载安装工具pip的安装方法
Nov 13 Python
python中requests小技巧
May 10 Python
Python 模拟购物车的实例讲解
Sep 11 Python
Python探索之自定义实现线程池
Oct 27 Python
numpy实现合并多维矩阵、list的扩展方法
May 08 Python
解决win64 Python下安装PIL出错问题(图解)
Sep 03 Python
python 使用poster模块进行http方式的文件传输到服务器的方法
Jan 15 Python
python集合常见运算案例解析
Oct 17 Python
利用4行Python代码监测每一行程序的运行时间和空间消耗
Apr 22 Python
Django实现简单的分页功能
Feb 22 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 增加了对 .ZIP 文件的读取功能
2006/10/09 PHP
PHP函数http_build_query使用详解
2014/08/20 PHP
javascript some()函数用法详解
2014/11/13 PHP
js常用排序实现代码
2010/12/28 Javascript
JQuery UI的拖拽功能实现方法小结
2012/03/14 Javascript
浅谈Javascript 执行顺序
2013/12/18 Javascript
PHP PDO操作总结
2014/11/17 Javascript
JS实现滑动菜单效果代码(包括Tab,选项卡,横向等效果)
2015/09/24 Javascript
vueJS简单的点击显示与隐藏的效果【实现代码】
2016/05/03 Javascript
原生js实现类似fullpage的单页/全屏滚动
2017/01/22 Javascript
利用node.js实现自动生成前端项目组件的方法详解
2017/07/12 Javascript
jQuery实现广告条滚动效果
2017/08/22 jQuery
Nodejs调用Dll模块的方法
2018/09/17 NodeJs
vue中使用vue-cli接入融云实现即时通信
2019/04/19 Javascript
使用p5.js临摹动态图片
2019/11/04 Javascript
Vue自定义组件双向绑定实现原理及方法详解
2020/09/03 Javascript
在Vue中使用Echarts实例图的方法实例
2020/10/10 Javascript
JavaScript实现下拉列表
2021/01/20 Javascript
Python  连接字符串(join %)
2008/09/06 Python
python使用PyFetion来发送短信的例子
2014/04/22 Python
Python入门篇之函数
2014/10/20 Python
python访问mysql数据库的实现方法(2则示例)
2016/01/06 Python
利用Python实现命令行版的火车票查看器
2016/08/05 Python
最近Python有点火? 给你7个学习它的理由!
2017/06/26 Python
Python 实现「食行生鲜」签到领积分功能
2018/09/26 Python
python使用 zip 同时迭代多个序列示例
2019/07/06 Python
Django 查询数据库并返回页面的例子
2019/08/12 Python
Python csv文件记录流程代码解析
2020/07/16 Python
PHP如何删除一个Cookie值
2012/11/15 面试题
JAVA程序员面试题
2012/10/03 面试题
美术指导助理求职信
2014/04/20 职场文书
服务之星事迹材料
2014/05/03 职场文书
同事离别感言
2015/08/04 职场文书
班主任培训研修日志
2015/11/13 职场文书
MySQL 分页查询的优化技巧
2021/05/12 MySQL
开机音效回归! Windows 11重新引入开机铃声
2021/11/21 数码科技