意图理解
功能介绍
针对天气类、报时、新闻类、笑话类、翻译类、提醒类、闹钟类、音乐类8个领域进行意图理解。意图理解包括对用户的问题,陈述进行领域识别以及对对应领域所包含的实体进行抽取。
具体Endpoint请参见终端节点。
调用华为云NLP服务会产生费用,本API支持使用基础套餐包,购买时请在自然语言处理价格计算器中查看基础套餐包和领域套餐包支持的API范围。
本API调用限制为20次/秒。
调试
您可以在API Explorer中调试该接口。
前提条件
在使用本API之前,需要您完成服务申请和认证鉴权,具体操作流程请参见申请服务和认证鉴权章节。
用户首次使用需要先申请开通。服务只需要开通一次即可,后面使用时无需再次申请。如未开通服务,调用服务时会提示ModelArts.4204报错,请在调用服务前先进入控制台开通服务,并注意开通服务区域与调用服务的区域保持一致。
URI
- URI格式
POST /v1/{project_id}/nlu/semantic-parser
- 参数说明
参数名 |
必选 |
说明 |
---|---|---|
project_id |
是 |
项目ID。获取方法请参见获取项目ID。 |
请求消息
请求参数如表2所示。
响应消息
参数名 |
参数类型 |
说明 |
---|---|---|
result |
Result object |
调用成功时的返回意图信息。 调用失败时无此字段。 请参见表4。 |
error_code |
String |
调用失败时的错误码。具体参见错误码。 调用成功时无此字段。 |
error_msg |
String |
调用失败时的错误信息。 调用成功时无此字段。 |
参数名 |
参数类型 |
说明 |
---|---|---|
text |
String |
返回待分析文本。 |
label |
String |
待分析文本的意图标签。标签共有以下9类: weather:天气,time:报时,news:新闻,joke:笑话,translation:翻译,notification:提醒,alarm:闹钟,music:音乐,others:其它。 |
confidence |
Float |
标签label的置信度。 |
slots |
Array of slot |
slot数据结构,请参见表5。 |
参数名 |
参数类型 |
说明 |
---|---|---|
word |
String |
实体文本。 |
tag |
String |
实体类型。对于每个意图类别所支持的实体类型分别为: weather:date(日期),time(时间),location(位置) time:location(位置),timezone(时区) news:genre(风格) joke:genre(风格) translation:content(内容) notification:content(内容),date(日期),time(时间),singer(歌手) alarm:date(日期),time:(时间) music:singer(歌手),song(歌曲),content(内容) |
offset |
Integer |
实体文本在待分析文本中的起始位置。 |
length |
Integer |
实体文本长度。 |
normalized_word |
String |
同义词或者其他标准表达的词,默认为原始的word。 |
请求示例
- 请求示例(意图理解)
POST https://{endpoint}/v1/{project_id}/nlu/semantic-parser Request Header: Content-Type: application/json X-Auth-Token:MIINRwYJKoZIhvcNAQcCoIINODCCDTQCAQExDTALBglghkgBZQMEAgEwgguVBgkqhkiG... Request Body: { "text":"来一首周杰伦的青花瓷", "lang":"zh" }
- Python3语言请求代码示例(意图理解)
# -*- coding: utf-8 -*- # 此demo仅供测试使用,建议使用sdk。需提前安装requests,执行pip install requests import requests import json def nlp_demo(): url = 'https://{endpoint}/v1/{project_id}/nlu/semantic-parser' # endpoint和project_id需替换 token = '用户对应region的token' header = { 'Content-Type': 'application/json', 'X-Auth-Token': token } body = { 'text': '来一首周杰伦的青花瓷', 'lang': 'zh' } resp = requests.post(url, data=json.dumps(body), headers=header) print(resp.json()) if __name__ == '__main__': nlp_demo()
- Java语言请求代码示例(意图理解)
import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.HttpURLConnection; import java.net.URL; /** * 此demo仅供测试使用,建议使用sdk */ public class NLPDemo { public void nlpDemo() { try { //endpoint和projectId需要替换成实际信息。 URL url = new URL("https://{endpoint}/v1/{project_id}/nlu/semantic-parser"); String token = "对应region的token"; HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("POST"); connection.setDoInput(true); connection.setDoOutput(true); connection.addRequestProperty("Content-Type", "application/json"); connection.addRequestProperty("X-Auth-Token", token); //输入参数 String text = "来一首周杰伦的青花瓷"; String body = "{\"text\":\"" + text + "\",\"lang\":\"zh\"}"; OutputStreamWriter osw = new OutputStreamWriter(connection.getOutputStream(), "UTF-8"); osw.append(body); osw.flush(); InputStream is = connection.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8")); while (br.ready()) { System.out.println(br.readLine()); } } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { NLPDemo nlpDemo = new NLPDemo(); nlpDemo.nlpDemo(); } }
响应示例
- 成功响应示例
{ "result": { "confidence": 1, "label": "music", "slots": [ { "length": 3, "normalized_word": "周杰伦", "offset": 3, "tag": "singer", "word": "周杰伦" }, { "length": 3, "normalized_word": "青花瓷", "offset": 7, "tag": "song", "word": "青花瓷" } ], "text": "来一首周杰伦的青花瓷" } }
- 失败响应示例
{ "error_code": "NLP.0101", "error_msg": "Authentication failed. Please verify the token" }
状态码
状态码请参见状态码。
错误码
错误码请参见错误码。