【人人都是深度学习师】10行代码实现一个基于深度学习迁移学习的正负面情感分析功能

基础环境

基础环境安装见:PaddleHub安装教程

代码

hub install senta_lstm==1.2.0

 

hub install senta_gru==1.2.0

 

hub install senta_cnn==1.2.0
hub install senta_bow==1.2.0
hub install senta_bilstm==1.2.0
hub install ernie_skep_sentiment_analysis==1.0.0
hub install emotion_detection_textcnn==1.2.0

 

senta_predict.py

import paddlehub as hub # 引入hub库
from typing import List
model_zoo_names = ["senta_lstm", "senta_gru", "senta_cnn", "senta_bow", "senta_bilstm", "ernie_skep_sentiment_analysis", "emotion_detection_textcnn"] # 以指定模型名字的方式调用不同的情感分析模型 https://www.paddlepaddle.org.cn/hublist?filter=en_category&value=SentimentAnalysis
predict_ret_dict_list = []
def senta_predict(name : str = "senta_lstm", test_text : List[str] = ["这家餐厅很好吃", "这部电影真的很差劲"]) -> List[dict]:
    senta = hub.Module(name=name)
    if name == "ernie_skep_sentiment_analysis":
        return senta.predict_sentiment(texts=test_text, use_gpu=False)
    elif name == "emotion_detection_textcnn":
        return senta.emotion_classify(texts=test_text)
    else:
        return senta.sentiment_classify(texts=test_text) # 返回字典数组 [{'text': '这家餐厅很好吃', 'sentiment_label': 1, 'sentiment_key': 'positive', 'positive_probs': 0.9407, 'negative_probs': 0.0593}]
text = "这家餐厅很好吃" # 想进行情感识别的文本内容 "这家餐厅很好吃", "这部电影真的很差劲"
for name in model_zoo_names:
    print(f"model name:{name} ", senta_predict(name, [text])[0])

运行结果:

综合7个模型的结果代码:

import numpy as np
positive_negative_probs_pair_list = [ (ret_dict["positive_probs"], ret_dict["negative_probs"]) for ret_dict in [(senta_predict(name, [text])[0]) for name in model_zoo_names]]
positive_probs_means = np.array([probs[0] for probs in positive_negative_probs_pair_list]).mean()
negative_probs_means = np.array([probs[1] for probs in positive_negative_probs_pair_list]).mean()
print(f"{text} 正面概率:{positive_probs_means} 负面概率:{negative_probs_means}")

执行结果:

这家餐厅很好吃 正面概率:0.8524851250239781 负面概率:0.06541486792457955

这里最终的结果有些问题,最后一个模型最终输出正负面的float值不是概率值,可能是没有做softmax,实际使用时需要相应处理下 。

分析

在调用这7个模型的地方 senta = hub.Module(name=name) 会自动下载相应的压缩包文件并解压,存放目录为:/root/.paddlehub/modules/ 大概一共有5GB多

执行过程截图

 

参考

https://www.paddlepaddle.org.cn/hublist?filter=en_category&value=SentimentAnalysis

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Zda天天爱打卡

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

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

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

打赏作者

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

抵扣说明:

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

余额充值