用Python做舆情分析系统,python舆情分析系统设计与实现

  用Python做舆情分析系统,python舆情分析系统设计与实现

  1 #-*-编码:utf-8 -*-

  2

  3创建于20184年10月1日星期一12:13:11

  5 @作者:Luove6

  七

  8进口9进口熊猫作为pd10进口捷豹11来自gensim进口公司,型号12

  1 OS . chdir( d:\ analyze \ python MATLAB \ python \ book codes \ python data analysis and mining practice \ book supporting data,code \ chapter 15 \ demo \ code )14文件路径=./data/huizong.csv

  1 data=PD . read _ CSV(file path)16 data . head()17 data _ target=data[[ comment ]][data[ brand ]= beauty ]]18 # set(data[[ brand ])

  19 count _ 1=len(data _ target)# 55774

  20数据目标=pd。data frame(data _ target[ comment ]。unique ()) #重复数据删除后返回数组,需要dataframe。

  21 count _ 2=len(data _ target)# 53049

  22 same _ comment _ count=计数_ 1-计数_ 2 # 2725.5%

  23

  24inputfile1=./data/迪美_ JD _ process _ end _负面情绪结果. txt #莱莱的ROSTCM6软件,情绪倾向分析,负面,中性,正面,这里只研究负面和正面。

  2输入文件2=./txt /迪美_ JD _ process _ end _正面情绪结果. txt

  26

  27with open (input file1, r ,encoding= utf-8) asdata1: #对于有中文名字的文件的读取方法,重新编码为utf-828data1=pd.read _ csv (data1,header=none) #读入数据。

  29 with open (input file2, r ,encoding= utf-8 )as data 2:30 data 2=PD . Read _ CSV(data 2,header=none) #读入数据

  31数据1=pd。DataFrame(data1[0].str.replace(。*?\d?\ \ t , ))#用正则表达式修改数据,非贪婪模式:*?0个或更多非\n字符?1个或多个数字。

  32 data2=pd。DataFrame(data2[0].str.replace(。*?\d?\ \ t , ))33 #解霸分词

  3MyCut=lambda s:“”。join (jieba.cut (s)) #用户自定义的简单分词功能,分词结果用空格链接。

  3data1=data1 [0]。应用(我的切)#以“播”的形式分词加速。

  3data2=data2 [0]。应用(我的剪切)37 #转到停止字

  38 stopfilepath=./data/stoplist.txt

  3stop=pd.read _ csv (stop file path,encoding= UTF-8 ,header=none,sep= TIPDM) #这里sep分隔符可以是任意停用词字符,这里选择的是比赛站的名称。

  40 #sep设置分词,因为csv默认半角逗号作为分词,而这个词恰好在非索引字表中,会导致阅读错误。

  41 #所以解决方法是手动设置一个不存在的拆分字,比如tipdm。

  4stop=[ , ] list (stop [0]) # pandas自动过滤空格字符,所以在这里手动添加。

  4 neg=PD . data frame(data 1 . copy())44 pos=PD . data frame(data 2 . copy())45 neg[1]=neg[0]。apply(lambda s:s . spl list())#定义一个分区函数,然后用apply广播。

  4NEG [2]=NEG [1]。APPLY(lambda x:[I for I in x if I not in stop])#逐字判断stop words是否为,思路同上。

  47位置[1]=位置[0]。apply(lambda s:s . split())48 pos[2]=pos[1]。apply(lambda x:[I for I in x if I not instop])49

  50

  51 #=============================================================================

  52 # LDA model=gensim . models . LDA model . LDA model(corpus=corpus,num_topics=3,id2word=dictionary,passes=20)

  53 #语料库:有必要。文集

  54 #num_topics:必须。LDA模型要求用户决定应该生成多少个主题。因为我们的文档集很小,所以我们只生成三个主题;

  55 #id2word:这是必需的。LdaModel类需要我们之前的字典将所有id映射成字符串;

  56 #通道:可选。模型遍历语料库的次数。迭代次数越多,模型越精确。但是对于一个非常大的语料库,遍历次数太多会花费很长时间。

  57 #为了得到一个好的结果,调整模型的主题数和遍历次数是非常重要的。

  58 #=============================================================================

  59 #负面主题分析

  6 neg _ dictionary=corporate . dictionary(neg[2])#建立字典

  6 neg _ corpus=[neg _ dict . doc 2 bow(I)for I in neg[2]]#建立一个语料库

  2 neg _ LDA=models . LDA model(neg _ corpus,num _ topics=3,id2word=neg _ dict) # LDA模型训练,一个主题模型,基于一组文档中的词频生成主题。

  63对于范围(3)中的I:# num _ topics=3

  64 print(neg _ LDA。print _ topic(I))#输出每个主题

  65

  66 #正面主题分析

  67 pos_dict=语料库字典(pos[2])68 pos _ corpus=[pos _ dict。doc 2 bow(I)for I in pos[2]]69 pos _ LDA=models .范围(3)中I的LdaModel(pos_corpus,num_topics=3,id2 word=pos _ dict)70:71 print(pos _ LDA)。print _ topic(I))#输出每个主题

  72打印(pos _ LDA。print _ topic(主题数=3,字数=3)

  历史中提交的图片或压缩文件

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

留言与评论(共有 条评论)
   
验证码: