【语言学习】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]) # 排序