Gensim

提供者:李华勇

地址:https://radimrehurek.com/gensim/

简介

Gensim是一个免费的Python库,它可以用来从文档中自动提取语义主题,并且尽可能地做到轻松(对人)高效(对电脑)。

Gensim致力于处理原始的、非结构化的数字文本(普通文本)。Gensim中用到的算法,如潜在语义分析(Latent Semantic Analysis,LSA)、隐含狄利克雷分配(Latent Dirichlet Allocation,LDA)或随机预测(Random Projections)等,是通过检查单词在训练语料库的同一文档中的统计共现模式来发现文档的语义结构。这些算法都是无监督算法,也就是无需人工输入——你仅需一个普通文本的语料库即可。

特点

内存占用低——任何时候都不会将整个语料库全部读入内存中,可以处理大规模、网络规模的语料库。

有效实现了几种流行的向量空间算法,包括Tf-idf、分布式增量潜在语义分析、分布式增量隐含狄利克雷分配或随机预测;增加新的模型也十分方便(没骗你!)。

预置了几种流行的数据格式的I/O封装器和转换器。

利用文档的语义代表计算其相似性。

整个gensim包围绕语料库(Corpus)、向量(Vector)、模型(Model)三个概念展开。

快速开始

安装

1
pip install --upgrade gensim

tfidf表示

1
2
3
4
5
6
7
8
9
10
In [34]: tfidf = models.TfidfModel(corpus) # step 1 -- initialize a model
In [37]: doc_bow = [(0, 1), (1, 1)]
In [38]: print(tfidf[doc_bow])
[(0, 0.7071067811865476), (1, 0.7071067811865476)]
In [39]: corpus_tfidf = tfidf[corpus]
In [40]: pprint(corpus_tfidf)
<gensim.interfaces.TransformedCorpus object at 0x0129FFD0>
In [41]: for doc in corpus_tfidf:
...: pprint(doc)
...:

lsi表示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
In [42]: lsi = models.LsiModel(corpus_tfidf, id2word=dictionary, num_topics=2) # initialize an LSI transformation
In [43]: corpus_lsi = lsi[corpus_tfidf] # create a double wrapper over the original corpus: bow->tfidf->fold-in-lsi
In [47]: lsi.print_topics(2)
Out[47]: [(0, '-0.703*"trees" + -0.538*"graph" + -0.402*"minors" + -0.187*"survey" + -0.061*"system" + -0.060*"time" + -0.060*"response" + -0.058*"user" + -0.049*"computer" + -0.035*"interface"'), (1, '-0.460*"system" + -0.373*"user" + -0.332*"eps" + -0.328*"interface" + -0.320*"time" + -0.320*"response" + -0.293*"computer" + -0.280*"human" + -0.171*"survey" + 0.161*"trees"')]
In [48]: for doc in corpus_lsi:
...: print(doc)
...:
[(0, -0.066007833960906648), (1, -0.5200703306361848)]
[(0, -0.19667592859142974), (1, -0.76095631677000308)]
[(0, -0.089926399724468281), (1, -0.72418606267525087)]
[(0, -0.075858476521785109), (1, -0.632055158600343)]
[(0, -0.10150299184980502), (1, -0.57373084830029464)]
[(0, -0.70321089393783032), (1, 0.16115180214026176)]
[(0, -0.87747876731198216), (1, 0.16758906864659895)]
[(0, -0.90986246868185694), (1, 0.14086553628719531)]
[(0, -0.61658253505692839), (1, -0.053929075663890019)]

相似度查询

1
2
In [49]: from gensim import similarities
In [50]: index = similarities.MatrixSimilarity(lsi[corpus]) # transform corpus to LSI space and index it

相关资料

  1. Khosrovian K, Pfahl D, Garousi V. GENSIM 2.0: a customizable process simulation model for software process evaluation[C]//International Conference on Software Process. Springer, Berlin, Heidelberg, 2008: 294-306.