python snownlp情感分析,情感分析自然语言处理

  python snownlp情感分析,情感分析自然语言处理

  昨晚太晚了,代码还没运行,但刚好遇到PSO-LSTM的精度,无法恢复。很惨淡())。具体内容今天补充。

  文本分析一、情感分析介绍二、文本介绍与词汇分析三、数据集分析四、LSTM模型五、关键函数描述Plot _ model NP _ utils . to _ categorial model . summary)、特别是

  对人们对产品、服务、组织、个人、问题、事件、话题及其属性的看法、感受、情绪、评价和态度的计算研究。情感分析是自然语言处理(NLP)方法的常见应用,也是一项有趣的基础任务,尤其是以提取文本情感内容为目的的分类。它是对带有情感色彩的主观文本进行分析、加工、总结和推理的过程。

  本文介绍了情感分析中情感极性(倾向)的分析。情感分析就是用褒贬和中立来判断文本。在很多APP应用场景中,分为两类。比如“喜欢”和“讨厌”这两个词就有不同的情感倾向。

  本文详细介绍了文本数据的预处理方法,并利用深度学习模型中的LSTM模型实现了文本的情感分析。

  二。文字介绍和数据分析本项目以某电商网站的产品评论为数据(corpus.csv)。点击数据集进行下载。这个数据集中有4310条评论,文本情感可以分为两类。“表”和“李”,这个数据集的前几行如下。

  三。数据集的分析数据集中的情绪分布和数据集中的评论句长分布下面的代码是统计数据集中的情绪分布和评论句长分布。

  importpandas aspdimportmatplotlib . pyplotaspltfromtaplotlibimportfont _ managerpromitertoolsimportaccumulate # The font my _ font=font _ manager . font properties(fname= c:\ windows \ Df=PD . read _ CSV(data/data _ single . CSV))print)Df。分组依据))标签)是。apply(lambdax:len(x)) len _ df=df语句长度和频率统计PLT.bar(sent_length,Sent_freq) plt.title),“语句长度和频率统计图”,font properties=my _ font) PLT。XLAX font properties=my _ font (PLT。YLABEL)"语句长度频率",Properties=my _ font(PLT . show)PLT . close)#语句长度累积图CDFPLT.plot(sent_length,sent_pentage_list),分位数语句长度Quantile=0.91 print(list)sent _ pentage _ list 2)==Quantile:index=Length breakprint( \分位数维的语句长度% s:% d . %)))nindex()PLT . show))PLT创建行样式=虚线(PLT . VL

  句子长度和频率的统计图如下。

  语句长度的累积分布函数图如下:

  从上面的照片可以看出,很多样本的句子长度都集中在1到200之间。如果句长累计频率为0.91分,则长度约为183。

  四。LSTM模型实现的模型框架如下。

  代码如下:

  从韩国进口泡菜进口熊猫。utils从keras导入NP _ utils。utils。vis _ utils从keras导入plot _ model。模型从keras导入序列。预处理。序列从keras导入pad _ sequences。图层导入LSTM,密集,嵌入,退出sk学习。模型_选择从sk学习导入训练_测试_分割。指标导入准确度_分数#加载数据集#[评估]是特征,[标签]是标签定义加载标签及词汇表标签,词汇=列表(df[标签]。unique())、list(df[evaluation].唯一())#构造字符级别的特征string= 表示词汇中的单词:string=word词汇表=set(string)#字典列表word_dictionary={word:i 1 for i,word in enumerate(词汇)}用open(word_dict.pk , WB )作为f:pickle。dump(word _ dictionary,f)inverse _ word _ dictionary={ I 1:word for I,word in enumerate(词汇)} label_dictionary={label:i for i,label in enumerate(标签)} with open(label_dict.pk , WB )为f:pickle。dump(label _ dictionary,f)output _ dictionary={ I:labels for I,labels in enumerate词汇表大小vocab _ size=len(word _ dictionary。keys())#标签类别数量label _ size=len(标签_字典。keys())#序列填充,按输入_形状填充,长度不足的按0补充x=[[word _ dictionary[word]for word in sent]for sent in df[ evaluation ]]x=pad _ sequences(maxlen=input _ shape,sequences=x,padding=post ,value=0)y=[[label _ dictionary[sent]]for sent in df[ label ]] NP _ utils。收件人_类别用于将标签转化为形如(nb _样本,nb _类)的二值序列。假设数量类=10 .

  % E5 % A6 % 82% E5 % B0 % 86% 5B 1% 2C % 202% 2C % 203% 2C % E2 % 80% A6 % E2 % 80% A64 % 5D % E8 % BD % AC % E5 % 8C % 96% E6 % 88% 90% EF % BC % 9A % 20% 5B % 5B % 5B % 5B 0% 2C % 2C % 2C % 2C % 2C % 200% 2C % 200% 2C % 200% 2C % 2C % 2C % 200% 2C % 2C % 2C % 200% 2C % 2C % 200% 2C % 27% 29% 20% E7 % 89% 88% E6 % 9C % AC % E9 % 97% AE % E9 % A2 % 98% EF % BC % 9a来自% 20k时代。 utils。vis _ utils % 20导入% 20 plot _ model % 20% E7 % 9C % 9F % E6 % AD % A3 % E8 % E7 % A3 % E5 % 86% B3 % E6 % 96% B9 % E6 % A1 % 88% EF % BC % % 2f model _ lstm。png % 27% 2C show _ shapes % 3D true % 29% 20% 23% 20% E8 % BE % 93% E5 % 87% BA % E6 % A8 % A1 % E5 % 9E % 8B % E4 % BF % A1 % E6 % 81% AF % 20模型。汇总% 28% 29% 20退货% 20型号% 23% 20% E6 % A8 % A1 % E5 % 9E % 8B % E8 % AE % AD

  而且我改了之后还是报错了:Error: ImportError:(必须安装pydot (pip install pydot)并安装graphviz(参见https://graphviz . git lab . io/download/), plot _ model/model _ to _ dot才能工作。)

  以下是解决方案:

  (1) pip安装py dot _ ng (2) pip安装graphviz,这个建议不要直接pip安装,去官网下载,我下载了以下版本。

  解压后放入anaconda环境对应的site-package中,然后复制jqdmg的目录。(3)修改site-packages \ pydot _ ng _ init _中的代码。py,并添加:path=r d:\ app \ tech \ anaconda 3 \ envs \ NLP \ lib \ site-packages \ graphviz \ jqdmg //the

  NP _ utils。to _ categorical NP _ utils。to _ categorical用于将标注转换为形状(nb_samples,nb_classes)

  的二进制序列。

  假设num_classes=10。

  如[1,2,3,…4]变成:

  [[0, 1, 0, 0, 0, 0, 0, 0]

  [0, 0, 1, 0, 0, 0, 0, 0]

  [0, 0, 0, 1, 0, 0, 0, 0]

  ……

  [0, 0, 0, 0, 1, 0, 0, 0]]

  Model.summary()通过model.summary()输出模型各层的参数状态,如图:

  特别感谢本文引用农夫的三拳有点痛博客和错误解决参考链接。

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

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