PaddleHub教程合集---(2)PaddleHub预训练模型Senta完成情感分析

PaddleHub教程合集—(2)PaddleHub预训练模型Senta完成情感分析

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

一、定义待预测数据

在aistudio运行直接以下语句; 如果在本地运行该项目示例,需要首先安装PaddleHub。

!pip install paddlehub==1.6.2 -i https://pypi.tuna.tsinghua.edu.cn/simple

项目具体代码

#若是待预测文本存放在一个文件中,test.txt。每一行是待预测句子。
#test.txt:
#这家餐厅很好吃
#这部电影真的很差劲

test_text = ["这家餐厅很好吃", "这部电影真的很差劲"]
#!cat test.txt #我的同系列上篇博文说过了,!cat执行打印

#用户想要利用Senta完成对该文件的情感分析预测;
#只需读入该文件---将文件内容存成list---list中每个元素是待预测句子。
with open("test.txt", 'r') as f:
    test_text = []
    for line in f:
        test_text.append(line.strip())
print(test_text)

数据准备完成,运行结果

[‘这家餐厅很好吃’, ‘这部电影真的很差劲’]

二、加载预训练模型+三、预测

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官网介绍

import paddlehub as hub
senta = hub.Module(name="senta_bilstm")
input_dict = {"text": test_text}
results = senta.sentiment_classify(data=input_dict)
for result in results:
    print(result)

运行结果

{‘text’: ‘这家餐厅很好吃’, ‘sentiment_label’: 1, ‘sentiment_key’: ‘positive’, ‘positive_probs’: 0.9407, ‘negative_probs’: 0.0593}
{‘text’: ‘这部电影真的很差劲’, ‘sentiment_label’: 0, ‘sentiment_key’: ‘negative’, ‘positive_probs’: 0.02, ‘negative_probs’: 0.98}

四、总结

Senta—情感倾向分析(Sentiment Classification)

  1. 导包paddlehub
  2. 调paddlehub . Module(name=“senta_bilstm”)
    换模型直接改name
模型名 PaddleHub Module
BOW hub.Module(name=‘ senta_bow’)
{‘text’: ‘这家餐厅很好吃’, ‘sentiment_label’: 1, ‘sentiment_key’: ‘positive’, ‘positive_probs’: 0.9782, ‘negative_probs’: 0.0218}
{‘text’: ‘这部电影真的很差劲’, ‘sentiment_label’: 0, ‘sentiment_key’: ‘negative’, ‘positive_probs’: 0.0124, ‘negative_probs’: 0.9876}
CNN hub.Module(name=‘ senta_cnn’)
{‘text’: ‘这家餐厅很好吃’, ‘sentiment_label’: 1, ‘sentiment_key’: ‘positive’, ‘positive_probs’: 0.7902, ‘negative_probs’: 0.2098}
{‘text’: ‘这部电影真的很差劲’, ‘sentiment_label’: 0, ‘sentiment_key’: ‘negative’, ‘positive_probs’: 0.0343, ‘negative_probs’: 0.9657}
GRU hub.Module(name=‘ senta_gru’)
{‘text’: ‘这家餐厅很好吃’, ‘sentiment_label’: 1, ‘sentiment_key’: ‘positive’, ‘positive_probs’: 0.9607, ‘negative_probs’: 0.0393}
{‘text’: ‘这部电影真的很差劲’, ‘sentiment_label’: 0, ‘sentiment_key’: ‘negative’, ‘positive_probs’: 0.0187, ‘negative_probs’: 0.9813}
LSTM hub.Module(name=‘ senta_lstm’)
{‘text’: ‘这家餐厅很好吃’, ‘sentiment_label’: 1, ‘sentiment_key’: ‘positive’, ‘positive_probs’: 0.9285, ‘negative_probs’: 0.0715}
{‘text’: ‘这部电影真的很差劲’, ‘sentiment_label’: 0, ‘sentiment_key’: ‘negative’, ‘positive_probs’: 0.0187, ‘negative_probs’: 0.9813}
  1. 将列表换成字典格式input_dict = {“text”: test_text}
  2. 得结果results = senta.sentiment_classify(data=input_dict)
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-KWOK-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值