python 环境下gensim中的word2vec的使用笔记

原创 2016年08月29日 16:57:44

centos 7, python2.7, gensim (0.13.1)

语料:

http://211.136.8.18/files/10940000015A9F94/mattmahoney.net/dc/text8.zip

程序:

# -*- coding: utf-8 -*-
'''
Created on 2016年8月29日
测试gensim使用
@author: root
'''

from gensim.models import word2vec
import logging
import numpy as np
# 主程序
logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)
sentences = word2vec.Text8Corpus(u"/media/sf_workspace/nlp-workspace/nltk-test/word2vec/data/text8")  # 加载语料
n_dim=200
model = word2vec.Word2Vec(sentences, size=n_dim)  # 训练skip-gram模型; 默认window=5
# n_dim = 300
# #Initialize model and build vocab
# imdb_w2v = Word2Vec(size=n_dim, min_count=1)
# imdb_w2v.build_vocab(sentences)

# #Train the model over train_reviews (this may take several minutes)
# imdb_w2v.train(sentences)
# obtain the word vectors as follows:
text=["hi","no"]
vec = np.zeros(n_dim).reshape((1, n_dim))
print type(vec)
count = 0.
for word in text:
    try:
        vec += model[word].reshape((1, n_dim))
        print vec
        count += 1.
    except KeyError:
        continue
if count != 0:
    vec /= count
print count
print vec


# 计算两个词的相似度/相关程度
y1 = model.similarity("woman", "man")
print u"woman和man的相似度为:", y1
print "--------\n"

# 计算某个词的相关词列表
y2 = model.most_similar("good", topn=20)  # 20个最相关的
print u"和good最相关的词有:\n"
for item in y2:
    print item[0], item[1]
print "--------\n"

# 寻找对应关系
print ' "boy" is to "father" as "girl" is to ...? \n'
y3 = model.most_similar(['girl', 'father'], ['boy'], topn=3)
for item in y3:
    print item[0], item[1]
print "--------\n"

more_examples = ["he his she", "big bigger bad", "going went being"]
for example in more_examples:
    a, b, x = example.split()
    predicted = model.most_similar([x, b], [a])[0][0]
    print "'%s' is to '%s' as '%s' is to '%s'" % (a, b, x, predicted)
print "--------\n"

# 寻找不合群的词
y4 = model.doesnt_match("breakfast cereal dinner lunch".split())
print u"不合群的词:", y4
print "--------\n"

# 保存模型,以便重用
model.save("text8.model")
# 对应的加载方式
# model_2 = word2vec.Word2Vec.load("text8.model")

# 以一种C语言可以解析的形式存储词向量
model.save_word2vec_format("text8.model.bin", binary=True)
# 对应的加载方式
# model_3 = word2vec.Word2Vec.load_word2vec_format("text8.model.bin", binary=True)

if __name__ == "__main__":
    pass

中文

语料格式示例:

一一
一一列举
一一对应 一丁点 一丁点儿 一万年
一丈红
一下
一下子
一不做
一不小心
一专多能
一世
一丘之貉
一业
一丛
一丝一毫
一丝不挂
一丝不苟
一个
一个劲
一个样
一中
一中一台
一中全会
一举
一举一动
一举两得
一举多得

# -*- coding: utf-8 -*-
'''
Created on 2016年8月29日
测试gensim使用,处理中文语料
@author: root
'''

from gensim.models import word2vec
import logging
import sys
reload(sys) #重新载入sys
sys.setdefaultencoding("utf8") #设置默认编码格式
# 主程序
logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)
sentences = word2vec.Text8Corpus(u"/media/sf_workspace/nlp-workspace/nltk-test/word2vec/data/test1.txt")  # 加载语料
model = word2vec.Word2Vec(sentences,min_count=1, size=200)  # 训练skip-gram模型

# 计算两个词的相似度/相关程度
y1 = model.similarity(u"淮南子", u"淮南子")
print  y1
print "--------\n"

# 计算某个词的相关词列表
y2 = model.most_similar(u"淮南子", topn=20)  # 20个最相关的
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

参考:

https://districtdatalabs.silvrback.com/modern-methods-for-sentiment-analysis

版权声明:本文为博主原创文章,未经博主允许不得转载。

Python与自然语言处理(二)基于Gensim的Word2Vec

Java调用NLPIC实现分词和标注工作,Python调用Word2Vec实现词向量相似度计算
  • monkey131499
  • monkey131499
  • 2016年04月12日 10:13
  • 8866

利用word2vec对关键词进行聚类

继上次提取关键词之后,项目组长又要求我对关键词进行聚类。说实话,我不太明白对关键词聚类跟新闻推荐有什么联系,不过他说什么我照做就是了。 按照一般的思路,可以用新闻ID向量来表示某个关键词,这就像广告推...
  • jj12345jj198999
  • jj12345jj198999
  • 2013年09月04日 17:07
  • 78222

深入word2vec(1) - 第一次训练

深入word2vec(1) - 第一次训练
  • jasonwayne
  • jasonwayne
  • 2016年01月13日 19:07
  • 3715

词语向量化-word2vec简介和使用

前言最初听闻word2vec还在读研了。当时挺感兴趣的,不过一直忙于毕业事项,没好好研究下,对word2vec也只是概念上的了解,直到这两天有空才能专门学习下这方面的知识。知识不经过整理很容易忘记,尤...
  • xsdxs
  • xsdxs
  • 2017年06月09日 02:39
  • 2257

Gensim Word2vec 使用教程

本文主要基于Radim Rehurek的Word2vec Tutorial.**准备输入**Gensim的word2vec的输入是句子的序列. 每个句子是一个单词列表代码块例如:>>> # impor...
  • Star_Bob
  • Star_Bob
  • 2015年08月20日 15:26
  • 28258

word2vec词向量训练及gensim的使用

一、什么是词向量 词向量最初是用one-hot represention表征的,也就是向量中每一个元素都关联着词库中的一个单词,指定词的向量表示为:其在向量中对应的元素设置为1,其他的元素设置为0。采...
  • zl_best
  • zl_best
  • 2016年12月02日 11:35
  • 10270

基于python的gensim word2vec训练词向量

准备工作当我们下载了anaconda后,可以在命令窗口通过命令conda install gensim安装gensimgensim介绍gensim是一款强大的自然语言处理工具,里面包括N多常见模型,我...
  • lk7688535
  • lk7688535
  • 2016年10月12日 17:18
  • 12409

基于 Gensim 的 Word2Vec 实践

Word2Vec 基于 Gensim 的 Word2Vec 实践,从属于笔者的程序猿的数据科学与机器学习实战手册,代码参考gensim.ipynb。推荐前置阅读Python语法速览与机器学习开发环境...
  • John_xyz
  • John_xyz
  • 2017年01月24日 12:09
  • 4102

gensim中使用word2vec

训练语料由于自己在csdn的上传空间不够,暂时将语料放在百度云上 链接: https://pan.baidu.com/s/1qYKRXOo 密码: 4psr 文件名是 text8 或者在参考文章...
  • a1368783069
  • a1368783069
  • 2016年07月25日 17:34
  • 6713

gensim 之 word2vec

gensim库三大功能: 可扩展的统计语义 分析语义结构的纯文本 检索语义上类似的文档 word2vec是gensim的一个子模块,可以用来实现上面三大功能word2vec的理解下面的两篇博客对wo...
  • m0_37681914
  • m0_37681914
  • 2017年06月28日 18:19
  • 703
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python 环境下gensim中的word2vec的使用笔记
举报原因:
原因补充:

(最多只允许输入30个字)