基于PaddleHub预训练模型Senta完成情感分析预测(傻瓜式推理版)

基于PaddleHub预训练模型Senta完成情感分析预测(傻瓜式推理版)

情感倾向分析(Sentiment Classification,简称Senta)针对带有主观描述的中文文本,可自动判断该文本的情感极性类别并给出相应的置信度,能够帮助企业理解用户消费习惯、分析热点话题和危机舆情监控,为企业提供有利的决策支持。

NOTE: 首先fork该项目示例。之后按照该示例操作即可。

senta_bilstm 模型链接:https://www.paddlepaddle.org.cn/hubdetail?name=senta_bilstm&en_category=SentimentAnalysis

环境:PaddlePaddle2.0.0rc PaddleHub2.0.0b1 senta_bilstm 1.2.0(最新版)

一、定义数据集

以”这家餐厅很好吃“,”这部电影真的很差劲“为例,展示如何如何使用Senta进行情感分析。

请在左边上传自己的数据文件(txt),数据格式:

这家餐厅很好吃
这部电影真的很差劲

二、更多模型选择

Senta开源了一系列,供用户选择:

  • BOW(Bag Of Words)模型,是一个非序列模型,使用基本的全连接结构;关于该模型更多介绍, 查看PaddleHub官网介绍
  • CNN(Convolutional Neural Networks),是一个基础的序列模型,能处理变长序列输入,提取局部区域之内的特征;关于该模型更多介绍, 查看PaddleHub官网介绍
  • GRU(Gated Recurrent Unit),序列模型,能够较好地解决序列文本中长距离依赖的问题;关于该模型更多介绍, 查看PaddleHub官网介绍
  • LSTM(Long Short Term Memory),序列模型,能够较好地解决序列文本中长距离依赖的问题;关于该模型更多介绍, 查看PaddleHub官网介绍
  • Bi-LSTM(Bidirectional Long Short Term Memory),序列模型,采用双向LSTM结构,更好地捕获句子中的语义特征;关于该模型更多介绍, 查看PaddleHub官网介绍

以Bi-LSTM为例,展示预测如何完成。

PaddleHub对于支持一键预测的module,可以调用module的相应预测API,完成预测功能。

大家按自己的需求选择需要的模型

如果想尝试其他模型,只需要更换Module中的name参数即可.

模型名PaddleHub Module
BOWhub.Module(name='senta_bow')
CNNhub.Module(name='senta_cnn')
GRUhub.Module(name='senta_gru')
LSTMhub.Module(name='senta_lstm')
Bi-LSTMhub.Module(name='senta_bistm')

在下方代码中这个位置修改需要的模型名称即可

三、使用教程

1.修改下列变量txtpath = "test.txt"为自己需要的文件名称,或者将自己上传的文件改为test.txt。

2.修改下列变量outtxtpath = output.xlsx’为自己想要输出的文件名称,或者是默认为output.txt。

3.在右上方点击【运行】----【全部运行】

4.运行完毕之后会生成自己设置的outtxtpath文件,点击即可查看,本示例默认为output.xlsx。

四、修改并开始执行

!pip install paddlehub==2.0.0b1 -i https://pypi.tuna.tsinghua.edu.cn/simple
!pip install xlsxwriter -i https://pypi.tuna.tsinghua.edu.cn/simple
import os
import paddlehub as hub
import xlsxwriter
# 这个文件就是你的数据集文件,如果名字不一样只修改这里即可,数据集格式上方已经给出。
txtpath = "test.txt"

# 这里就是预测完输出的文件,就是把结果输出到哪里,文件名字自己随意修改。
outtxtpath = 'output.xlsx'

# 将数据集文件转换为list格式
with open(txtpath, 'r') as f:
    test_text = []
    for line in f:
        test_text.append(line.strip())
print(test_text)

# 加载预训练模型
senta = hub.Module(name="senta_bilstm")

# 将得到的数据list进行预测
input_dict = {"text": test_text}
results = senta.sentiment_classify(data=input_dict)

# 将输出结果写入文件
workbook = xlsxwriter.Workbook(outtxtpath) # 建立文件
worksheet = workbook.add_worksheet()
id = 0
for result in results:
    print(result['text'] + '\t' + result['sentiment_key'])
    worksheet.write(id,0,result['text'])
    worksheet.write(id,1,result['sentiment_key'])
    id+=1
workbook.close()
print('结果已经输入到' + outtxtpath + '文件')

点我进入项目

  • 8
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值