Gensim库使用笔记

Gensim介绍

Gensim是一个免费的 Python库

潜在语义分析: LSI,LSA,LDA

向量空间算法: Word2Vec,Doc2Vec,FastText,TF-IDF

安装

pip install –upgrade gensim

主要流程

语料库

1.分词

2.清洗

3.向量

4.保存语料库

转换模型

1.加载语料库

2.定义模型

3.转换

4.保存模型

相似性查询

1.加载语料库

2.加载模型

3.转换

4.查询

5.保存索引文档

语料库

# 提前准备的语料文本转换为向量

texts = [[]]

dictionary = corpora.Dictionary(texts)

# 保存到磁盘中

dictionary.save(‘/tmp/deerwester.dict’)

# 新的一段文本根据语料库转换为向量

new_doc = “Human computer interaction”

new_vec = dictionary.doc2bow(new_doc.lower().split())

# 将向量保存磁盘

corpora.MmCorpus.serialize(‘/tmp/deerwester.mm’, new_vec)

corpus = [dictionary.doc2bow(text) for text in texts]

语料库流

>>> class MyCorpus(object):

>>> def __iter__(self):

>>> for line in open(‘mycorpus.txt’):

>>> # assume there’s one document per line, tokens separated by whitespace

>>> yield dictionary.doc2bow(line.lower().split())

语料库格式

corpora.MmCorpus.serialize(‘/tmp/deerwester.mm’, new_vec)

corpora.SvmLightCorpus.serialize(‘/tmp/corpus.svmlight’, corpus)

corpora.BleiCorpus.serialize(‘/tmp/corpus.lda-c’, corpus)

corpora.LowCorpus.serialize(‘/tmp/corpus.low’, corpus)

加载语料库

corpus = corpora.MmCorpus(‘/tmp/corpus.mm’)

转换

dictionary = corpora.Dictionary.load(‘/tmp/deerwester.dict’)

corpus = corpora.MmCorpus(‘/tmp/deerwester.mm’)

doc_bow = [[]]

tfidf = models.TfidfModel(corpus)

print(tfidf[doc_bow])

lsi = models.LsiModel(corpus_tfidf, id2word=dictionary, num_topics=2)

corpus_lsi = lsi[corpus_tfidf]

# 保存模型文件

lsi.save(‘/tmp/model.lsi’)

# 加载模型文件

lsi = models.LsiModel.load(‘/tmp/model.lsi’)

可用的转换模型

# 术语频率*反向文档频率,Tf-Idf

model = models.TfidfModel(corpus, normalize=True)

# 潜在语义索引,LSI(或有时LSA)

model = models.LsiModel(tfidf_corpus, id2word=dictionary, num_topics=300)

# 随机投影,RP

model = models.RpModel(tfidf_corpus, num_topics=500)

# Latent Dirichlet Allocation,LDA

model = models.LdaModel(corpus, id2word=dictionary, num_topics=100)

# 分层Dirichlet过程,HDP

model = models.HdpModel(corpus, id2word=dictionary)

相似性查询

index = similarities.MatrixSimilarity(lsi[corpus])

index.save(‘/tmp/deerwester.index’)

# similarities.Similarity

# similarities.MatrixSimilarity

# similarities.SparseMatrixSimilarity

index = similarities.MatrixSimilarity.load(‘/tmp/deerwester.index’)

print(list(enumerate(index[vec_lsi])))


评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注