当前位置:   article > 正文

Word2Vec - gensim模块(2/3)_gesim模块的word2vec

gesim模块的word2vec

Word2Vec完成了从文字,句子到空间向量的映射,是计算相似度和检索常用的方法。在使用机器学习技术训练文本以前,常用来做Word Embedding。

上一篇中,给出了相似性计算的原理,本篇介绍在python环境下一个快速完成word2vec训练和使用的工具包。

Get started gensim

https://github.com/Samurais/word2vec_get_started
  • 1

训练

  • 构建词汇表
    dict

  • 将文件(doc collection)按行处理成向量
    corpus

corpus = []
corpus_memory_friendly = MyCorpus()
for vector in corpus_memory_friendly:
    corpus.append(vector)

corpora.MmCorpus.serialize('../data/deerwester.mm', corpus)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 使用 corpus 训练 transform
dictionary = corpora.Dictionary.load('../data/deerwester.dict')
corpus = corpora.MmCorpus('../data/deerwester.mm')
lsi = models.LsiModel(corpus, id2word=dictionary, num_topics=2)
  • 1
  • 2
  • 3

transfrom有很多种,比如 tf-idf, lsi, etc.

不同transform可以 chain起来。有的transform可以在初始化后,使用append的模式更新,有的则不能。

topic用来指代被分布到多维空间的doc。对于 lsi可以等可以指定多维,根据语料大小衡量。

  • 使用余弦距离计算相似度
doc = "Human computer interaction"
vec_bow = dictionary.doc2bow(doc.lower().split())
vec_lsi = lsi[vec_bow]

index = similarities.MatrixSimilarity(lsi[corpus])
sims = index[vec_lsi]

sims = sorted(enumerate(sims), key=lambda item: -item[1])
print(sims)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

参考

论文地址

Google官方实现(C版本)

Python开源实现

word2vec in TensorFlow

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/778336
推荐阅读
相关标签
  

闽ICP备14008679号