jieba是一个Python语言实现的中文分词组件,python用jieba对文本就行分词并统计词频

  jieba是一个Python语言实现的中文分词组件,python用jieba对文本就行分词并统计词频

  一、环境配置在运行分词之前,首先要确保Python已经安装正确。这里我安装的是python3.9,但是建议安装较低版本,比如python3.8,因为安装pip install时有些包不支持最新版本。

  其次,本文需要用到lda、jieba、numpy、wordcloud等各大软件包。如果发现pip安装有错误,可以在whl官方包上手动安装whl格式的包,使用Ctrl F在网页中快速找到对应的包,如果发现里面没有包,比如lda包,也有网站提供带python官方packagetar.gz后缀的压缩包。具体安装方式是百度,主要使用python setup.py install安装命令。

  二。街霸分词-数据预处理。这里用的是jieba分词,代码如下所示。相关数据和代码文件可以在数据文本中下载,重现时需要根据自己的文件名修改以下文件名。

  (3.31补充:有同学反映github有时候因为一些原因上不去。这是网盘的地址。一种是只有500本的短文本,可以快速复制,另一种是完整的30M长的文字——需要很长的运行时间。)文本-取款代码1111

  从骨导入路径#导入杰巴福姆用来获取文档的路径从太平航运导入图像导入数组作为公证人导入matplotlib.pyplot作为工厂编号词云生成工具从关键字云导入WordCloud,ImageColorGenerator#需要对中文进行处理将matplotlib.font_manager作为fm#导入背景图BG=NP。数组(图像。开(‘小子。png )#获取当前的项目文件加的路径d=path.dirname(__file__)#读取停用词表停字=[行。strip()for line in open( cn _ stop words。txt ,编码=UTF-8 ).readlines()] #读取要分析的文本text_path=answers.txt#读取要分析的文本,读取格式text=open(path.join(d,text_path),encoding=utf8 ).read()text _ split=jieba。剪切(文本)#未去掉停用词的分词结果目录类型#去掉停用词的分词结果目录类型text _ split _ no=[]for word in text _ split:如果word不在停用字词中:text _ split _ noappend(word)# print(text _ split _ no)fW=open( fencioutput。txt , w ,encoding=UTF-8)fW.write().join(text _ split _ no))fw。close()text _ split _ no _ str= .join(text_split_no) #list类型分为strwith open(fencioutput.txt , r ,encoding= UTF-8 )as r:lines=r . readlines()with open( fencioutput。txt , w ,encoding= UTF-8 )as w:for line in lines:if len(line)2:w . write(line)fW=open( fencioutput 1 .txt , w ,encoding=UTF-8)fW.write().join(text _ split _ no))fw。close()text _ split _ no _ str= .join(text_split_no) #list类型分为字符串#基于文档频率提取关键词打印(基于词频反提取关键词结果:)关键字=[]for x,w in anls。extract _ tags(text _ split _ no _ str,topK=200,weight=True):关键字。追加(x)#前200关键词组成的listkeywords=" " .加入(关键词)#转为strprint(关键字)打印(基于词频统计结果)txt=open(fencioutput1.txt , r ,编码=UTF-8 ).read()单词=jieba。cut(txt)counts={ } for word in words:if len(word)==1:continue else:rword=word counts[rword]=counts。get(rword,0)1 items=list(counts。items())项。对范围(33)中的I进行排序(key=lambda x:x[1],reverse=True):word,count=items[i] print((word),count)#生成WC=单词云(background _ color= white ,max_words=200,mask=bg,#设置词云形状,改为掩码=无;默认生成矩形图云max_font_size=60,scale=16,random_state=42,font_path=simhei.ttf #中文处理,用国标黑体字体,如果系统没有需将附件的字体文件放到代码目录下).生成(关键词)#为图片设置字体my_font=fm .字体属性(fname= sim hei。TTF。TTF )#产生背景图片,基于彩色图像的颜色生成器image _ colors=ImageColorGenerator(BG)#开始画图plt.imshow(wc,interpolation=双线性)#为云图去掉坐标轴plt.axis(off)#画云图,显示#plt.figure()plt.show()#为背景图去掉坐标轴plt.axis(off)plt.imshow(bg,cmap=plt.cm.gray)#plt.show()#保存云图wc.to_file(ciyun.png)print(词云图片已保存)这里是处理前和处理后的结果

  在代码实例中还加入了词云导出的功能,如下所示

  三、LDA主题提取基于第二步的街霸分词,可以得到分词后的文件,下面进行皱胃向左移主题提取。

  在皱胃向左移模型拟合步骤中,需要修改的参数主要是数字_主题和阿尔法,前者数字_主题即话题数量,通过不断地尝试得到一个合适的值,一般从10到100都可以取,后者一般取成话题数量的倒数,如10个数量,取成0.1,一般偏小较好。

  将数组作为公证人从根西姆导入语料库,modelsif __name__==__main__: #读入文本数据f=打开( fencioutput.txt ,编码=utf-8) #输入已经预处理后的文本texts=[[一字不差地排成一行。split()]for line in f]f . close()M=len(texts)print(文本数目:%d个% M) #建立词典字典=语料库dictionary(texts)V=len(dictionary)print(词的个数:%d个% V) #计算文本向量g语料库=【词典。文档2文本的bow(文本)中的正文]#每个文本对应的稀疏向量# 计算文档TF-IDF corpus_tfidf=models .TfidfModel(语料库)[语料库] # LDA模型拟合num_topics=10 #定义主题数lda=模特. LdaModel(corpus_tfidf,num_topics=num_topics,id2word=dictionary,alpha=0.01,eta=0.01,minimum_probability=0.001,update_every=1,chunksize=100,passes=1) #所有文档的主题doc _ Topic=[a for a in LDA[corpus _ tfi df]]print( Document-Topic:)print(doc _ Topic)#打印文档的主题分布编号_显示_主题=5 #每个文档显示前几个主题打印(文档的主题分布:)doc _ topics=LDA。get _ document _ topics(corpus _ tfi df)#所有文档的主题分布idx=np.arange(M) # M为文本个数,生成从0开始到M-1的文本数组对于索引文件中的我:topic=NP。array(doc _ topics[I])topic _ distribute=NP。array(topic[:1])topic _ idx=topic _ distribute。argsort()[:-num _ show _ topic-1:-1]#按照概率大小进行降序排列打印(第%d个文档的前%d个主题: % (i,num _ show _ topic))print(topic _ idx)print(topic _ distribute[topic _ idx])#每个主题的词分布num_show_term=15 #每个主题显示几个词对于范围(主题数)中的主题标识:打印(主题# % d:\ t % topic _ id term _ distribute _ all=LDA。get _ topic _ terms(主题id=主题id)#所有词的词分布term _ distribute=term _ distribute _ all[:编号_显示_期限] #只显示前几个词term _ distribute=NP。array(term _ distribute)term _ id=term _ distribute[:0].astype(np.int) print(词:,end= )for t in term _ id:print(dictionary。id 2标记[t],end= )打印(概率:,end=) print(term_distribute[:1]) #将主题-词写入一个文档topword.txt,每个主题显示20个词打开( ld异位。txt , w ,encoding= utf-8 )as tw:for topic _ id in range(num _ topics):term _ distribute _ all=LDA。get _ topic _ terms(主题id=topic _ id,topn=20)term _ distribute=NP。array(term _ distribute _ all)term _ id=term _ distribute[:0].术语标识中t的astype(NP。int):tw。写(字典。id 2令牌[t] )tw。写( \ n )可得结果如下:

  参考「LDA」主题模型』用计算机编程语言实现主题模型皱胃向左移

  用关键字云词云皱胃向左移主题模型,带你读一读《芳华》 (python实现)

  python对文本分词去停用词提取关键词并词云展示完整代码示例

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • python语言基本语句用法总结大全,python语言基本语句用法总结怎么写
  • python语言基本语句用法总结大全,python语言基本语句用法总结怎么写,python语言基本语句用法总结
  • python是一种什么类型的计算机语言,python语言是一种什么类型的编程语言
  • Python的保留字符,python语言中的保留字
  • python的指数e怎么表示,指数函数在python语言中怎么表示
  • python语言合法的变量命名,在python中变量的命名要注意哪些问题
  • python变量命名可以用中文吗,下面哪一个不是python语言合法的变量命名
  • Python分词库,用python语言中文分词第三方库jieba对文件data
  • python中复数类型的实部和虚部都是浮点数,python语言中,复数类型中实数部分和虚数部分
  • 用python语言判断一个数是否为素数,Python判断是不是素数
  • python语句变量命名规则,python语言命名变量规则
  • 简述python语言程序的特点,以下关于python语言技术特点
  • matlab中for循环的用法例子,python语言for循环语句
  • Python主网站,python语言的官方网站
  • 用python开发的软件有哪些,哪些工具可以使用python语言开发软件
  • 留言与评论(共有 条评论)
       
    验证码: