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实现颜色rgb和hex相互转换的函数
Mar 19 Python
玩转python爬虫之cookie使用方法
Feb 17 Python
Selenium控制浏览器常见操作示例
Aug 13 Python
python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例
Feb 28 Python
python+adb+monkey实现Rom稳定性测试详解
Apr 23 Python
Python过滤掉numpy.array中非nan数据实例
Jun 08 Python
windows+vscode安装paddleOCR运行环境的步骤
Nov 11 Python
linux centos 7.x 安装 python3.x 替换 python2.x的过程解析
Dec 14 Python
python 使用xlsxwriter循环向excel中插入数据和图片的操作
Jan 01 Python
Python读取pdf表格写入excel的方法
Jan 22 Python
TensorFlow低版本代码自动升级为1.0版本
Feb 20 Python
python中如何对多变量连续赋值
Jun 03 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
超神学院:鹤熙已踏入神圣领域,实力不比凯莎弱
2020/03/02 国漫
PHP如何编写易读的代码
2007/07/10 PHP
微信公众号实现会员卡领取功能
2017/06/08 PHP
判断页面是关闭还是刷新的js代码
2007/01/28 Javascript
读jQuery之八 包装事件对象
2011/06/21 Javascript
Jquery工作常用实例 使用AJAX使网页进行异步更新
2011/07/26 Javascript
json数据的列循环示例
2013/09/06 Javascript
JS 仿腾讯发表微博的效果代码
2013/12/25 Javascript
JavaScript函数参数使用带参数名的方式赋值传入的方法
2015/03/19 Javascript
基于JavaScript实现Tab选项卡切换效果
2016/11/24 Javascript
jquery实现超简单的瀑布流布局【推荐】
2017/03/08 Javascript
详解ES6中的代理模式——Proxy
2018/01/08 Javascript
vue移动UI框架滑动加载数据的方法
2018/03/12 Javascript
详解Vue单元测试case写法
2018/05/24 Javascript
实例详解ztree在vue项目中使用并且带有搜索功能
2018/08/24 Javascript
在Create React App中使用CSS Modules的方法示例
2019/01/15 Javascript
JavaScript两种计时器的实例讲解
2019/01/31 Javascript
jQuery实现异步上传一个或多个文件
2020/08/17 jQuery
python使用Queue在多个子进程间交换数据的方法
2015/04/18 Python
Python中动态创建类实例的方法
2017/03/24 Python
用不到50行的Python代码构建最小的区块链
2017/11/16 Python
Python Requests库基本用法示例
2018/08/20 Python
Python编程快速上手——正则表达式查找功能案例分析
2020/02/28 Python
Python-jenkins 获取job构建信息方式
2020/05/12 Python
Python新手如何进行闭包时绑定变量操作
2020/05/29 Python
python 5个实用的技巧
2020/09/27 Python
Pandas的数据过滤实现
2021/01/15 Python
StubHub新西兰:购买和出售你的门票
2019/04/22 全球购物
Linux管理员面试经常问道的相关命令
2013/04/29 面试题
简历自荐信
2013/12/02 职场文书
美德好少年主要事迹
2014/01/29 职场文书
诚信承诺书范文
2014/03/27 职场文书
大学生求职自荐信范文
2015/03/04 职场文书
学校运动会开幕词
2016/03/03 职场文书
MySQL数据库之存储过程 procedure
2022/06/16 MySQL
Win10系统搭建ftp文件服务器详细教程
2022/08/05 Servers