自然语言处理LDA入门实战(python代码)

el/2024/3/2 12:06:29

这是LDA的入门学习,由五个句子组成,训练的过程也较为简单。

代码的网页来源https://aiteam.blog.csdn.net/article/details/88392606

另外,在b站上找到一个视频教程,讲的很清楚,建议先看视频。网页来源https://www.bilibili.com/video/BV1rJ411g7Mz?p=171

LDA建模的步骤

1.预处理,将文档转为list to list形式,形成dictionary字典。即[[1word1,1word2,1word3],[2word1,2word2,2word3],[3word1,3word2,3word3]]的列表中有列表的格式。其中,大列表下每个小列表代表一个文档,每个文档又包含词。所以,要先进行去停用词、去标点符号、标准化、词干化等步骤。

2.形成词-文档矩阵DT/语料库,里面包含的是词和词频。也就是dictionary.doc2bow

3.使用gensim来LDA建模,需要dictionary、corpus语料库和topic数量k。

代码是自己修改过运行的,原代码没什么问题,只是在安装包时以及stopwords那里每个人的情况不同,我这里报错了,具体解决也都是百度来的。

#从nltk中import停用词
import nltk
#nltk.download()
from nltk.corpus import stopwords
from nltk.stem.wordnet import  WordNetLemmatizer
import string
import gensim
from gensim import models
#如果显示 'No module named gensim',那么打开prompt,输入pip install gensimdoc1='Sugar is bad to consume. My sister likes to have sugar, but not my father.'
doc2='My father spends a lot of time driving my sister around to dance practice.'
doc3='Doctors suggest that driving may cause increased stress and blood pressure.'
doc4='Sometimes I feel pressure to perform well at school, but my father never seems to drive my sister to do better.'
doc5='Health experts say that Sugar is not good for your lifestyle.'
#整合文档
doc_complete=[doc1,doc2,doc3,doc4,doc5]stop=set(stopwords.words('english'))
exclude=set(string.punctuation)#punctuation是标点符号,string.punctuation是所有的标点符号
lemma=WordNetLemmatizer()#词干def clean(doc):stop_free=' '.join ([i for i in doc.lower().split() if i not in stop])  #去除停用词,doc.lower是将所有字符小写,split()以空格为分隔符,包含 \npunc_free=''.join(ch for ch in stop_free if ch not in exclude)normalized=' '.join(lemma.lemmatize(word) for word in punc_free.split())#注意是有空格的' ',不是'',没有空格的化后面出现的不是单个单词,而是一串没有空格的整个句子字符。return normalizeddoc_clean=[clean(doc).split() for doc in doc_complete]from gensim import corpora
#创建语料的词语词典,每个单独的词都会被赋予一个索引
print(doc_clean)
#每个句子都被词干化,出现的结果是五个不同词构成的【】
dictionary=corpora.Dictionary(doc_clean)
print(dictionary)#使用上面的词典,将文档转换为文档列表(语料)变成DT矩阵
#dictionary.doc2bow输出:[(词ID,词频)..],对该文本进行词袋格式的转换,查找词典在文档出现的词和次数进行输出
doc_term_matrix=[dictionary.doc2bow(doc) for doc in doc_clean]#使用gensim来创建LDA模型对象
Lda=models.ldamodel.LdaModel#在DT矩阵上运行和训练LDA模型
ldamodel=Lda(doc_term_matrix,num_topics=3,id2word=dictionary,passes=50)#输出结果
print(ldamodel.print_topics(num_topics=3,num_words=3))


 


http://www.ngui.cc/el/4465980.html

相关文章

社会网络(基于python实现)-karate空手道

首先给出数据源,美国karate-club空手道成员俱乐部数据,网上找了好久才找到(好多都是放到CSDN上付费的额). Karate空手道俱乐部复杂网络是常用于复杂网络社区发现研究的网络,该网络共有 34个节点和78条边,其中34个节点表示某空手道俱乐部的 34 名成员&am…

《推荐系统实践》读书笔记-1.什么是推荐系统

如果有想要的东西,比如想买一瓶汽水,想看一部电影,那么就可以去便利店,去超市,去网上购买,这是很容易得到想要的东西的。 但没有明确的需求呢,打开淘宝不知道要买什么,刷抖音也没有特…

《推荐系统实践》读书笔记-2.推荐系统的应用

领域有很多,几乎每个领域都可以进行推荐。 1.电子商务 不得不说,电商确实是推荐系统应用的最广泛也最厉害的领域。比如说亚马逊,被称为‘推荐系统之王’。在学习的时候,从电商的推荐系统中学习方法是很好的,基本都是…

《推荐系统实践》读书笔记-3.推荐系统评测

越读下来越觉得这本书写的是真好,系统性把握的好,知识全面,又浅显易懂,如果我在刚入学就读了这本书,估计读论文时能真正吸收为自己知识的点也会多很多啊。 首先,推荐系统它一般存在三个参与方:…

安装xlearn包 (学习FM因子分解机)

在看文献的时候发现了LibFM工具,接着看到了xlearn,是一个比Libfm和Libffmm更好的机器学习算法库,高性能且易用。 由于安装步骤找的很麻烦,现在写下来方便有缘人^.^。 简单说共有三步: 1.安装Visual Studio 2017 2.安装…

改变anaconda prompt的根路径

解决问题: 想在anaconda prompt中打开另一个路径的文件 比如prompt路径默认是c盘,但我想打开d盘的内容。 方法就分为简单的三步啦 步骤: 1.输入"cd..",退回上一路径,直到路径为C:\> 2.输入"D:" 3.输入&qu…

解决ERROR:‘No module named ‘pyLDAvis.gensim‘

在LDA可视化时,需要 import pyLDAvis.gensim as gensimvis,但是我出现了错误:‘ModuleNotFoundError: No module named pyLDAvis.gensim 自己在百度几种方法后成功解决,写下来方便有缘人^.^ 网上的解决方法是[报错原因是版本不同…

导出anaconda的代码为pdf

在尝试将pycharm的代码导出为pdf无果时,选择了用anaconda。 方法写下来,方便有缘人^.^ 个人的做法比较简单粗暴,适合导出代码不是很多的: 使用打印的快捷键CtrlP 就会出现如下界面: 在网上看到的导出结果都是这样的…

吴恩达老师机器学习相关资源

写下来方便有缘人^.^ 网上搜集的,吴恩达老师的机器学习课程相关资源: (前两个是视频,后两个是作业代码) 1.官方coursera。Coursera | Online Courses & Credentials From Top Educators. Join for Free | Course…

软件设计面向用户准则

1.针对低端用户和高端用户如何在设计上权衡呢? 我认为有以下几点需要区分:a.从配置上讲不管低端用户还是高端用户,对配置的要求都是一致的,在一个地方配置不要分散在多个地方,并且要一次配置成功,且配置成功后一定要能使用。b.用户界面的功能…