资讯 社区 文档
技术能力
语音技术
文字识别
人脸与人体
图像技术
语言与知识
视频技术

NLP-Python-SDK

Python SDK文档

简介

Hi,您好,欢迎使用百度自然语言处理服务。

本文档主要针对Python开发者,描述百度自然语言处理接口服务的相关技术内容。如果您对文档内容有任何疑问,可以通过以下几种方式联系我们:

接口能力

接口名称 接口能力简要描述
词法分析 分词、词性标注、专名识别
短文本相似度 判断两个文本的相似度得分
评论观点抽取 提取一个句子观点评论的情感属性
情感倾向分析 对包含主观观点信息的文本进行情感极性类别(积极、消极、中性)的判断,并给出相应的置信度
文章标签 分析文章的标题和内容,输出能够反映文章关键信息的主题、话题、实体等多维度标签以及对应的置信度
文章分类 根据文章内容类型,对文章进行自动分类
文本纠错 识别文本中有错误的片段,进行错误提示并给出正确的建议文本内容
对话情绪识别 针对用户日常沟通文本背后所蕴含情绪的一种直观检测,可自动识别出当前会话者所表现出的情绪类别及其置信度
新闻摘要 自动抽取新闻文本中的关键信息,进而生成指定长度的新闻摘要
地址识别 精准提取快递填单文本中的姓名、电话、地址信息,自动补充和纠正,生成结构化信息

版本更新记录

上线日期 版本号 更新内容
2021.03.23 4.15.7 bug修改,接口升级
2019.12.19 2.2.19 新增地址识别
2018.12.7 2.2.10 新增新闻摘要接口
2018.6.15 2.2.5 新增文本纠错,情感识别接口
2018.01.25 2.2.0 新增文本标签API
2017.12.22 2.0.0 SDK代码重构
2017.05.11 1.0.0 自然语言处理服务上线

快速入门

安装自然语言处理 Python SDK

自然语言处理 Python SDK目录结构

├── README.md
├── aip                   //SDK目录
│   ├── __init__.py       //导出类
│   ├── base.py           //aip基类
│   ├── http.py           //http请求
│   └── nlp.py //自然语言处理
└── setup.py              //setuptools安装

支持Python版本:2.7.+ ,3.+

安装使用Python SDK有如下方式

  • 可在官网下载最新版本。
  • 如果已安装pip,执行pip install baidu-aip即可,如果需要使用HTTP2,请安装pip install baidu-aip-http2
  • 如果已安装setuptools,执行python setup.py install即可。

新建AipNlp

AipNlp是自然语言处理的Python SDK客户端,为使用自然语言处理的开发人员提供了一系列的交互方法。

参考如下代码新建一个AipNlp:

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)

在上面代码中,常量APP_ID在百度云控制台中创建,常量API_KEYSECRET_KEY是在创建完毕应用后,系统分配给用户的,均为字符串,用于标识用户,为访问做签名验证,可在AI服务控制台中的应用列表中查看。

注意:如您以前是百度云的老用户,其中API_KEY对应百度云的“Access Key ID”,SECRET_KEY对应百度云的“Access Key Secret”。

配置AipNlp

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

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

接口说明

词法分析

词法分析接口向用户提供分词、词性标注、专名识别三大功能;能够识别出文本串中的基本词汇(分词),对这些词汇进行重组、标注组合后词汇的词性,并进一步识别出命名实体。

text = "百度是一家高科技公司";
charset="UTF-8"

""" 调用词法分析 """
client.lexer(text);

词法分析 请求参数详情

参数名称 是否必选 类型 说明
text string 待分析文本,长度不超过20000字节
charset string UTF-8

词法分析 返回数据参数详情

参数名称 类型 必需 详细说明
text string 原始单条请求文本
items array(object) 词汇数组,每个元素对应结果中的一个词
+item string 词汇的字符串
+ne string 命名实体类型,命名实体识别算法使用。词性标注算法中,此项为空串
+pos string 词性,词性标注算法使用。命名实体识别算法中,此项为空串
+byte_offset int 在text中的字节级offset(使用GBK编码)
+byte_length int 字节级length(使用GBK编码)
+uri string 链指到知识库的URI,只对命名实体有效。对于非命名实体和链接不到知识库的命名实体,此项为空串
+formal string 词汇的标准化表达,主要针对时间、数字单位,没有归一化表达的,此项为空串
+basic_words array(string) 基本词成分
+loc_details array(object) 地址成分,非必需,仅对地址型命名实体有效,没有地址成分的,此项为空数组。
++type string 成分类型,如省、市、区、县
++byte_offset int 在item中的字节级offset(使用GBK编码)
++byte_length int 字节级length(使用GBK编码)

词法分析 返回示例

{
  "status":0,
  "version":"ver_1_0_1",
  "results":[
    {
      "retcode":0,
      "text":"百度是一家高科技公司",
      "items":[
         {
           "byte_length":4,
           "byte_offset":0,
           "formal":"",
           "item":"百度",
           "ne":"ORG",
           "pos":"",
           "uri":"",
           "loc_details":[ ],
           "basic_words":["百度"]
         },
         {
           "byte_length":2,
           "byte_offset":4,
           "formal":"",
           "item":"是",
           "ne":"",
           "pos":"v",
           "uri":"",
           "loc_details":[ ],
           "basic_words":["是"]
         },
         {
           "byte_length":4,
           "byte_offset":6,
           "formal":"",
           "item":"一家",
           "ne":"",
           "pos":"m",
           "uri":"",
           "loc_details":[ ],
           "basic_words":["一","家"]
         },
         {
           "byte_length":6,
           "byte_offset":10,
           "formal":"",
           "item":"高科技",
           "ne":"",
           "pos":"n",
           "uri":"",
           "loc_details":[ ],
           "basic_words":["高","科技"]
         },
         {
           "byte_length":4,
           "byte_offset":16,
           "formal":"",
           "item":"公司",
           "ne":"",
           "pos":"n",
           "uri":"",
           "loc_details":[ ],
           "basic_words":["公司"]
         }
      ]
    }
  ]
}

词性缩略说明

词性 含义 词性 含义 词性 含义 词性 含义
n 普通名词 f 方位名词 s 处所名词 t 时间名词
nr 人名 ns 地名 nt 机构团体名 nw 作品名
nz 其他专名 v 普通动词 vd 动副词 vn 名动词
a 形容词 ad 副形词 an 名形词 d 副词
m 数量词 q 量词 r 代词 p 介词
c 连词 u 助词 xc 其他虚词 w 标点符号

专名识别缩略词含义

缩略词 含义 缩略词 含义 缩略词 含义 缩略词 含义
PER 人名 LOC 地名 ORG 机构名 TIME 时间

词法分析(定制版)

词法分析接口向用户提供分词、词性标注、专名识别三大功能;能够识别出文本串中的基本词汇(分词),对这些词汇进行重组、标注组合后词汇的词性,并进一步识别出命名实体。

text = "百度是一家高科技公司"

""" 调用词法分析(定制版) """
client.lexerCustom(text);

词法分析(定制版) 请求参数详情

参数名称 是否必选 类型 说明
text string 待分析文本(目前仅支持GBK编码),长度不超过20000字节

词法分析(定制版) 返回数据参数详情

参数名称 类型 必需 详细说明
text string 原始单条请求文本
items array(object) 词汇数组,每个元素对应结果中的一个词
+item string 词汇的字符串
+ne string 命名实体类型,命名实体识别算法使用。词性标注算法中,此项为空串
+pos string 词性,词性标注算法使用。命名实体识别算法中,此项为空串
+byte_offset int 在text中的字节级offset(使用GBK编码)
+byte_length int 字节级length(使用GBK编码)
+uri string 链指到知识库的URI,只对命名实体有效。对于非命名实体和链接不到知识库的命名实体,此项为空串
+formal string 词汇的标准化表达,主要针对时间、数字单位,没有归一化表达的,此项为空串
+basic_words array(string) 基本词成分
+loc_details array(object) 地址成分,非必需,仅对地址型命名实体有效,没有地址成分的,此项为空数组。
++type string 成分类型,如省、市、区、县
++byte_offset int 在item中的字节级offset(使用GBK编码)
++byte_length int 字节级length(使用GBK编码)

词法分析(定制版) 返回示例

参考词法分析接口

短文本相似度

短文本相似度接口用来判断两个文本的相似度得分。

text1 = "浙富股份"

text2 = "万事通自考网"

""" 调用短文本相似度 """
client.simnet(text1, text2);

""" 如果有可选参数 """
options = {}
options["model"] = "CNN"

""" 带参数调用短文本相似度 """
client.simnet(text1, text2, options)

短文本相似度 请求参数详情

参数名称 是否必选 类型 描述
text_1 string 待比较文本1,最大512字节
text_2 string 待比较文本2,最大512字节
model string 默认为"ERNIE"

短文本相似度 返回数据参数详情

参数 类型 描述
log_id number 请求唯一标识
score number 两个文本相似度得分
texts array 输入文本
+text_1 string 第一个短文本
+text_2 string 第二个短文本

短文本相似度 返回示例

{
    "log_id": 12345,
    "texts":{
        "text_1":"浙富股份",
        "text_2":"万事通自考网"
    },
    "score":0.3300237655639648 //相似度结果
},

评论观点抽取

评论观点抽取接口用来提取一条评论句子的关注点和评论观点,并输出评论观点标签及评论观点极性。

text = "三星电脑电池不给力"

""" 调用评论观点抽取 """
client.commentTag(text);

""" 如果有可选参数 """
options = {}
options["type"] = 13

""" 带参数调用评论观点抽取 """
client.commentTag(text, options)

评论观点抽取 请求参数详情

参数名称 是否必选 类型 可选值范围 说明
text string 评论内容(GBK编码),最大10240字节
type string 1 - 酒店
2 - KTV3 - 丽人
4 - 美食餐饮
5 - 旅游
6 - 健康
7 - 教育
8 - 商业
9 - 房产
10 - 汽车
11 - 生活
12 - 购物
13 - 3C
评论行业类型,默认为4(餐饮美食)

评论观点抽取 返回数据参数详情

参数 类型 描述
log_id uint64 请求唯一标识码
prop string 匹配上的属性词
adj string 匹配上的描述词
sentiment int 该情感搭配的极性(0表示消极,1表示中性,2表示积极)
begin_pos int 该情感搭配在句子中的开始位置
end_pos int 该情感搭配在句子中的结束位置
abstract string 对应于该情感搭配的短句摘要

评论观点抽取 返回示例

{
    "items": [
        {
        "prop":"电池",
        "adj": "不给力",
        "sentiment": 0,
        "begin_pos": 8,
        "end_pos": 18,
        "abstract":"三星电脑<span>电池不给力</span>"
        }
    ]
}

情感倾向分析

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

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

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

情感倾向分析 请求参数详情

参数名称 是否必选 类型 说明
text string 文本内容(GBK编码),最大2048字节

情感倾向分析 返回数据参数详情

参数 是否必须 类型 说明
text string 输入的文本内容
items array 输入的词列表
+sentiment number 表示情感极性分类结果, 0:负向,1:中性,2:正向
+confidence number 表示分类的置信度
+positive_prob number 表示属于积极类别的概率
+negative_prob number 表示属于消极类别的概率

情感倾向分析 返回示例

{
    "text":"苹果是一家伟大的公司",
    "items":[
        {
            "sentiment":2,    //表示情感极性分类结果
            "confidence":0.40, //表示分类的置信度
            "positive_prob":0.73, //表示属于积极类别的概率
            "negative_prob":0.27  //表示属于消极类别的概率
        }
    ]
}

文章标签

文章标签服务能够针对网络各类媒体文章进行快速的内容理解,根据输入含有标题的文章,输出多个内容标签以及对应的置信度,用于个性化推荐、相似文章聚合、文本内容分析等场景。

title = "iphone手机出现“白苹果”原因及解决办法,用苹果手机的可以看下"

content = "如果下面的方法还是没有解决你的问题建议来我们门店看下成都市锦江区红星路三段99号银石广场24层01室。"

""" 调用文章标签 """
client.keyword(title, content);

文章标签 请求参数详情

参数名称 是否必选 类型 说明
title string 篇章的标题,最大80字节
content string 篇章的正文,最大65535字节

文章标签 返回数据参数详情

参数 是否必须 类型 说明
items array(object) 关键词结果数组,每个元素对应抽取到的一个关键词
+tag string 关注点字符串
+score number 权重(取值范围0~1)

文章标签 返回示例

{
    "log_id": 4457308639853058292,
    "items": [
        {
            "score": 0.997762,
            "tag": "iphone"
        },
        {
            "score": 0.861775,
            "tag": "手机"
        },
        {
            "score": 0.845657,
            "tag": "苹果"
        },
        {
            "score": 0.83649,
            "tag": "苹果公司"
        },
        {
            "score": 0.797243,
            "tag": "数码"
        }
    ]
}

文章分类

对文章按照内容类型进行自动分类,首批支持娱乐、体育、科技等26个主流内容类型,为文章聚类、文本内容分析等应用提供基础技术支持。

title = "欧洲冠军杯足球赛"

content = "欧洲冠军联赛是欧洲足球协会联盟主办的年度足球比赛,代表欧洲俱乐部足球最高荣誉和水平,被认为是全世界最高素质、最具影响力以及最高水平的俱乐部赛事,亦是世界上奖金最高的足球赛事和体育赛事之一。"

""" 调用文章分类 """
client.topic(title, content);

文章分类 请求参数详情

参数名称 是否必选 类型 说明
title string 篇章的标题,最大80字节
content string 篇章的正文,最大65535字节

文章分类 返回数据参数详情

参数名称 类型 详细说明
item object 分类结果,包含一级与二级分类
+lv1_tag_list array of objects 一级分类结果
+lv2_tag_list array of objects 二级分类结果
++score float 类别标签对应得分,范围0-1
++tag string 类别标签

文章分类 返回示例

{
    "log_id": 5710764909216517248,
    "item": {
        "lv2_tag_list": [
            {
                "score": 0.895467,
                "tag": "足球"
            },
            {
                "score": 0.794878,
                "tag": "国际足球"
            }
        ],
        "lv1_tag_list": [
            {
                "score": 0.88808,
                "tag": "体育"
            }
        ]
    }
}

文本纠错

识别输入文本中有错误的片段,提示错误并给出正确的文本结果。支持短文本、长文本、语音等内容的错误识别,纠错是搜索引擎、语音识别、内容审查等功能更好运行的基础模块之一。

text = "百度是一家人工只能公司"

""" 调用文本纠错 """
client.ecnet(text);

文本纠错 请求参数详情

参数名称 是否必选 类型 说明
text string 待纠错文本,输入限制511字节

文本纠错 返回数据参数详情

参数 说明 描述
log_id uint64 请求唯一标识码
correct_query string 纠错后的文本
score double 模型置信度打分
item object 分析结果
+vec_fragment list 替换候选片段信息
++ori_frag string 原片段
++correct_frag double 替换片段
++begin_pos int 起始(长度单位)
++end_pos list 结尾(长度单位)

文本纠错 返回示例

{
    "log_id": 6770395607901559829,
    "item": {
        "vec_fragment": [
            {
                "ori_frag": "只能",
                "begin_pos": 21,
                "correct_frag": "智能",
                "end_pos": 27
            }
        ],
        "score": 0.875169,
        "correct_query": "百度是一家人工智能公司"
    },
    "text": "百度是一家人工只能公司"
}

对话情绪识别接口

针对用户日常沟通文本背后所蕴含情绪的一种直观检测,可自动识别出当前会话者所表现出的情绪类别及其置信度,可以帮助企业更全面地把握产品服务质量、监控客户服务质量

text = "本来今天高高兴兴"

""" 调用对话情绪识别接口 """
client.emotion(text);

""" 如果有可选参数 """
options = {}
options["scene"] = "talk"

""" 带参数调用对话情绪识别接口 """
client.emotion(text, options)

对话情绪识别接口 请求参数详情

参数名称 是否必选 类型 说明
text string 待识别情感文本,输入限制512字节
scene string default(默认项-不区分场景),talk(闲聊对话-如度秘聊天等),task(任务型对话-如导航对话等),customer_service(客服对话-如电信/银行客服等)

对话情绪识别接口 返回数据参数详情

参数 说明 描述
log_id uint64 请求唯一标识码
text string 输入的对话文本内容
items list 分析结果数组
++label string 情绪分类标签;pessimistic(负向情绪)、neutral(中性情绪)、optimistic(正向情绪)
++prob double item标签对应的概率

对话情绪识别接口 返回示例

{
    "log_id": 4258005459150262970,
    "text": "本来今天高高兴兴",
    "items": [
        {
            "prob": 0.998619,
            "label": "neutral"
        },
        {
            "prob": 0.00138141,
            "label": "pessimistic"
        },
    ]
}

新闻摘要接口

自动抽取新闻文本中的关键信息,进而生成指定长度的新闻摘要

content = "麻省理工学院的研究团队为无人机在仓库中使用RFID技术进行库存查找等工作,创造了一种..."

maxSummaryLen = 300

""" 调用新闻摘要接口 """
client.newsSummary(content, maxSummaryLen);

""" 如果有可选参数 """
options = {}
options["title"] = "标题"

""" 带参数调用新闻摘要接口 """
client.newsSummary(content, maxSummaryLen, options)

新闻摘要接口 请求参数详情

参数名称 是否必选 类型 说明
content string 字符串(限3000字符数以内)字符串仅支持GBK编码,长度需小于3000字符数(即6000字节),请输入前确认字符数没有超限,若字符数超长会返回错误。正文中如果包含段落信息,请使用"\n"分隔,段落信息算法中有重要的作用,请尽量保留
max_summary_len integer 此数值将作为摘要结果的最大长度。例如:原文长度1000字,本参数设置为150,则摘要结果的最大长度是150字;推荐最优区间:200-500字
title string 字符串(限200字符数)字符串仅支持GBK编码,长度需小于200字符数(即400字节),请输入前确认字符数没有超限,若字符数超长会返回错误。标题在算法中具有重要的作用,若文章确无标题,输入参数的“标题”字段为空即可

新闻摘要接口 返回数据参数详情

参数 说明 描述
log_id uint64 请求唯一标识码
summary string 摘要结果

新闻摘要接口 返回示例

{
    "log_id": 4258005459150262970,
    "summary": "麻省理工学院的研究团队为无人机在仓库中使用RFID技术进行库存查找等工作,创造了一种聪明的新方式。使用RFID标签更换仓库中的条形码,将帮助提升自动化并提高库存管理的准确性。几家公司已经解决了无人机读取RFID的技术问题。麻省理工学院的新解决方案,名为Rfly,允许无人机阅读RFID标签,而不用捆绑巨型读卡器。无人机接收从远程RFID读取器发送的信号,然后转发它读取附近的标签。"
}

地址识别接口

针对快递、电商行业中客户在线提交的大量非结构化地址单据,该接口可以帮助精准提取快递填单文本中的姓名、电话、地址信息,通过自然语言处理辅助地址识别做自动补充和纠正,生成标准规范的结构化信息,大幅提升企业处理单据的效率。

text = "上海市浦东新区纳贤路701号百度上海研发中心 F4A000 张三"

""" 调用地址识别接口 """
client.address(text);

地址识别接口 请求参数详情

参数名称 是否必选 类型 说明
text string 待识别的文本内容,不超过1000字节

地址识别接口 返回数据参数详情

参数 说明 描述
log_id uint64 请求唯一标识码
text string 原始输入的文本内容
province string 省(直辖市/自治区)
province_code string 省国标code
city string
city_code string 城市国标code
county string 区(县)
county_code string 区县国标code
town string 街道(乡/镇)
town_code string 街道/乡镇国标code
person string 姓名,如果出现多个则按顺序输出
detail string 详细地址
phonenum string 电话号码,如果出现多个则按顺序输出

地址识别接口 返回示例

{
    "province": "上海市",
    "city": "上海市",
    "province_code": "310000",
    "log_id": 1420038644986026316,
    "text": "上海市浦东新区纳贤路701号百度上海研发中心 F4A000 张三",
    "town": "张江镇",
    "phonenum": "",
    "detail": "纳贤路701号百度上海研发中心F4A000",
    "county": "浦东新区",
    "person": "张三",
    "town_code": "310115125",
    "county_code": "310115",
    "city_code": "310100"
}

错误信息

错误返回格式

若请求错误,服务器将返回的JSON文本包含以下参数:

  • error_code:错误码。
  • error_msg:错误描述信息,帮助理解和解决发生的错误。

错误码

错误码 错误信息 描述
1 Unknown error 服务器内部错误,请再次请求, 如果持续出现此类错误,请通过QQ群(860337848)或提交工单联系技术支持团队。
2 Service temporarily unavailable 服务暂不可用,请再次请求, 如果持续出现此类错误,请通过QQ群(860337848)或提交工单联系技术支持团队。
3 Unsupported openapi method 调用的API不存在,请检查请求URL后重新尝试,一般为URL中有非英文字符,如“-”,可手动输入重试
4 Open api request limit reached 集群超限额,请再次请求, 如果持续出现此类错误,请通过QQ群(860337848)或提交工单联系技术支持团队。
6 No permission to access data 无权限访问该用户数据,创建应用时未勾选相关接口
13 Get service token failed 获取token失败
14 IAM Certification failed IAM 鉴权失败
15 app not exsits or create failed 应用不存在或者创建失败
17 Open api daily request limit reached 每天请求量超限额,可通过QQ群(860337848)联系群管、提交工单提升限额
18 Open api qps request limit reached QPS超限额,可通过QQ群(860337848)联系群管、提交工单提升限额
19 Open api total request limit reached 请求总量超限额,可通过QQ群(860337848)联系群管、提交工单提升限额
100 Invalid parameter 无效的access_token参数,请检查后重新尝试
110 Access token invalid or no longer valid access_token无效
111 Access token expired access token过期
282000 internal error 服务器内部错误,请再次请求, 如果持续出现此类错误,请通过QQ群(632426386)或工单联系技术支持团队。
282002 input encoding error 编码错误,请使用GBK编码
282004 invalid parameter(s) 请求中包含非法参数,请检查后重新尝试
282130 no result 当前查询无结果返回,出现此问题的原因一般为:参数配置存在问题,请检查后重新尝试
282131 input text too long 输入长度超限,请查看文档说明
282133 param {参数名} not exist 接口参数缺失
282300 word error word不在算法词典中
282301 word_1 error word_1提交的词汇暂未收录,无法比对相似度
282302 word_2 error word_2提交的词汇暂未收录,无法比对相似度
282303 word_1&word_2 error word_1和word_2暂未收录,无法比对相似度
上一篇
API参考
下一篇
NLP-Java-SDK