基于python的情感分析案例,python自然语言处理情感分析

  基于python的情感分析案例,python自然语言处理情感分析

  情感分析是文本分析的一种。通过一段文字描述,我们可以了解文字的情感色彩是积极的、消极的还是中性的。情感分析常见的使用场景是客户对产品和服务的评价和反馈。传统的人工审核不仅耗费大量人力,而且效率低(速度和准确率)。

  这里用Python对电影《ggdlm之魔童降世》的评论进行文本分析。这种分析方法也可以用于垃圾邮件过滤、新闻分类等场景。

  分析步骤:

  1.预处理文本数据。包括文本缺失值的重复值处理、分词、禁词去除和文本矢量化。

  2.描述性统计分析、字数统计、词云图生成。

  3.验证统计分析,并通过方差分析选择特征。

  4.统计建模,基于文本向量的文本分类。

  目录数据预处理缺失值处理重复值处理文本内容排序分词停用词处理词汇统计词汇频率统计备注词汇长度统计生成词云图像文本数据预处理缺失值处理

  1.检查缺少的值。

  #显示缺少的值data.isnull()。总和)

  2.填写缺失的值。

  # padding缺少值数据[city]。fillna(未知),in place=true)data . dropna)in place=true)data . is null)。总和)

  值处理重复数据对文本分析和建模没有帮助,直接删除。

  #重复记录data.drop _ duplicates的文本内容(inplace=true)。删除清洗语句中的表达式符号和特殊字符。通常对文本分析没有影响,删除。若要从文本中删除指定的字符,请使用常规匹配。

  清洁前:

  #清理文本内容,清除特殊符号,正则表达式导入repattern=r[!\#$% () ),-./:=?@[\\\]^_^{}~—!这是什么?…(()[]《》 " "(s))re _ obj=re . pile(pattern)plan a:def clear)text)3360 return re . sub)PP

  原因:方案A是由直接调用正则表达式的模块实现的。在方案B中,首先建立正则表达式的对象,使用该对象进行模式匹配。这两种实现都可以满足要求。b这个计划更好。因为方案A内部也做正则表达式匹配,所以安装时会频繁调用APP。因为data [comment]有很多记录。因为每条记录调用一次clear方法,所以经常会创建正则表达式对象,而B schema不常创建正则表达式对象,所以B schema运行效率更高。

  清洁后:

  分词是指将一个连续的文本分割成若干个语义合理的词序列。对于英文来说分词很简单,但是中文分词很难。然而,Python有一个强大的工具包。这里用街霸来实现分词。

  导入Jie ba #方案a:返回生成器def cut _ word(text):return Jie ba . cut(text)#方案b:返回列表defcut_word) text

  原因:

  发电机不占用空间。现在回到列表,如果有很多数据记录,保存这些列表会占用很多空间。此外,如果对禁用词进行后期处理,禁用词将被删除。你不需要过早的占用这些空间,因为你不需要为这些迟早会被删除的词预先分配空间。所以在这里选择生成器,必要的话重复扩展,不要马上释放扩展。

  删除大量句子中出现但在语义分析中无用的“了”、“目的”、“但是”、“不问”等词,可以减少存储空间和计算时间的消耗,所以直接删除。

  # Scheme A:使用A:setdefget _ stop word(:s=set)with open( d:)stop word . txt,并且输入code== utf-8 (ASF 33330)Scheme list def get _ stop word)使用3360s stopword.txt ,encoding= utf-8 (ASF:for line INF:s . append(line . line)3360 return[wordfordsifwordsifwordnotinstopword]stop word=get _ word(data[ comment ])

  原因:

  Set))比list))快,list))的检索需要遍历,其时间复杂度为o)) n,而set))的检索时间复杂度为o))1)。Set))是使用散列码映射的,因此相同的元素使用相同的散列码并映射到相同的位置。

  统计词频,统计出现频率最高的15个词。

  FroertoolsImportChainfromCollectionSimportCounter Li _ 2D=data[ comment ]。Tolist (#将二维列表转换为一维列表Li _ 1D=list(challenged))C=counter)Li _ 1D)Print)f)非重复词汇:{len(c)}) common=c.most_coomon

  程度可视化:

  转换到频率

  comment length statistics # num=[Len(Li)for Li in Li _ 2d]用于计算每个评论中的术语数

  评论词汇长度统计

  做评论里所有用户都用的词汇书,做直方图。

  n,bins,Patches=PLT.hist(num,bins=20,alpha=0.5)PLT . y scale( log )PLT . show))).

  worldcloudportwordcloudwc=word cloud(font _ path=r c:)Windows(fonts(stkaiti . TTF ,mask=

  没有后续…

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

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