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词向量处理中文语料

word2vec介绍word2vec官网:https://code.google.com/p/word2vec/ word2vec是google的一个开源工具,能够根据输入的词的集合计算出词与词之间的...
  • churximi
  • churximi
  • 2016年05月21日 20:57
  • 23241

【python gensim使用】word2vec词向量处理英文语料

word2vec介绍word2vec官网:https://code.google.com/p/word2vec/ word2vec是google的一个开源工具,能够根据输入的词的集合计算出词与词之间的...
  • churximi
  • churximi
  • 2016年05月21日 20:36
  • 10392

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

Java调用NLPIC实现分词和标注工作,Python调用Word2Vec实现词向量相似度计算

Gensim Word2vec 使用教程

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

python︱gensim训练word2vec及相关函数与功能理解

一、gensim介绍gensim是一款强大的自然语言处理工具,里面包括N多常见模型: - 基本的语料处理工具 - LSI - LDA - HDP - DTM - DIM - ...

【python gensim使用】word2vec词向量处理英文语料

word2vec是google的一个开源工具,能够根据输入的词的集合计算出词与词之间的距离。它将term转换成向量形式,可以把对文本内容的处理简化为向量空间中的向量运算,计算出向量空间上的相似度,来表...
  • jdbc
  • jdbc
  • 2016年11月26日 19:05
  • 3412

gensim版word2vec的使用

1.引入模块 import gensim 2.准备语料 每个文本一个一个list,再组合成一个大的list,也可以是生成器,相关的词汇要先分词 sentences = [['第一','个', '文本'...

基于python的gensim word2vec训练词向量

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

word2vec 自己训练中文语料

(1) 准备文本 可以用爬虫爬,也可以去下载,必须是全文本。 (2)对数据进行分词处理 因为英文但此只见是空格所以不需要分词,二中文需要分词, 中文分词工具还是很多的,我自己常用的: ...

gensim中使用word2vec

训练语料由于自己在csdn的上传空间不够,暂时将语料放在百度云上 链接: https://pan.baidu.com/s/1qYKRXOo 密码: 4psr 文件名是 text8 或者在参考文章...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python 环境下gensim中的word2vec的使用笔记
举报原因:
原因补充:

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