关于gensim的Word2vec的相关函数

本文介绍如何使用gensim库进行word2vec模型训练,包括安装配置、语料准备及模型训练过程,并展示了相似词查询及词向量获取等功能。

准备工作

当我们下载了anaconda后,可以在命令窗口通过命令

conda install gensim
   
  • 1
  • 1

安装gensim

gensim介绍

gensim是一款强大的自然语言处理工具,里面包括N多常见模型,我们体验一下:

interfaces – Core gensim interfaces
utils – Various utility functions
matutils – Math utils
corpora.bleicorpus – Corpus in Blei’s LDA-C format
corpora.dictionary – Construct word<->id mappings
corpora.hashdictionary – Construct word<->id mappings
corpora.lowcorpus – Corpus in List-of-Words format
corpora.mmcorpus – Corpus in Matrix Market format
corpora.svmlightcorpus – Corpus in SVMlight format
corpora.wikicorpus – Corpus from a Wikipedia dump
corpora.textcorpus – Building corpora with dictionaries
corpora.ucicorpus – Corpus in UCI bag-of-words format
corpora.indexedcorpus – Random access to corpus documents
models.ldamodel – Latent Dirichlet Allocation
models.ldamulticore – parallelized Latent Dirichlet Allocation
models.ldamallet – Latent Dirichlet Allocation via Mallet
models.lsimodel – Latent Semantic Indexing
models.tfidfmodel – TF-IDF model
models.rpmodel – Random Projections
models.hdpmodel – Hierarchical Dirichlet Process
models.logentropy_model – LogEntropy model
models.lsi_dispatcher – Dispatcher for distributed LSI
models.lsi_worker – Worker for distributed LSI
models.lda_dispatcher – Dispatcher for distributed LDA
models.lda_worker – Worker for distributed LDA
models.word2vec – Deep learning with word2vec
models.doc2vec – Deep learning with paragraph2vec
models.dtmmodel – Dynamic Topic Models (DTM) and Dynamic Influence Models (DIM)
models.phrases – Phrase (collocation) detection
similarities.docsim – Document similarity queries
How It Works
simserver – Document similarity server
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

我们可以看到: 
- 基本的语料处理工具 
- LSI 
- LDA 
- HDP 
- DTM 
- DIM 
- TF-IDF 
- word2vec、paragraph2vec

以后用上其他模型的时候再介绍,今天我们来体验:

word2vec

#encoding=utf-8
from gensim.models import word2vec
sentences=word2vec.Text8Corpus(u'分词后的爽肤水评论.txt')
model=word2vec.Word2Vec(sentences, size=50)

y2=model.similarity(u"好", u"还行")
print(y2)

for i in model.most_similar(u"滋润"):
    print i[0],i[1]

   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

txt文件是已经分好词的5W条评论,训练模型只需一句话:

model=word2vec.Word2Vec(sentences,min_count=5,size=50)
   
  • 1
  • 1

第一个参数是训练语料,第二个参数是小于该数的单词会被剔除,默认值为5, 
第三个参数是神经网络的隐藏层单元数,默认为100

model.similarity(u"好", u"还行")#计算两个词之间的余弦距离

model.most_similar(u"滋润")#计算余弦距离最接近“滋润”的10个词
   
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

运行结果:

0.642981583608
保湿 0.995047152042
温和 0.985100984573
高 0.978088200092
舒服 0.969187200069
补水 0.967649161816
清爽 0.960570812225
水水 0.958645284176
一般 0.928643763065
一款 0.911774456501
真的 0.90943980217

   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

效果不错吧,虽然只有5W条评论的语料

当然还可以存储和加载咱们辛辛苦苦训练好的模型:

model.save('/model/word2vec_model')

new_model=gensim.models.Word2Vec.load('/model/word2vec_model')
   
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

也可以获取每个词的词向量

model['computer'] 
   
  • 1
  • 1

训练词向量时传入的两个参数也对训练效果有很大影响,需要根据语料来决定参数的选择,好的词向量对NLP的分类、聚类、相似度判别等任务有重要意义哦!

Gensim 的 `Word2Vec` 模型是用于生成词向量的流行工具之一,它基于神经网络方法,通过训练大规模语料库来学习词的分布式表示。该模型支持多种方法和函数,可以用于训练、保存、加载、查询和更新词向量。 ### 训练相关方法 - `Word2Vec(sentences=None, corpus_file=None, **kwargs)` 是构造模型的主要方法。可以传入分词后的句子列表 `sentences` 或者直接读取文本语料文件 `corpus_file`。训练参数包括 `size`(向量维度)、`window`(上下文窗口大小)、`min_count`(忽略频率低于该值的词)、`workers`(并行训练线程数)等[^1]。 - `build_vocab(sentences=None, corpus_file=None, progress_per=10000, keep_raw_vocab=False)` 用于构建词汇表。可以在训练前单独调用,也可以在训练时自动构建。此方法允许用户控制词汇表的构建过程,例如设置忽略低频词的阈值。 - `train(sentences=None, corpus_file=None, total_examples=None, total_words=None, epochs=None, start_alpha=None, end_alpha=None)` 是训练模型的核心方法。需要指定训练语料、总句子数、总词数、训练轮数(`epochs`)以及学习率范围。该方法支持继续训练已有模型,从而提升模型效果。 ### 查询与操作词向量 - `wv` 属性提供了对词向量的访问接口。例如: - `wv['computer']` 可以获取词 "computer" 的向量表示。 - `wv.most_similar(positive=['woman', 'king'], negative=['man'])` 可以进行类比推理,返回最相似的词,例如“queen”。 - `wv.similarity('woman', 'man')` 返回两个词之间的余弦相似度。 - `wv.doesnt_match(['breakfast', 'cereal', 'dinner', 'lunch'])` 返回与列表中其他词最不匹配的词。 - `wv.most_similar_cosmul()` 提供另一种基于乘法相似度的类比推理方法。 - `wv.save_word2vec_format(fname, fvocab=None, binary=False)` 可以将词向量保存为 word2vec 原始 C 工具使用的格式,支持文本和二进制格式。 ### 模型保存与加载 - `save(fname)` 方法可以将整个模型保存到磁盘,包括模型结构、词汇表、词向量等信息。 - `load(fname)` 可以从磁盘加载已保存的模型,支持继续训练或直接使用。 ### 其他高级功能 - `delete_temporary_training_data(keep_doctags_vectors=True, keep_inference=True)` 可以删除训练过程中使用的临时数据,减少内存占用。通常在训练完成后调用,以节省内存空间。 - 支持在线学习,即通过 `train()` 方法多次训练新的数据,从而不断更新模型。 ### 示例代码 以下是一个简单的 `Word2Vec` 模型训练和使用示例: ```python from gensim.models import Word2Vec from gensim.test.utils import common_texts # 示例语料 # 训练模型 model = Word2Vec(sentences=common_texts, vector_size=100, window=5, min_count=1, workers=4) model.train(common_texts, total_examples=len(common_texts), epochs=10) # 查询词向量 vector = model.wv['computer'] # 获取词向量 print(vector) # 查找最相似的词 similar_words = model.wv.most_similar('computer') print(similar_words) # 保存模型 model.save("word2vec.model") # 加载模型 loaded_model = Word2Vec.load("word2vec.model") ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值