NLP实战之keras+LSTM进行京东评论情感分析python

情感分析

文本情感分析(Sentiment Analysis)是自然语言处理(NLP)中常见的也是很重要的一环,又称意见挖掘、倾向性分析等。它是对带有情感色彩的主观性文本进行分析、处理、归纳和推理的过程。它包括情感分类(情感倾向分析)、情感检索、情感抽取等。
我们今天只来练一练情感分类。所谓情感分类,指的是对文本进行褒义、贬义、中性的判断。在大多应用场景下,只分为两类。例如对于“好评”和“差评”这两个词,就属于不同的情感倾向。与文本分类不同的是,情感分类不基于内容本身,而是基于文本持有的情感态度。
那么基于机器学习或是深度学习的情感分类方法的主要流程包括:数据处理——提取文本情感特征——构建分类器分类。下面我们将详细介绍如何使用深度学习模型中的LSTM模型来实现文本的情感分类。不想看我啰嗦的之间点这里下载数据和全部代码哦!

预分析数据

我们用到的语料是京东评论数据集,这里是数据啦~ 提取码:iu43。
首先我们来看一看数据,好评和差评的数据分别存储在两个Excel里,样式如下图:
在这里插入图片描述

其中好评样本有10677条,差评有10428条,样本类别算均衡。我们接下来看看语句长度的分布情况:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import font_manager

# 设置matplotlib绘图时的字体
my_font = font_manager.FontProperties(fname="/Library/Fonts/Songti.ttc")

# 读取数据
neg=pd.read_excel('D:/S/Learn/NLP/Jingdong/neg.xls',header=None,index=None)
pos=pd.read_excel('D:/S/Learn/NLP/Jingdong/pos.xls',header=None,index=None)
df=np.concatenate((pos[0], neg[0]))

#%%句子长度分布直方图
Num_len=[len(text) for text in df]
bins_interval=10#区间长度
bins=range(min(Num_len),max(Num_len)+bins_interval-1,bins_interval)#分组
plt.xlim(min(Num_len), max(Num_len))
plt.title("Probability-distribution")
plt.xlabel('Interval')
#plt.ylabel('Probability')
# 频率分布normed=True,频次分布normed=False
#prob,left,rectangle = plt.hist(x=Num_len, bins=bins, normed=True, histtype='bar', color=['r'])#分布直方图
plt.ylabel('Cumulative distribution')
prob,left,rectangle = plt.hist(x=Num_len, bins=bins,normed=True,cumulative=True, histtype='step', color=['r'])#累计分布图
plt.show()

分别得到预料中句子长度的分布直方图和累计分布图:
在这里插入图片描述

在这里插入图片描述
因为LSTM接受的句子长度或者叫序列长度都是固定的,所以在后面数据处理中我们需要将句子裁剪出一样的长度,我们根据语料的累积分布情况求样本中90%概率的句子长度作为裁剪后句子的统一长度。

#%%求分位点
import math
def quantile_p(data, p):
    data.sort()
    pos = (len(data) + 1)*p
    #pos = 1 + (len(data)-1)*p
    pos_integer = int(math.modf(pos)[1])
    pos_decimal = pos - pos_integer
    Q = data[pos_integer - 1] + (data[pos_integer] - data
  • 14
    点赞
  • 118
    收藏
    觉得还不错? 一键收藏
  • 28
    评论
Python是一种高级编程语言,Keras是一个用于构建神经网络模型的深度学习库,CNN代表卷积神经网络,LSTM代表长短期记忆。Python的流行性使得它成为使用Keras库构建神经网络模型的理想选择。 卷积神经网络(CNN)是一种前馈神经网络,常用于计算机视觉任务。其核心思想是通过卷积运算来提取图像的特征。CNN在图像识别、物体检测和语义分割等任务中表现出色。 长短期记忆(LSTM)是一种适用于处理序列数据的循环神经网络(RNN)的特殊类型。与普通的RNN相比,LSTM能够更好地捕捉到长期依赖关系。LSTM通过控制记忆单元来处理序列中的信息,对于许多自然语言处理任务,如语言建模和机器翻译,LSTM是一个非常强大的工具。 在使用Keras库时,借助Python的灵活性和易用性,我们可以轻松地利用CNN和LSTM来构建复杂的深度学习模型。Keras库提供了丰富的高级API和多种预训练模型,可以帮助我们快速搭建和训练模型。 例如,我们可以使用Keras库中的layers模块来创建CNN模型的卷积层和池化层,然后使用LSTM层来处理时序数据。在构建模型时,我们可以选择性地添加Batch Normalization层或Dropout层来提高模型的泛化能力。 使用Keras库可以进行模型的编译、训练和评估等操作,还可以进行模型的保存和加载。同时,Keras库还提供了方便的可视化工具,如TensorBoard,可以帮助我们更好地理解和分析模型的结构和性能。 综上所述,PythonKeras、CNN和LSTM是一组强大的工具和技术,可以用于构建和训练复杂的深度学习模型,解决图像识别、自然语言处理和其他各种任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值