zoukankan      html  css  js  c++  java
  • paddlehub(3)

    基于paddlehub的网民情绪识别-对话情绪识别

    对话情绪识别
    对话情绪识别(Emotion Detection,简称EmoTect),专注于识别智能对话场景中用户的情绪,针对智能对话场景中的用户文本,自动判断该文本的情绪类别并给出相应的置信度,情绪类型分为积极、消极、中性。
    适用场景:语音助手、智能音箱、智能客服、智能车载等,帮助企业更好地把握对话质量、改善产品的用户交互体验。
    ERNIE模型简介
    在大规模语料上预训练的自然语言表征模型(如BERT)可以从纯文本中捕获丰富的语义模式,并且能够通过微调以继续提升各种NLP任务的性能。然而,目前的预训练语言模型没有与知识图(KG)相结合,其可以为更好的语言理解提供丰富的结构化知识事实。我们认为,KG中的信息实体可以通过外部知识提升语言表示。本文中,我们利用大规模文本语料库和知识图训练了一个增强语言表征模型(ERNIE),其可以同时利用词汇、句法和知识信息。实验结果显示,ERNIE在不同的知识驱动任务取得了显著的改进,同时在其它常见任务上与现有的BERT模型具有可比性。源代码与实验详情可见:xinz
    评价指标
    分类模型的评价指标通常有 Accuracy、Precision、Recall 和 F1。

    • 准确率 Accuracy = 正确分类的样本数 / 总样本数。
    • 精确率 Precision = 预测为正类并且正确的样本数 / 预测为正类的样本数。
    • 召回率 Recall = 预测为正类并且正确的样本数 / 标注为正类的样本数。
    • 综合评价指标 F1:2(Precision + Recall) / (Precision*Recall),Precision 和 Recall 加权调和平均
      以上指标越高,则说明模型比较理想。
      以二分类问题为例,通常以关注的类为正类,其它类为负类,通常会有一份测试集,模型在测试集上预测的结果有4种情况。

    准确率 Accuracy 定义为:
    acc=(TP+FN+FP+TN—)/(TP+TN)

    精确率 Precision 定义为:
    P=TP/(FP+TP)

    召回率 Recall 定义为:
    R=TP/(FN+TP)

    综合评价指标 F1 定义为:
    F1=2(P∗R)/(P+R)

    在多分类情况下,则用宏平均和微平均的方法,宏平均是指先计算每一类的各项评估指标,然后再对指标求算术平均值;微平均是指先对混淆矩阵的元素进行平均,得到TP,FP,TN,FN的平均值,然后再计算各项评估指标。
    在本案例中,我们主要使用宏平均的计算方法。

    一 首先进行准备工作,声明路径变量、解压数据集和代码。

    View dataset directory. This directory will be recovered automatically after resetting environment.
    ls /home/aistudio/data
    View personal work directory. All changes under this directory will be kept even after reset. Please clean unnecessary files in time to speed up environment loading.
    !ls /home/aistudio/work
    If a persistence installation is required, you need to use the persistence path as the following:
    !mkdir /home/aistudio/external-libraries
    !pip install beautifulsoup4 -t /home/aistudio/external-libraries

    二 环境安装

    pip install paddlehub

    三 作品代码

    !import paddlehub as hub

    senta = hub.Module(name="senta_bilstm")
    test_text = ["这個PaddleHub很不賴", "小翔哥真正帥"]
    input_dict = {"text": test_text}
    results = senta.sentiment_classify(texts=test_text,data=input_dict, use_gpu=True, batch_size=1)

    for result in results:
    print(result['text'])
    print(result['sentiment_label'])
    print(result['sentiment_key'])
    print(result['positive_probs'])
    print(result['negative_probs'])

    四 运行结果

    这個PaddleHub很不賴
    0
    negative
    0.3874
    0.6126
    小翔哥真正帥
    2
    positive
    0.9666
    0.0334

    五 总结

    通过将一个月的学习,认识了很多新的知识,也浅浅的学习了python和liunx的一些基本语法,可能对我们后面学习python提供一点帮助,在下载软件时经常弄错,还是要去官网下载,很多官网都是英文的,同时我们也要提高英语水平。逐渐渗透了很多的知识,也意识到自己的不足。
    总的来说,难度还是挺大的,但是说要非常深刻的数学基础,并没有那么夸张,只要你想学,愿意花时间,都可以入门,自己要学的东西还很多,希望从NLP自然语言处理开始框架的选型挺重要的,对于Pytorch和Tensorflow2.0有一点点了解,但是PaddlePaddle是一个全新的框架,是陌生的,上手有点难度。
    PaddlePaddle客观来说,用的人还是比较少,所以导致网络上的教程以及解决问题的博客也是比较少的希望PaddlePaddle的教程能更简单化,易于查询一些,API能继续完善易读。

  • 相关阅读:
    你不知道的多重循环的事情
    【浅墨Unity3D Shader编程】之三 光之城堡篇:子着色器、通道与标签的写法 & 纹理混合
    ssh 远程登陆指定port
    GMT和CST的转换
    Swift新手教程系列5-函数+selector在swift中的使用方法
    Mac OS X 10.10, Eclipse+ADT真机调试代码时,Device Chooser中不显示真机的解决方式
    android studio 0.8.1使用和遇到问题解决
    C语言之函数调用17—递归法之中的一个般函数的调用(2)
    C语言之基本算法25—牛顿迭代法求方程近似根
    FineUI之使用SQL脚本从数据库表中生成对应的输入控件
  • 原文地址:https://www.cnblogs.com/hlchlc/p/13479643.html
Copyright © 2011-2022 走看看