欢迎光临散文网 会员登陆 & 注册

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

2021-03-10 21:40 作者:机器爱上学习  | 我要投稿

基础环境

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


代码

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

————————————————

版权声明:本文为CSDN博主「机器爱智能」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/jrckkyy/article/details/114597346


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

分享到微博请遵守国家法律