【语言学习】python常用包 gensim - hippowc/hippowc.github.io GitHub Wiki

Gensim 概述

Gensim(generate similarity)是一个简单高效的自然语言处理Python库,用于抽取文档的语义主题(semantic topics)

内置算法

  • Word2Vec
  • Doc2Vec
  • FastText
  • TF-IDF
    • 一个词的权重由TF * IDF 表示
    • 一个词在某文本中出现的越多,在其他文本中出现的越少
  • LSI Latent Semantic Indexing(LSI)
    • 降维
  • LSA
    • 每篇文本中有多个概率分布不同的主题
  • LDA

核心概念

  • corpus 语料库
    • 一组纯文本的集合,模型训练的输入
  • vector space model -- VSM 向量空间模型
    • 由一组文本特征构成的列表。是一段文本在Gensim中的内部表达。在向量空间模型中,每个文档被表示成了一组特征
  • SparseVector 稀疏向量
    • 为了节约空间,在Gensim中省略了所有值为0.0的元素
  • model模型
    • Gensim中用model指代将一篇文档转换(transform)为另一种形式的模型代码以及相关参数

Gensim使用

语料库制作

  • 获取词袋
    • 可以通过一些分词工具对语料进行分词
# 为每个出现在语料库中的单词分配了一个独一无二的整数编号id。这个操作收集了单词计数及其他相关的统计信息
# 这里输入所有文档的分词结果
gensim.corpora.Dictionary(list) 
  • 向量转换
    • 对获取的词袋进行向量转换
# 简单地对每个不同单词的出现次数进行了计数,并将单词转换为其编号,然后以稀疏向量的形式返回结果
# 这里输入某个一文档的分词结果,输出文档的向量
dictionary.doc2bow(doc)
  • 生成语料库
corpus 就是 文档向量list

算法训练

假设要计算一个文档与当前文档的相似度

  • 先获取这个文档的文档向量
  • 使用语料库建模
# 使用TF-IDF建模
tfidf = gensim.models.TfidfModel(corpus)
tfidf_vectors = tfidf[doc_test_vec]  # 每个词的TF-IDF值
# 相似矩阵计算相似度
index = gensim.similarities.MatrixSimilarity(tfidf[doc_vectors])
# 获取分值索引
sim = index[tfidf[doc_test_vec]]   # 获取分值索引
# 相似度排序
scores=sorted(enumerate(sim), key=lambda item: -item[1])  # 排序