对话知识抽取服务适用于客服-消费者在线聊天场景,从对话内容中抽取出客服问-客户答、客户问-客服答等客服话术和用户问题,可用于后续的用户热点问题分析或构建客服话术库,优化客服机器人。
本服务由NLP自学习平台提供,直接调用API即可使用。
服务开通与资源包购买
使用前,请确认是否已经开通服务,开通后可购买资源包。
服务调用与调试
模型调用文档参考:模型调用
SDK示例文档参考:SDK示例
调试
您可以在OpenAPI开发者门户中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI开发者门户可以自动生成SDK代码示例。
通过环境变量配置访问凭证(AKSK)
说明:
阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
强烈建议不要把AccessKey和AccessKeySecret保存到代码里,会存在密钥泄漏风险,在此提供通过配置环境变量的方式来保存和访问aksk
Linux和macOS系统配置方法
export NLP_AK_ENV=<access_key_id> export NLP_SK_ENV=<access_key_secret>其中<access_key_id>替换为已准备好的AccessKey ID,<access_key_secret>替换为AccessKey Secret,AccessKey ID和AccessKey Secret的获取方式见步骤二:获取账号的AccessKey
Windows系统配置方法
新建环境变量文件,添加环境变量
NLP_AK_ENV和NLP_SK_ENV,并写入已准备好的AccessKey ID和AccessKey Secret。重启Windows系统。
Java代码示例
class MsgDO{
            private String role;
            private String content;
            public MsgDO(String role,String content) {
                this.role = role;
                this.content = content;
            }
            public String getRole() {
                return role;
            }
            public void setRole(String role) {
                this.role = role;
            }
            public String getContent() {
                return content;
            }
            public void setContent(String content) {
                this.content = content;
            }
        }
/**
 * 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
 * 此处以把AccessKey和AccessKeySecret保存在环境变量为例说明。您也可以根据业务需要,保存到配置文件里。
 * 强烈建议不要把AccessKey和AccessKeySecret保存到代码里,会存在密钥泄漏风险
 */
String accessKeyId = System.getenv("NLP_AK_ENV");
String accessKeySecret = System.getenv("NLP_SK_ENV");
DefaultProfile defaultProfile = DefaultProfile.getProfile("cn-hangzhou",accessKeyId,accessKeySecret);
IAcsClient client = new DefaultAcsClient(defaultProfile);
Map<String, Object> obj = new HashMap<String, Object>();
List<MsgDO> msgs = new ArrayList<MsgDO>();
msgs.add(new MsgDO("客服","喂,你好。"));
msgs.add(new MsgDO("客户","喂,你好。"));
msgs.add(new MsgDO("客服","我是菜鸟驿站的服务专员。你有包裹送到菜鸟驿站这边了,请问有空了,方便来拿吗。"));
msgs.add(new MsgDO("客户","哪里的菜鸟驿站。"));
msgs.add(new MsgDO("客服","稍等给您报一下驿站的地址。我们在卢春小区2-16号小区门口诊所隔壁。"));
msgs.add(new MsgDO("客服","地址,待会会短信发给您,您看有空的时候随时来拿可以吗。"));
msgs.add(new MsgDO("客户","嗯。"));
msgs.add(new MsgDO("客户","驿站在哪里呀。"));
msgs.add(new MsgDO("客服","这样,您可以看一下短信中的地址是否方便过来,有问题再联系我好吗。"));
msgs.add(new MsgDO("客户","好。"));
obj.put("msgs",msgs);
RunPreTrainServiceRequest request = new RunPreTrainServiceRequest();
request.setServiceName("NLP-dialog-knowledge");
request.setPredictContent(JSON.toJSONString(obj));
RunPreTrainServiceResponse response = client.getAcsResponse(request);
System.out.println(response.getPredictResult());Python代码示例
# 安装依赖
pip install aliyun-python-sdk-core
pip install aliyun-python-sdk-nlp-automl# -*- coding: utf8 -*-
import json
import os
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.acs_exception.exceptions import ClientException
from aliyunsdkcore.acs_exception.exceptions import ServerException
from aliyunsdknlp_automl.request.v20191111 import RunPreTrainServiceRequest
/**
 * 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
 * 此处以把AccessKey和AccessKeySecret保存在环境变量为例说明。您也可以根据业务需要,保存到配置文件里。
 * 强烈建议不要把AccessKey和AccessKeySecret保存到代码里,会存在密钥泄漏风险
 */
access_key_id = os.environ['NLP_AK_ENV']
access_key_secret = os.environ['NLP_SK_ENV']
# Initialize AcsClient instance
client = AcsClient(
  access_key_id,
  access_key_secret,
  "cn-hangzhou"
);
content = {
    "msgs": [
      {
        "role": "客服",
        "content": "喂,你好。"
      },
      {
        "role": "客户",
        "content": "喂,你好。"
      },
      {
        "role": "客服",
        "content": "我是菜鸟驿站的服务专员。你有包裹送到菜鸟驿站这边了,请问有空了,方便来拿吗。"
      },
      {
        "role": "客户",
        "content": "哪里的菜鸟驿站。"
      },
      {
        "role": "客服",
        "content": "稍等给您报一下驿站的地址。我们在某某小区2-16号小区门口诊所隔壁。"
      },
      {
        "role": "客服",
        "content": "地址,待会会短信发给您,您看有空的时候随时来拿可以吗。"
      },
      {
        "role": "客户",
        "content": "嗯。"
      },
      {
        "role": "客户",
        "content": "驿站在哪里呀。"
      },
      {
        "role": "客服",
        "content": "这样,您可以看一下短信中的地址是否方便过来,有问题再联系我好吗。"
      },
      {
        "role": "客户",
        "content": "你帮我把我的手机到我这里来拿眼镜的那笔。"
      },
      {
        "role": "客服",
        "content": "嗯,好的,您凭短信过来拿包裹就好了,有问题您再联系我们。"
      }
    ]
}
# Initialize a request and set parameters
request = RunPreTrainServiceRequest.RunPreTrainServiceRequest()
request.set_ServiceName('NLP-dialog-knowledge')
request.set_PredictContent(json.dumps(content))
# Print response
response = client.do_action_with_exception(request)
resp_obj = json.loads(response)
predict_result = json.loads(resp_obj['PredictResult'])
print(predict_result)PredictContent内容示例
{
    "msgs": [
      {
        "role": "客服",
        "content": "喂,你好。"
      },
      {
        "role": "客户",
        "content": "喂,你好。"
      },
      {
        "role": "客服",
        "content": "我是菜鸟驿站的服务专员。你有包裹送到菜鸟驿站这边了,请问有空了,方便来拿吗。"
      },
      {
        "role": "客户",
        "content": "哪里的菜鸟驿站。"
      },
      {
        "role": "客服",
        "content": "稍等给您报一下驿站的地址。我们在某某小区2-16号小区门口诊所隔壁。"
      },
      {
        "role": "客服",
        "content": "地址,待会会短信发给您,您看有空的时候随时来拿可以吗。"
      },
      {
        "role": "客户",
        "content": "嗯。"
      },
      {
        "role": "客户",
        "content": "驿站在哪里呀。"
      },
      {
        "role": "客服",
        "content": "这样,您可以看一下短信中的地址是否方便过来,有问题再联系我好吗。"
      },
      {
        "role": "客户",
        "content": "你帮我把我的手机到我这里来拿眼镜的那笔。"
      },
      {
        "role": "客服",
        "content": "嗯,好的,您凭短信过来拿包裹就好了,有问题您再联系我们。"
      }
    ]
}PredictResult内容示例
{
  "code": 1000,
  "data": {
    "cost": "14.822ms",
    "knowledges": [
      {
        "hits": [
          [
            "哪里的菜鸟驿站。",
            "稍等给您报一下驿站的地址。我们在某某小区2-16号小区门口诊所隔壁。"
          ],
          [
            "驿站在哪里呀。",
            "这样,您可以看一下短信中的地址是否方便过来,有问题再联系我好吗。"
          ]
        ],
        "name": "用户问-客服答"
      },
      {
        "hits": [
          [
            "我是菜鸟驿站的服务专员。你有包裹送到菜鸟驿站这边了,请问有空了,方便来拿吗。",
            "哪里的菜鸟驿站。"
          ]
        ],
        "name": "客服问-用户答"
      }
    ]
  },
  "message": "OK",
  "tracerID": "2020-10-30 06:17:55.485426"
}入参说明
参数  | 说明  | 
msgs  | 客服-客户在线聊天过程中的消息列表,不超过20句  | 
role  | 说话人的角色,当前仅客服、客户两种角色  | 
content  | 说话人的说话内容  | 
出参说明
参数  | 说明  | 
knowledges  | 抽取到的知识  | 
name  | 知识类型名称,当前包括客服问-客户答、客户问-客服答两种类型  | 
hits  | 命中当前知识类型的具体内容列表,例如name=“客服问-客户答”时,hit是为对话中所有命中该模式的对话内容列表,每个元素都是“客服问内容-客户答内容”  |