首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Gensim,一个主题建模与文档相似度的Python库!

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高手!加油!

  • 发表于:
  • 原文链接https://page.om.qq.com/page/Ojv2YoTwGn79DPMjdY-643Mg0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券