前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >认识word2vec

认识word2vec

作者头像
用户2146693
发布2021-12-28 10:36:53
6230
发布2021-12-28 10:36:53
举报
文章被收录于专栏:架构师进阶架构师进阶

论文

Distributed Representations of Words and Phrases and their Compositionality

Natural Language Processing (almost) from Scratch

Efficient estimation of word representations in vector space

word2vec Parameter Learning Explained

API

models.word2vec – Word2vec embeddings

语料

搜狗实验室

Pre-trained word vectors of 30+ languages

中文维基分词语料:链接 https://pan.baidu.com/s/1qXKIPp6 密码 kade

腾讯AI Lab开源大规模高质量中文词向量数据,800万中文词随你用

实战

代码语言:javascript
复制
# 加载包
from gensim.models import Word2Vec
from gensim.models.word2vec import LineSentence

import logging
import itertools
import gensim
from gensim import utils
代码语言:javascript
复制
# 训练模型
sentences = LineSentence('wiki.zh.word-utf8.text')
# min_count指定了需要训练词语的最小出现次数,默认为5
# size指定了训练时词向量维度,默认为100
# worker指定了完成训练过程的线程数,默认为1不使用多线程。只有注意安装Cython的前提下该参数设置才有意义
#sg: 用于设置训练算法,默认为0,对应CBOW算法;sg=1则采用skip-gram算法。
model = Word2Vec(sentences, size=128, window=5, min_count=5, workers=4,sg = 1)
代码语言:javascript
复制
# 保存模型

#保存的文件不能利用文本编辑器查看但是保存了训练的全部信息,可以在读取后追加训练
model.save('wiki_zh_word_embedding_128_again.m')
#保存为word2vec文本格式但是保存时丢失了词汇树等部分信息,不能追加训练
model.wv.save_word2vec_format('wiki_zh_word_embedding_128_sg.m', binary=False)
代码语言:javascript
复制
# 加载模型
#model = Word2Vec.load("wiki_zh_word_embedding_128.m")
model=gensim.models.Word2Vec.load("wiki_zh_word_embedding_128_sg.m")
代码语言:javascript
复制
# 使用模型
items = model.wv.most_similar(u'中国')
print(len(items))
#model.wv.most_similar(u'男人',  u'女人')
for i, item in enumerate(items):
	print(i, item[0], item[1])
代码语言:javascript
复制
10
0 大陆 0.7746931314468384
1 我国 0.6922389268875122
2 经营报 0.6868888139724731
3 北京 0.6853708624839783
4 内地 0.6779896020889282
5 江苏网 0.6692827343940735
6 军网 0.6671650409698486
7 亚洲各国 0.6626995801925659
8 欧中 0.6616818904876709
9 东盟自由贸易区 0.6579015851020813
代码语言:javascript
复制
# 使用模型
# 使用模型
#items = model.wv.most_similar(u'男人',  u'女人')

items = model.wv.most_similar(positive=['国王', '男人'], negative=['王后'])
for i, item in enumerate(items):
	print(i, item[0], item[1])
代码语言:javascript
复制
0 女人 0.6733542680740356
1 胆小鬼 0.6426182985305786
2 家伙 0.6325250864028931
3 重色轻友 0.6242005228996277
4 事来 0.6211745142936707
5 很胖 0.6184269785881042
6 瘦瘦的 0.613095760345459
7 男孩 0.611844003200531
8 浑蛋 0.6114282608032227
9 少来 0.6114280819892883
代码语言:javascript
复制
from sklearn.decomposition import PCA
from matplotlib import pyplot
%matplotlib inline


X = model[model.wv.vocab]
pca = PCA(n_components=2)
result = pca.fit_transform(X)
# 可视化展示
pyplot.scatter(result[:, 0], result[:, 1])
words = list(model.wv.vocab)
for i, word in enumerate(words):
	pyplot.annotate(word, xy=(result[i, 0], result[i, 1]))
pyplot.show()
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 论文
  • API
  • 语料
  • 实战
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档