百度AI──自然语言处理使用教程

2023-11-19

创建自己的应用

百度研发的预训练模型ERNIE在处理中文任务上自称超越了Bert模型,本次教程以文本的情感分类作为例子,首先在控制台找到nlp模块

在这里插入图片描述
然后创建自己的应用,个人申请的时候应该是不需要审核的,之后就可以看到自己应用下的三个参数:APPID APIKEY Secret Key这三个参数是用来鉴权(oauth2.0认证方式,感兴趣可以自行百度)的,在调用百度AI的接口时需要用到。

在这里插入图片描述

接口调用支持以下语言:

  • NLP-Java-SDK (Java)
  • NLP-PHP-SDK (PHH)
  • NLP-Cpp-SDK (C)
  • NLP-Node-SDK (nodejs)
  • NLP-Python-SDK (python)
  • NLP-C#-SDK (C#)

本人实验了python和Java两种方式,使用python比较方便,在数据预处理中可以使用其他的包,但是接口链接时的配置官方给出的不是很全面,而Java相反,可以配置很多调用接口的客户端的一些链接参数,但是数据预处理不方便。

python方式调用

安装Python SDK

pip install baidu-aip

创建一个 Python SDK客户端

from aip import AipNlp

""" 你的 APPID AK SK """
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key'

client = AipNlp(APP_ID, API_KEY, SECRET_KEY)

配置AipNlp

如果用户需要配置AipNlp的网络请求参数(一般不需要配置),可以在构造AipNlp之后调用接口设置参数,目前只支持以下参数:

接口 说明
setConnectionTimeoutInMillis 建立连接的超时时间(单位:毫秒)
setSocketTimeoutInMillis 通过打开的连接传输数据的超时时间(单位:毫秒)

调用接口

情感倾向分析

对包含主观观点信息的文本进行情感极性类别(积极、消极、中性)的判断,并给出相应的置信度。

text = "苹果是一家伟大的公司"

""" 调用情感倾向分析 """
client.sentimentClassify(text);

返回参数

{
    "text":"苹果是一家伟大的公司",
    "items":[
        {
            "sentiment":2,    //表示情感极性分类结果
            "confidence":0.40, //表示分类的置信度
            "positive_prob":0.73, //表示属于积极类别的概率
            "negative_prob":0.27  //表示属于消极类别的概率
        }
    ]
}
需要注意的几个点
  • 单次接口调用的并发量是2,会员是5,意思就是每秒钟只能调用2次。
  • 文本的编码方式必须是gbk格式,在传入之前可以自行编码
text = text.encode(encoding='gbk', errors='ignore').decode(encoding='gbk', errors='ignore')
  • 长文本无法处理,特定任务支持的最大长度不一样,可以参考API文档

其他接口nlp任务接口可自行查看客户端的源码或者是官方API文档点击查看

完整代码

pymysql 1.0.2 
baidu-Aip  2.2.18.0
# encoding=utf-8

from pymysql import connect,cursors
from aip import AipNlp
import math
import logging
import time

logger = logging.getLogger(__name__)
logger.setLevel(level=logging.INFO)
handler = logging.FileHandler("baiduAi.log")
handler.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)


class BaiduAi:
    def __init__(self,APP_ID,API_KEY,SECRET_KEY,host,username,pwd,db):
        # self.APP_ID = APP_ID
        # self.API_KEY = API_KEY
        # self.SECRET_KEY = SECRET_KEY
        self.client = AipNlp(APP_ID,API_KEY,SECRET_KEY)
        self.conn = connect(
            host=host,
            user=username,
            password=pwd,
            database=db,
            charset='utf8'
        )

    def get_document(self,page,size=20):
        cursor = self.conn.cursor(cursor=cursors.DictCursor)
        sql = "select * from tweet limit %s,%s" %((page-1)*size,size)
        cursor.execute(sql)
        res = cursor.fetchall()
        cursor.close()
        return res

    def get_count(self):
        cursor = self.conn.cursor()
        sql = "select count(*) from tweet"
        cursor.execute(sql)
        res = cursor.fetchmany(1)
        cursor.close()
        return res[0][0]

    def close(self):
        self.conn.close()

    def classify(self,sentence):
        # 修改编码格式
        sentence['text'] = sentence['text'].encode(encoding='gbk', errors='ignore') \
            .decode(encoding='gbk', errors='ignore')
        try:
            res = self.client.sentimentClassify(sentence['text'])
            if "items" in res:
                res = res['items'][0]
                cursor = self.conn.cursor()
                sql = "update tweet set positive=%s,negative=%s,sentiment=%s where id=%s"
                cursor.execute(sql, [res['positive_prob'], res['negative_prob'], res['sentiment'], sentence['id']])
                self.conn.commit()
                cursor.close()
            else:
                logger.warning("process text:{}\nencounter warning{},text_id = {}".format(sentence['text'],
                                                                                          res['error_msg'],sentence['id']))
        except Exception:
            logger.error("process text:{} \nencounter error,text_id = {}".format(sentence['text']),sentence['id'])


if __name__ == '__main__':
    baiduAi = BaiduAi()//在这里传入你自己的参数

    total = baiduAi.get_count()
    size = 20
    page = int(math.ceil(total*1.0/size))
    start = time.time()
    for i in range(86,page+1):
        logger.info("load data page = %s,size = 20"%i)
        sentences = baiduAi.get_document(i);
        for s in sentences:
            baiduAi.classify(s)
            time.sleep(1)
        logger.info("finish classify %s/%s"%(i*20,total))
    end = time.time()
    logger.info("Successfully classify all in %s"%(end-start))

参考

百度Ai官方文档

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

百度AI──自然语言处理使用教程 的相关文章

  • Fast-ReID 训练自己的数据集调优记录(一)

    Fast ReID前期准备 文章目录 Fast ReID前期准备 前言 一 Fast ReID 介绍 Fast ReID 特点 FastReID 架构 二 Fast ReID 复现 前言 FastReID 是一个 SOTA 级的 ReID
  • Linux开放普通用户使用winscp上传文件和禁止root用户登录

    鉴于使用root用户操作系统有诸多风险 也给网络黑客暴力破解服务器密码可乘之机 于是决定禁用root用户远程登录系统 可是禁用root用户登录系统也带来一个问题 那就是root用户登录不了WinScp 也就没办法上传文件了 这还了得 这会给
  • qt中加载qss样式不生效的问题

    前提是你能正确加载 而且 你试着将你的qss后缀改成css 发现能生效 但是后缀改成qss没有生效 这个原因就是字符编码的问题了 需要改成utf 8才行 使用notepade 来改是一种方式 参考博客 QT 避坑指南 QSS文件引入及解决自
  • Allegro使用总结-查看Layout基本操作:

    好久没用CSDN写过笔记了 没想到无意间打开 编辑器更新啦 以前巨难用的 富文本编辑器 终于改观了 变的好像语雀 1 视图 画面操作 a 画面缩放 Zoom F11 F12 或 鼠标滚轮 补充 Zoom分辨率调节 Setup user pr

随机推荐

  • Unity2019_寻路系统

    简单导航寻路功能 选定为静态网格导航 Windows gt Ai gt Navigation 点击烘焙 角色上挂一个导航网格组件 挂上脚本 鼠标点击位置设置为导航的终点 using UnityEngine using UnityEngine
  • admin-lte+ng-bootstrap组合开发之modal弹层不显示

    在用admin lte做前端页面框架做开发 需要用到弹出层效果时 看到ng bootstrap中有Modal实现弹层效果 步骤如下 1 安装和配置ng bootstrap 具体见 https www jianshu com p 690080
  • Qt

    Qt UDP广播通信的使用 实战项目使用案例 1 UDP广播介绍 UDP广播地址固定IP地址为 XXX XXX XXX 255 如果向全网段发送广播消息 那么广播地址为 255 255 255 255 如果向单个网段发送广播消息 例如你的I
  • Java中方法的重载和重写

    重载是在同一个类中的具有相同方法名 不同参数 个数 类型 顺序 的方法的定义 构造方法 普通方法 抽象方法都可以重载 重写是在子类继承父类的时候重写 在子类重写的方法名必须和父类的方法名完全相同 可以用 Override检查是否是重写方法
  • 白盒测试和静态测试

    白盒测试技术是根据被测对象的结构 系统化设计测试用例的一种方法 又称透明盒测试 或结构测试 测试覆盖准则之白盒测试设计技术的核心代码覆盖标准 1 语句覆盖 2 判定覆盖 3 条件覆盖 4 判定条件覆盖 5 条件组合覆盖 6 路径覆盖 白盒测
  • LeetCode刷题之旅【多线程篇-4】中等: 1116. 打印零与奇偶数

    2019年11月22日 目录 题目 1116 打印零与奇偶数 解题1 Semaphore 信号量作屏障 解题2 synchronized独占锁 线程阻塞与唤醒 拓展 题目 1116 打印零与奇偶数 解题1 Semaphore 信号量作屏障
  • NVIDIA视频硬解码

    硬解码流程 创建cuda上下文 查询硬件解码器解码能力 创建解码器实例 使用第三方软件 如FFMPEG 进行Demux 使用第三方解析器 如FFMPEG 解析视频比特流 使用NVDECODE API启动解码 获取解码后的YUV进行进一步处理
  • 刷脸支付服务商帮助微信支付宝拓展市场服务客户

    如今的刷脸支付市场 随着微信刷脸支付 青蛙 的内测完成 马上就会和支付宝的 蜻蜓 有一场争夺市场的大战了 两大巨头打架 肯定会有很多的政策 到时候刷脸支付下面的人就能分一点汤 一定要记住 申请服务商是免费公开透明的 想要好好了解的就去支付宝
  • 大小端与结构体释疑

    本人在做项目过程中需要在ARM对从FPGA读取到的数据进行处理 在实际过程中产生了一些问题 在思考了后记录在此 1 大小端模式 大小端指数据在内存中的存储方式 小端指数据的高字节保存在内存的高地址处 低字节保存在内存的低地址处 大端模式则正
  • 【os模块】os.walk 获取指定路径下文件名

    os walk函数原型 os walk是python中的一个函数 函数声明 os walk top topdown True nerr r None top 目标路径 topdown 默认值是 True 表示首先返回顶级目录下的文件 然后再
  • c++ Sigmoid/Softmax/Argmax

    Sigmoid float sigmoid float x return 1 1 exp x float sigmoid dy dz float x return x 1 0 x float tanh dy dz float x retur
  • ES按日期滚动索引

    按日期滚动索引 环境 ES 6 9 ES 7 Centos 7 配置过程 创建索引 PUT localhost 9200 index 20210915 设置索引别名 写入别名和读取别名 PUT localhost 9200 index 20
  • 网络 -- n/24 计算IP范围

    1 IP地址 共分为四类 A B C D类 A类 从1 0 0 0 到 126 255 255 255 B类 从128 0 0 0 到 191 255 255 255 C类 从192 0 0 0 到 223 255 255 255 其中12
  • 关于输入、输出电容在 LDO 应用中的重要性

    关于输入 输出电容在 LDO 应用中的重要性 如何让LDO 产品在应用中达到更佳的稳定性 则用户在设计电路时 最好根据芯片 datasheet 的说明文档而定 下面以LP2985 3 3这个LDO为例 LP2985 3 3是低功耗 低压差
  • Vue基础(二)——模板语法

    一 指令 1 v bind 绑定属性 2 v on 绑定事件 3 v if和v show 1 介绍
  • tcp/ip在物理层/数据链路层 实现简单抓包

    socket的精妙之处在于协议族的横向转换和地址族的纵向转换 我们也可在更底层实现对流经host的数据流的监督和修改 尤其是监察数据 十分简单 这里是混杂模式实现对ip数据流的监察与对tcp数据流的简单查看 需要root权限 这里忽略了tc
  • 整理一下go的ci工具

    代码格式化 go fmt fileName go goimports 自动格式化import goimports w fileName go mod 自动更新 删除包 go mod tidy 检查注释是否符合导出 1 安装revive go
  • 关于如何修复烧写镜像文件失败的SD卡

    前言 使用某些软件 比如 win32 Disk Imager 向SD卡烧写镜像文件时 很有可能出现烧写失败的情况 通常如果烧写失败 系统会弹出请求格式化SD卡的提示框 此时不要点格式化 点了可能会造成不可挽救的结果 也可能不会 而是进行以下
  • 【C库函数】memcpy函数详解

    目录 memcpy 函数原型 参数讲解 返回值讲解 函数讲解 三个注意点 memcpy 拷贝内存块到目标空间 函数原型 void memcpy void dest const void src size t count 参数讲解 参数 de
  • 百度AI──自然语言处理使用教程

    百度AI 自然语言处理使用教程 情感倾向分析 创建自己的应用 python方式调用 安装Python SDK 创建一个 Python SDK客户端 配置AipNlp 调用接口 情感倾向分析 需要注意的几个点 完整代码 参考 创建自己的应用