NLP-Java-SDK
Java SDK文档
简介
Hi,您好,欢迎使用百度自然语言处理服务。
本文档主要针对Java开发者,描述百度自然语言处理接口服务的相关技术内容。如果您对文档内容有任何疑问,可以通过以下几种方式联系我们:
接口能力
接口名称 | 接口能力简要描述 |
---|---|
词法分析 | 分词、词性标注、专名识别 |
评论观点抽取 | 提取一个句子观点评论的情感属性 |
情感倾向分析 | 对包含主观观点信息的文本进行情感极性类别(积极、消极、中性)的判断,并给出相应的置信度 |
文章标签 | 分析文章的标题和内容,输出能够反映文章关键信息的主题、话题、实体等多维度标签以及对应的置信度 |
文章分类 | 根据文章内容类型,对文章进行自动分类 |
文本纠错 | 识别文本中有错误的片段,进行错误提示并给出正确的建议文本内容 |
对话情绪识别 | 针对用户日常沟通文本背后所蕴含情绪的一种直观检测,可自动识别出当前会话者所表现出的情绪类别及其置信度 |
新闻摘要 | 自动抽取新闻文本中的关键信息,进而生成指定长度的新闻摘要 |
地址识别 | 精准提取快递填单文本中的姓名、电话、地址信息,自动补充和纠正,生成结构化信息 |
版本更新记录
上线日期 | 版本号 | 更新内容 |
---|---|---|
2020.09.14 | 4.15.1 | 新增地址识别 |
2019.7.12 | 4.11.3 | 替换logger实现,新增可选http2库 |
2018.12.7 | 4.9.0 | 新增新闻摘要接口 |
2018.6.15 | 4.4.1 | 新增情感识别和文本纠错接口 |
2018.1.26 | 4.1.1 | 新增文本分类接口 |
2018.1.11 | 4.1.0 | 新增文本标签接口 |
2017.12.22 | 4.0.0 | 接口统一升级 |
2017.10.18 | 3.2.1 | 使用proxy问题修复 |
2017.8.25 | 3.0.0 | 更新sdk打包方式:所有AI服务集成一个SDK |
2017.7.14 | 1.5.2 | 更新sdk打包方式 |
2017.6.30 | 1.5.1 | 新增句法依存接口 |
2017.6.15 | 1.5.0 | 短文本相似度接口升级 |
2017.5.25 | 1.4.0 | 词向量、评论观战、中文DNN接口升级,新增词相似度和情感分析接口 |
2017.4.20 | 1.3.3 | 新增词法分析接口,规范分词接口错误码 |
2017.4.13 | 1.3.2 | AI SDK同步版本更新 |
2017.3.23 | 1.3 | 对安卓环境兼容问题进行修复 |
2017.3.2 | 1.2 | 增加设置超时接口 |
2017.1.20 | 1.1 | 对部分云用户调用不成功的错误修复 |
2017.1.6 | 1.0 | 初始版本,上线中文分词、词性标注、词向量表示、中文DNN语言模型、短文本相似度和评论观点抽取接口 |
快速入门
安装NLP Java SDK
NLP Java SDK目录结构
1com.baidu.aip
2 ├── auth //签名相关类
3 ├── http //Http通信相关类
4 ├── client //公用类
5 ├── exception //exception类
6 ├── nlp
7 │ └── AipNlp //AipNlp类
8 └── util //工具类
支持 JAVA版本:1.7+
查看源码
Java SDK代码现已公开,您可以查看代码、或者在License范围内修改和编译SDK以适配您的环境。 github链接:https://github.com/Baidu-AIP/java-sdk
使用maven依赖:
添加以下依赖即可。其中版本号可在maven官网查询
1<dependency>
2 <groupId>com.baidu.aip</groupId>
3 <artifactId>java-sdk</artifactId>
4 <version>${version}</version>
5</dependency>
直接使用JAR包步骤如下:
1.在官方网站下载Java SDK压缩工具包。
2.将下载的aip-java-sdk-version.zip
解压后,复制到工程文件夹中。
3.在Eclipse右键“工程 -> Properties -> Java Build Path -> Add JARs”。
4.添加SDK工具包aip-java-sdk-version.jar
和第三方依赖工具包json-20160810.jar
slf4j-api-1.7.25.jar
slf4j-simple-1.7.25.jar(可选)
。
其中,version
为版本号,添加完成后,用户就可以在工程中使用NLP Java SDK。
新建AipNlp
AipNlp是自然语言处理的Java客户端,为使用自然语言处理的开发人员提供了一系列的交互方法。
用户可以参考如下代码新建一个AipNlp,初始化完成后建议单例使用,避免重复获取access_token:
1public class Sample {
2 //设置APPID/AK/SK
3 public static final String APP_ID = "你的 App ID";
4 public static final String API_KEY = "你的 Api Key";
5 public static final String SECRET_KEY = "你的 Secret Key";
6
7 public static void main(String[] args) {
8 // 初始化一个AipNlp
9 AipNlp client = new AipNlp(APP_ID, API_KEY, SECRET_KEY);
10
11 // 可选:设置网络连接参数
12 client.setConnectionTimeoutInMillis(2000);
13 client.setSocketTimeoutInMillis(60000);
14
15 // 可选:设置代理服务器地址, http和socket二选一,或者均不设置
16 client.setHttpProxy("proxy_host", proxy_port); // 设置http代理
17 client.setSocketProxy("proxy_host", proxy_port); // 设置socket代理
18
19 // 调用接口
20 String text = "百度是一家高科技公司";
21 JSONObject res = client.lexer(text, null);
22 System.out.println(res.toString(2));
23
24 }
25}
在上面代码中,常量APP_ID
在百度云控制台中创建,常量API_KEY
与SECRET_KEY
是在创建完毕应用后,系统分配给用户的,均为字符串,用于标识用户,为访问做签名验证,可在AI服务控制台中的应用列表中查看。
注意:如您以前是百度云的老用户,其中API_KEY
对应百度云的“Access Key ID”,SECRET_KEY
对应百度云的“Access Key Secret”。
配置AipNlp
如果用户需要配置AipNlp的一些细节参数,可以在构造AipNlp之后调用接口设置参数,目前只支持以下参数:
接口 | 说明 |
---|---|
setConnectionTimeoutInMillis | 建立连接的超时时间(单位:毫秒) |
setSocketTimeoutInMillis | 通过打开的连接传输数据的超时时间(单位:毫秒) |
setHttpProxy | 设置http代理服务器 |
setSocketProxy | 设置socket代理服务器 (http和socket类型代理服务器只能二选一) |
SDK默认使用slf4j-simple包进行日志输出,若用户需要使用自定义日志实现,可去除slf4j-simple依赖包,再额外添加相应的日志实现包即可。 maven去除slf4j-simple依赖包示例:
1<dependency>
2 <groupId>com.baidu.aip</groupId>
3 <artifactId>java-sdk</artifactId>
4 <version>${version}</version>
5 <exclusions>
6 <exclusion>
7 <groupId>org.slf4j</groupId>
8 <artifactId>slf4j-simple</artifactId>
9 </exclusion>
10 </exclusions>
11</dependency>
如何使用http2版本功能
现在有一个snapshot版本支持http2,依赖okHttp,仅支持jdk版本>=1.8
使用maven依赖:
添加以下依赖即可。其中版本号可在maven官网查询
1<dependency>
2 <groupId>com.baidu.aip</groupId>
3 <artifactId>java-sdk</artifactId>
4 <version>4.16.5-SNAPSHOT</version>
5</dependency>
如果你的jdk版本1.8,请在maven中加入alpn-boot的支持,否则无法开启http2.0支持,jdk10则可以跳过以下步骤
jdk1.8 下使用maven 添加alpn-boot:
1<project>
2
3 <!-- 请对照您使用的jdk的具体小版本选择对应的alpn-boot版本请参照http://www.eclipse.org/jetty/documentation/current/alpn-chapter.html#alpn-versions-->
4 <properties>
5 <alpn-boot.version>8.x.xxxxx</alpn-boot.version>
6 </properties>
7
8 <!-- 加入依赖的alpn-boot-->
9 <dependencies>
10 <dependency>
11 <groupId>org.mortbay.jetty.alpn</groupId>
12 <artifactId>alpn-boot</artifactId>
13 <version>${alpn-boot.version}</version>
14 </dependency>
15 </dependencies>
16
17 <!-- 使用plugin配置jvmArg Xbootclasspath-->
18 <build>
19 <plugins>
20 <plugin>
21 <groupId>org.apache.maven.plugins</groupId>
22 <artifactId>maven-compiler-plugin</artifactId>
23 <configuration>
24 <compilerArgs>
25 <arg>-Xbootclasspath/p:${settings.localRepository}/org/mortbay/jetty/alpn/alpn-boot/${alpn-boot.version}/alpn-boot-${alpn-boot.version}.jar</arg>
26 </compilerArgs>
27 </configuration>
28 </plugin>
29 <plugins>
30 </build>
31 </project>
直接使用JAR包步骤如下:
1.在官方网站下载Java SDK压缩工具包。
2.将下载的aip-java-sdk-version.zip
解压后,复制到工程文件夹中。
3.在Eclipse右键“工程 -> Properties -> Java Build Path -> Add JARs”。
4.添加SDK工具包aip-java-sdk-version-http2.jar
和第三方依赖工具包json-20160810.jar
okhttp-4.0.0.jar
annotations-13.0.jar
kotlin-stdlib-1.3.40.jar
kotlin-stdlib-common-1.3.40.jar
okio-2.2.2.jar
slf4j-api-1.7.25.jar
slf4j-simple-1.7.25.jar(可选)
。
5.对照jdk与alpn-boot对照表到maven下载页下载正确版本的alpn-boot-8.x.xx.jar
6.在jvm启动参数中加入
java -Xbootclasspath/p:<path_to_alpn_boot_jar>
,其中<path_to_alpn_boot_jar>
为上一步下载完后放到任意目录的alpn-boot.jar包文件全路径
其中,version
为版本号,添加完成后,用户就可以在工程中使用NLP Java SDK。
用户可以参考如下代码新建一个AipNlp,初始化完成后建议单例使用,避免重复获取access_token:
1public class Sample {
2 //设置APPID/AK/SK
3 public static final String APP_ID = "你的 App ID";
4 public static final String API_KEY = "你的 Api Key";
5 public static final String SECRET_KEY = "你的 Secret Key";
6
7 public static void main(String[] args) {
8 // 初始化一个AipNlp
9 AipNlp client = new AipNlp(APP_ID, API_KEY, SECRET_KEY);
10
11 // 可选:设置您自己的okHttpClient
12 // 连接数超时等都可以通过okHttp提供的接口实现
13 OkHttpClient.Builder builder = new OkHttpClient.Builder();
14 AipNlp client = new AipNlp(APP_ID, API_KEY, SECRET_KEY, builder.build());
15
16 // 调用接口
17 String text = "百度是一家高科技公司";
18 ArrayList<CBFutureTask> taskList = new ArrayList<>();
19 for (int i = 0; i < 10; ++i) {
20 CBFutureTask futureTask = nlp.lexer(text, i + "", null);
21 taskList.add(futureTask);
22 }
23 while (!taskList.isEmpty()) {
24 Iterator<CBFutureTask> iter = taskList.iterator();
25 while (iter.hasNext()) {
26 CBFutureTask futureTask = iter.next();
27 if (futureTask.isDone()) {
28 iter.remove();
29 try {
30 String response = futureTask.get();
31 System.out.println(futureTask.getProtocol());
32 System.out.println("req id:" + futureTask.getRequestId() + ", result: " +
33 response);
34 } catch (InterruptedException | ExecutionException e) {
35 Throwable cause = e.getCause();
36 if (cause != null && cause instanceof IOException) {
37 System.err.println("发生网络错误:");
38 cause.printStackTrace();
39 } else {
40 e.printStackTrace();
41 }
42 }
43 }
44 }
45 }
46 }
47}
接口说明
词法分析
词法分析接口向用户提供分词、词性标注、专名识别三大功能;能够识别出文本串中的基本词汇(分词),对这些词汇进行重组、标注组合后词汇的词性,并进一步识别出命名实体。
1public void sample(AipNlp client) {
2 String text = "百度是一家高科技公司";
3
4 // 传入可选参数调用接口
5 HashMap<String, Object> options = new HashMap<String, Object>();
6
7 // 词法分析
8 JSONObject res = client.lexer(text, options);
9 System.out.println(res.toString(2));
10
11}
词法分析 请求参数详情
参数名称 | 是否必选 | 类型 | 说明 |
---|---|---|---|
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编码) |
词法分析 返回示例
1{
2 "status":0,
3 "version":"ver_1_0_1",
4 "results":[
5 {
6 "retcode":0,
7 "text":"百度是一家高科技公司",
8 "items":[
9 {
10 "byte_length":4,
11 "byte_offset":0,
12 "formal":"",
13 "item":"百度",
14 "ne":"ORG",
15 "pos":"",
16 "uri":"",
17 "loc_details":[ ],
18 "basic_words":["百度"]
19 },
20 {
21 "byte_length":2,
22 "byte_offset":4,
23 "formal":"",
24 "item":"是",
25 "ne":"",
26 "pos":"v",
27 "uri":"",
28 "loc_details":[ ],
29 "basic_words":["是"]
30 },
31 {
32 "byte_length":4,
33 "byte_offset":6,
34 "formal":"",
35 "item":"一家",
36 "ne":"",
37 "pos":"m",
38 "uri":"",
39 "loc_details":[ ],
40 "basic_words":["一","家"]
41 },
42 {
43 "byte_length":6,
44 "byte_offset":10,
45 "formal":"",
46 "item":"高科技",
47 "ne":"",
48 "pos":"n",
49 "uri":"",
50 "loc_details":[ ],
51 "basic_words":["高","科技"]
52 },
53 {
54 "byte_length":4,
55 "byte_offset":16,
56 "formal":"",
57 "item":"公司",
58 "ne":"",
59 "pos":"n",
60 "uri":"",
61 "loc_details":[ ],
62 "basic_words":["公司"]
63 }
64 ]
65 }
66 ]
67}
词性缩略说明
词性 | 含义 | 词性 | 含义 | 词性 | 含义 | 词性 | 含义 |
---|---|---|---|---|---|---|---|
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 | 时间 |
词法分析(定制版)
词法分析接口向用户提供分词、词性标注、专名识别三大功能;能够识别出文本串中的基本词汇(分词),对这些词汇进行重组、标注组合后词汇的词性,并进一步识别出命名实体。
1public void sample(AipNlp client) {
2 String text = "百度是一家高科技公司";
3
4 // 传入可选参数调用接口
5 HashMap<String, Object> options = new HashMap<String, Object>();
6
7 // 词法分析(定制版)
8 JSONObject res = client.lexerCustom(text, options);
9 System.out.println(res.toString(2));
10
11}
词法分析(定制版) 请求参数详情
参数名称 | 是否必选 | 类型 | 说明 |
---|---|---|---|
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编码) |
词法分析(定制版) 返回示例
1参考词法分析接口
短文本相似度
短文本相似度接口用来判断两个文本的相似度得分。
1public void sample(AipNlp client) {
2 String text1 = "浙富股份";
3 String text2 = "万事通自考网";
4
5 // 传入可选参数调用接口
6 HashMap<String, Object> options = new HashMap<String, Object>();
7 options.put("model", "CNN");
8
9 // 短文本相似度
10 JSONObject res = client.simnet(text1, text2, options);
11 System.out.println(res.toString(2));
12
13}
短文本相似度 请求参数详情
参数名称 | 是否必选 | 类型 | 可选值范围 | 说明 |
---|---|---|---|---|
text_1 | 是 | String | 待比较文本1(GBK编码),最大512字节 | |
text_2 | 是 | String | 待比较文本2(GBK编码),最大512字节 | |
model | 否 | String | BOW CNN GRNN |
默认为"BOW",可选"BOW"、"CNN"与"GRNN" |
短文本相似度 返回数据参数详情
参数 | 类型 | 描述 |
---|---|---|
log_id | number | 请求唯一标识 |
score | number | 两个文本相似度得分 |
texts | array | 输入文本 |
+text_1 | string | 第一个短文本 |
+text_2 | string | 第二个短文本 |
短文本相似度 返回示例
1{
2 "log_id": 12345,
3 "texts":{
4 "text_1":"浙富股份",
5 "text_2":"万事通自考网"
6 },
7 "score":0.3300237655639648 //相似度结果
8},
评论观点抽取
评论观点抽取接口用来提取一条评论句子的关注点和评论观点,并输出评论观点标签及评论观点极性。
1public void sample(AipNlp client) {
2 String text = "三星电脑电池不给力";
3
4 // 获取美食评论情感属性
5 JSONObject response = client.commentTag("这家餐馆味道不错", ESimnetType.FOOD, options);
6 System.out.println(response.toString());
7
8 // 获取酒店评论情感属性
9 response = client.commentTag("喜来登酒店不错", ESimnetType.HOTEL, options);
10 System.out.println(response.toString());
11
12}
评论观点抽取 请求参数详情
参数名称 | 是否必选 | 类型 | 可选值范围 | 说明 |
---|---|---|---|---|
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 | 对应于该情感搭配的短句摘要 |
评论观点抽取 返回示例
1{
2 "items": [
3 {
4 "prop":"电池",
5 "adj": "不给力",
6 "sentiment": 0,
7 "begin_pos": 8,
8 "end_pos": 18,
9 "abstract":"三星电脑<span>电池不给力</span>"
10 }
11 ]
12}
情感倾向分析
对包含主观观点信息的文本进行情感极性类别(积极、消极、中性)的判断,并给出相应的置信度。
1public void sample(AipNlp client) {
2 String text = "苹果是一家伟大的公司";
3
4 // 传入可选参数调用接口
5 HashMap<String, Object> options = new HashMap<String, Object>();
6
7 // 情感倾向分析
8 JSONObject res = client.sentimentClassify(text, options);
9 System.out.println(res.toString(2));
10
11}
情感倾向分析 请求参数详情
参数名称 | 是否必选 | 类型 | 说明 |
---|---|---|---|
text | 是 | String | 文本内容(GBK编码),最大2048字节 |
情感倾向分析 返回数据参数详情
参数 | 是否必须 | 类型 | 说明 |
---|---|---|---|
text | 是 | string | 输入的文本内容 |
items | 是 | array | 输入的词列表 |
+sentiment | 是 | number | 表示情感极性分类结果, 0:负向,1:中性,2:正向 |
+confidence | 是 | number | 表示分类的置信度 |
+positive_prob | 是 | number | 表示属于积极类别的概率 |
+negative_prob | 是 | number | 表示属于消极类别的概率 |
情感倾向分析 返回示例
1{
2 "text":"苹果是一家伟大的公司",
3 "items":[
4 {
5 "sentiment":2, //表示情感极性分类结果
6 "confidence":0.40, //表示分类的置信度
7 "positive_prob":0.73, //表示属于积极类别的概率
8 "negative_prob":0.27 //表示属于消极类别的概率
9 }
10 ]
11}
文章标签
文章标签服务能够针对网络各类媒体文章进行快速的内容理解,根据输入含有标题的文章,输出多个内容标签以及对应的置信度,用于个性化推荐、相似文章聚合、文本内容分析等场景。
1public void sample(AipNlp client) {
2 String title = "iphone手机出现“白苹果”原因及解决办法,用苹果手机的可以看下";
3 String content = "如果下面的方法还是没有解决你的问题建议来我们门店看下成都市锦江区红星路三段99号银石广场24层01室。";
4
5 // 传入可选参数调用接口
6 HashMap<String, Object> options = new HashMap<String, Object>();
7
8 // 文章标签
9 JSONObject res = client.keyword(title, content, options);
10 System.out.println(res.toString(2));
11
12}
文章标签 请求参数详情
参数名称 | 是否必选 | 类型 | 说明 |
---|---|---|---|
title | 是 | String | 篇章的标题,最大80字节 |
content | 是 | String | 篇章的正文,最大65535字节 |
文章标签 返回数据参数详情
参数 | 是否必须 | 类型 | 说明 |
---|---|---|---|
items | 是 | array(object) | 关键词结果数组,每个元素对应抽取到的一个关键词 |
+tag | 是 | string | 关注点字符串 |
+score | 是 | number | 权重(取值范围0~1) |
文章标签 返回示例
1{
2 "log_id": 4457308639853058292,
3 "items": [
4 {
5 "score": 0.997762,
6 "tag": "iphone"
7 },
8 {
9 "score": 0.861775,
10 "tag": "手机"
11 },
12 {
13 "score": 0.845657,
14 "tag": "苹果"
15 },
16 {
17 "score": 0.83649,
18 "tag": "苹果公司"
19 },
20 {
21 "score": 0.797243,
22 "tag": "数码"
23 }
24 ]
25}
文章分类
对文章按照内容类型进行自动分类,首批支持娱乐、体育、科技等26个主流内容类型,为文章聚类、文本内容分析等应用提供基础技术支持。
1public void sample(AipNlp client) {
2 String title = "欧洲冠军杯足球赛";
3 String content = "欧洲冠军联赛是欧洲足球协会联盟主办的年度足球比赛,代表欧洲俱乐部足球最高荣誉和水平,被认为是全世界最高素质、最具影响力以及最高水平的俱乐部赛事,亦是世界上奖金最高的足球赛事和体育赛事之一。";
4
5 // 传入可选参数调用接口
6 HashMap<String, Object> options = new HashMap<String, Object>();
7
8 // 文章分类
9 JSONObject res = client.topic(title, content, options);
10 System.out.println(res.toString(2));
11
12}
文章分类 请求参数详情
参数名称 | 是否必选 | 类型 | 说明 |
---|---|---|---|
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 | 类别标签 |
文章分类 返回示例
1{
2 "log_id": 5710764909216517248,
3 "item": {
4 "lv2_tag_list": [
5 {
6 "score": 0.895467,
7 "tag": "足球"
8 },
9 {
10 "score": 0.794878,
11 "tag": "国际足球"
12 }
13 ],
14 "lv1_tag_list": [
15 {
16 "score": 0.88808,
17 "tag": "体育"
18 }
19 ]
20 }
21}
文本纠错
识别输入文本中有错误的片段,提示错误并给出正确的文本结果。支持短文本、长文本、语音等内容的错误识别,纠错是搜索引擎、语音识别、内容审查等功能更好运行的基础模块之一。
1public void sample(AipNlp client) {
2 String text = "百度是一家人工只能公司";
3
4 // 传入可选参数调用接口
5 HashMap<String, Object> options = new HashMap<String, Object>();
6
7 // 文本纠错
8 JSONObject res = client.ecnet(text, options);
9 System.out.println(res.toString(2));
10
11}
文本纠错 请求参数详情
参数名称 | 是否必选 | 类型 | 说明 |
---|---|---|---|
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 | 结尾(长度单位) |
文本纠错 返回示例
1{
2 "log_id": 6770395607901559829,
3 "item": {
4 "vec_fragment": [
5 {
6 "ori_frag": "只能",
7 "begin_pos": 21,
8 "correct_frag": "智能",
9 "end_pos": 27
10 }
11 ],
12 "score": 0.875169,
13 "correct_query": "百度是一家人工智能公司"
14 },
15 "text": "百度是一家人工只能公司"
16}
对话情绪识别接口
针对用户日常沟通文本背后所蕴含情绪的一种直观检测,可自动识别出当前会话者所表现出的情绪类别及其置信度,可以帮助企业更全面地把握产品服务质量、监控客户服务质量
1public void sample(AipNlp client) {
2 String text = "本来今天高高兴兴";
3
4 // 传入可选参数调用接口
5 HashMap<String, Object> options = new HashMap<String, Object>();
6 options.put("scene", "talk");
7
8 // 对话情绪识别接口
9 JSONObject res = client.emotion(text, options);
10 System.out.println(res.toString(2));
11
12}
对话情绪识别接口 请求参数详情
参数名称 | 是否必选 | 类型 | 说明 |
---|---|---|---|
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标签对应的概率 |
对话情绪识别接口 返回示例
1{
2 "log_id": 4258005459150262970,
3 "text": "本来今天高高兴兴",
4 "items": [
5 {
6 "prob": 0.998619,
7 "label": "neutral"
8 },
9 {
10 "prob": 0.00138141,
11 "label": "pessimistic"
12 },
13 ]
14}
新闻摘要接口
自动抽取新闻文本中的关键信息,进而生成指定长度的新闻摘要
1public void sample(AipNlp client) {
2 String content = "麻省理工学院的研究团队为无人机在仓库中使用RFID技术进行库存查找等工作,创造了一种...";
3 int maxSummaryLen = 300;
4
5 // 传入可选参数调用接口
6 HashMap<String, Object> options = new HashMap<String, Object>();
7 options.put("title", "标题");
8
9 // 新闻摘要接口
10 JSONObject res = client.newsSummary(content, maxSummaryLen, options);
11 System.out.println(res.toString(2));
12
13}
新闻摘要接口 请求参数详情
参数名称 | 是否必选 | 类型 | 说明 |
---|---|---|---|
content | 是 | String | 字符串(限3000字符数以内)字符串仅支持GBK编码,长度需小于3000字符数(即6000字节),请输入前确认字符数没有超限,若字符数超长会返回错误。正文中如果包含段落信息,请使用"\n"分隔,段落信息算法中有重要的作用,请尽量保留 |
max_summary_len | 是 | int | 此数值将作为摘要结果的最大长度。例如:原文长度1000字,本参数设置为150,则摘要结果的最大长度是150字;推荐最优区间:200-500字 |
title | 否 | String | 字符串(限200字符数)字符串仅支持GBK编码,长度需小于200字符数(即400字节),请输入前确认字符数没有超限,若字符数超长会返回错误。标题在算法中具有重要的作用,若文章确无标题,输入参数的“标题”字段为空即可 |
新闻摘要接口 返回数据参数详情
参数 | 说明 | 描述 |
---|---|---|
log_id | uint64 | 请求唯一标识码 |
summary | string | 摘要结果 |
新闻摘要接口 返回示例
1{
2 "log_id": 4258005459150262970,
3 "summary": "麻省理工学院的研究团队为无人机在仓库中使用RFID技术进行库存查找等工作,创造了一种聪明的新方式。使用RFID标签更换仓库中的条形码,将帮助提升自动化并提高库存管理的准确性。几家公司已经解决了无人机读取RFID的技术问题。麻省理工学院的新解决方案,名为Rfly,允许无人机阅读RFID标签,而不用捆绑巨型读卡器。无人机接收从远程RFID读取器发送的信号,然后转发它读取附近的标签。"
4}
地址识别接口
针对快递、电商行业中客户在线提交的大量非结构化地址单据,该接口可以帮助精准提取快递填单文本中的姓名、电话、地址信息,通过自然语言处理辅助地址识别做自动补充和纠正,生成标准规范的结构化信息,大幅提升企业处理单据的效率。
1public void sample(AipNlp client) {
2 String text = "上海市浦东新区纳贤路701号百度上海研发中心 F4A000 张三";
3
4 // 传入可选参数调用接口
5 HashMap<String, Object> options = new HashMap<String, Object>();
6
7 // 地址识别接口
8 JSONObject res = client.address(text, options);
9 System.out.println(res.toString(2));
10
11}
地址识别接口 请求参数详情
参数名称 | 是否必选 | 类型 | 说明 |
---|---|---|---|
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 | 电话号码,如果出现多个则按顺序输出 |
地址识别接口 返回示例
1{
2 "province": "上海市",
3 "city": "上海市",
4 "province_code": "310000",
5 "log_id": 1420038644986026316,
6 "text": "上海市浦东新区纳贤路701号百度上海研发中心 F4A000 张三",
7 "town": "张江镇",
8 "phonenum": "",
9 "detail": "纳贤路701号百度上海研发中心F4A000",
10 "county": "浦东新区",
11 "person": "张三",
12 "town_code": "310115125",
13 "county_code": "310115",
14 "city_code": "310100"
15}
错误信息
错误返回格式
若请求错误,服务器将返回的JSON文本包含以下参数:
- error_code:错误码。
- error_msg:错误描述信息,帮助理解和解决发生的错误。
错误码
SDK本地检测参数返回的错误码:
error_code | error_msg | 备注 |
---|---|---|
SDK100 | image size error | 图片大小超限 |
SDK101 | image length error | 图片边长不符合要求 |
SDK102 | read image file error | 读取图片文件错误 |
SDK108 | connection or read data time out | 连接超时或读取数据超时 |
SDK109 | unsupported image format | 不支持的图片格式 |
服务端返回的错误码
错误码 | 错误信息 | 描述 |
---|---|---|
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暂未收录,无法比对相似度 |