Gensim:主题建模与文档相似度的Python神器
Gensim是个超好用的Python库,专门用来处理自然语言处理(NLP)中的一些高级任务。它最拿手的就是主题建模和计算文档相似度。不管你是想从一堆文本里挖掘主题,还是想找出相似的文档,Gensim都能帮你搞定。
1.
安装Gensim
安装Gensim超简单,打开命令行,输入下面这行代码就搞定了:
pip install gensim
要是你用的是Anaconda,也可以用conda安装:
conda install -c conda-forge gensim
2.
文档预处理
在用Gensim之前,咱们得先把文档处理一下。Gensim需要的是一个词列表,而不是原始文本。下面是个简单的例子:
from gensim import corpora# 假设我们有这么几个文档documents = [ “Python is a great programming language”, “I love coding in Python”, “Natural language processing is fascinating”, “Gensim is a powerful NLP library”]# 把文档变成词列表texts = [[word for word in document.lower().split()] for document in documents]# 创建词典dictionary = corpora.Dictionary(texts)# 把文档转成向量corpus = [dictionary.doc2bow(text) for text in texts]
温馨提示:在实际应用中,你可能还需要去掉停用词、做词形还原等操作,这样能提高模型的效果。
3.
主题建模
Gensim最常用的主题模型就是LDA(Latent Dirichlet Allocation)。来看看怎么用:
from gensim import models# 训练LDA模型lda_model = models.LdaMulticore(corpus=corpus, id2word=dictionary, num_topics=2)# 打印主题for idx, topic in lda_model.print_topics(-1): print(f“Topic: {idx}”) print(topic)
这段代码会训练一个LDA模型,并找出两个主题。每个主题都是一些词的组合,每个词都有一个权重。
4.
文档相似度
Gensim还能计算文档相似度,这在推荐系统、搜索引擎等场景下超有用。咱们用TF-IDF模型来演示:
from gensim import similarities# 创建TF-IDF模型tfidf = models.TfidfModel(corpus)# 把语料库转换成TF-IDF向量corpus_tfidf = tfidf[corpus]# 创建相似度索引index = similarities.SparseMatrixSimilarity(corpus_tfidf, num_features=len(dictionary))# 假设我们有一个新文档new_doc = “I enjoy programming in Python”new_vec = dictionary.doc2bow(new_doc.lower().split())# 计算新文档与语料库中所有文档的相似度sims = index[tfidf[new_vec]]# 打印结果for i, s in enumerate(sims): print(f“文档 {i} 的相似度:{s}”)
这段代码会计算新文档与原来语料库中每个文档的相似度。数值越大,说明越相似。
5.
Word2Vec:词向量的魔法
Gensim还提供了Word2Vec模型,这玩意儿能把词变成向量,超神奇:
这个模型学会了词与词之间的关系,你可以用它来找相似词、做词类比等操作。
温馨提示:Word2Vec需要大量的语料才能训练出好的结果。如果你的语料不多,可以考虑用预训练的词向量。
Gensim真是个宝藏库,它还有好多高级功能等着你去探索呢!比如说,你可以用它来做文本摘要、话题演变分析等等。慢慢学,别急,总有一天你会发现,原来自然语言处理这么有意思!
代码是死的,人是活的。多练习,多思考,你一定能成为NLP高手!加油!
领取专属 10元无门槛券
私享最新 技术干货