阿里巴巴人工智能实验室在2018云栖大会上发布了AliGenie人工智能系统,这是面向软硬件厂商和开发者的开放式平台,将ASR语音识别、NLP自然语言处理、TTS语音合成等核心技术能力对外共享。本文详细介绍如何使用Java开发天猫精灵X1的自定义技能,从AliGenie开发者平台注册、技能创建…

AliGenie

一、常见产品

  1. 阿尔法狗AlphaGo

AlphaGo结合了三大核心技术:先进的搜索算法、机器学习算法(即强化学习),以及深度神经网络

  1. 银行大堂经理

  2. 小米-小爱

二、天猫精灵

1、家庭智能助理

家庭的智能设备语音遥控器,可以操作空气净化器、扫地机器人、摄像头等智能设备。

2、娱乐&购物

拥有音乐、电台、有声书、英语学习等功能,还可以通过语音指令让天猫精灵查询商品价格、加入购物车、付款、查询订单、跟踪快递等购物功能。

三、实现方式

自然语言 - DIS结构 + Skil技能回复

AliGenie

四、核心概念

1。人工智能

(1)人工智能的目标

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
-    推理
- 自动学习&调度
- 机器学习
- 自然语言处理
- 计算机视觉
- 机器人
- 通用智能
`(2)人工智能三大阶段```html
阶段 1——机器学习:智能系统使用一系列算法从经验中进行学习。
阶段 2——机器智能:机器使用的一系列从经验中进行学习的高级算法,例如深度神经网络。人工智能目前处于此阶段。
阶段 3——机器意识:不需要外部数据就能从经验中自学习。
`(3)人工智能的类型```html
ANI(狭义人工智能):它包含基础的、角色型任务,比如由 Siri、Alexa 这样的聊天机器人、个人助手完成的任务。
AGI(通用人工智能):通用人工智能包含人类水平的任务,它涉及到机器的持续学习。
ASI(强人工智能):强人工智能指代比人类更聪明的机器。
  1. NLP && NLU && NLG

(1)自然语言处理(NLP)是指机器理解并解释人类paralyzes写作、说话方式的能力。

NLP 的目标是让计算机/机器在理解语言上像人类一样智能。最终目标是弥补人类交流(自然语言)和计算机理解(机器语

言)之间的差距。NLP 的机制涉及两个流程: 自然语言理解、自然语言生成

NLP 中理解语义分析的方法:

分布式:它利用机器学习和深度学习的大规模统计策略。
框架式:句法不同,但语义相同的句子在数据结构(帧)中被表示为程式化情景。
理论式:这种方法基于的思路是,句子指代的真正的词结合句子的部分内容可表达全部含义。
交互式(学习):它涉及到语用方法,在交互式学习环境中用户教计算机一步一步学习语言。

1
2
3
4
5
6
7
8
9
10
11
12
13
14

(2)自然语言理解(NLU) 是要理解给定文本的含义。

(3)自然语言生成(NLG) 是从结构化数据中以可读地方式自动生成文本的过程。

自然语言生成可被分为三个阶段:

文本规划:完成结构化数据中基础内容的规划。
语句规划:从结构化数据中组合语句,来表达信息流。
实现:产生语法通顺的语句来表达文本。
`(4)深度学习的三项能力```html
可表达性:这一能力描述了机器如何能近似通用函数。
可训练性:深度学习系统学习问题的速度与能力。
可泛化性:在未训练过的数据上,机器做预测的能力。

NLP 中深度学习的常见任务

AliGenie

  1. DIS(Domain+Intent+Solt)

自然语言理解(NLU)完成后产出领域、意图、参数、上下文,后续就需要拿到这些信息做具体的业务逻辑处理。

AliGenie

例句:今天杭州天气怎么样?

(1)应用(Bot),代替人工作的机器程序,相当于对应某款产品,比如:天猫精灵X1

(2)领域(Domain),如同社会行业一样,划分不同领域,通过领域模型识别,比如:天气领域

(3)意图(Intent),解析出用户语音表达的具体目的,比如:天气查询

(4)实体(Entity),解析出用户语音里可能包含的某些特定词组,比如:时间、地区

(5)参数(Solt),解析出用户语音里形容的某些属性参数,比如:今天、杭州

(6)上下文,多次问答,获取每次的用户表达的确定含义,比如:是否查询天气

  1. DM场景

(1)简易问答场景:在bot内部配置的问答对

(2)用户自定义问答场景:用户在app里面设置好的回答语句

(3)事件场景:和用户按键结合的场景,这种场景通过按键信息,可以直接获取用户的意图

(4)是否唤醒词场景:

1)自定义技能(唤醒词)

2)不需要唤醒词:SFIC类型、NLU_GA类型

五、自定义技能详细步骤

5.1 申请加入平台

  1. 访问AliGenie开放平台

    1
    - 访问 [AliGenie开放平台](https://open.bot.tmall.com/)
    • 使用淘宝账号登录
  2. 创建开发者账号

    • 填写开发者信息
    • 完成实名认证
    • 等待审核通过(通常1-3个工作日)
  3. 创建应用(Bot)

    • 登录后,进入”我的应用”
    • 点击”创建应用”
    • 填写应用基本信息:
      • 应用名称
      • 应用描述
      • 应用图标
      • 应用类型(自定义技能)

5.2 新建技能

  1. 进入技能管理

    • 在应用详情页,选择”技能管理”
    • 点击”新建技能”
  2. 配置技能基本信息

    • 技能名称:如”天气查询”
    • 技能描述:描述技能的功能
    • 唤醒词:用户唤醒技能的关键词
    • 技能类型:选择技能类型(如查询类、控制类等)
  3. 设置技能权限

    • 选择技能需要的权限
    • 如需要用户位置信息、设备控制权限等

5.3 创建意图(Intent)

意图是用户想要执行的操作,需要定义意图和对应的槽位(Slot)。

1
创建意图步骤:
  1. 定义意图名称

    • 如:QueryWeather(查询天气)
    • 意图名称应该清晰表达用户意图
  2. 添加用户说法(Utterance)

    • 添加用户可能说的话,如:
      • “今天天气怎么样”
      • “查询天气”
      • “天气如何”
      • “今天会下雨吗”
    • 系统会根据这些说法进行训练
  3. 定义槽位(Slot)

    • 槽位是从用户话语中提取的关键信息
    • 例如天气查询需要:
      • city(城市):从用户话语中提取城市名称
      • date(日期):提取查询的日期
    • 为每个槽位定义:
      • 槽位名称
      • 槽位类型(实体类型)
      • 是否必填
      • 默认值
  4. 配置实体(Entity)

    • 定义槽位对应的实体值
    • 例如城市实体:
      • 北京
      • 上海
      • 杭州
      • 深圳
    • 可以添加同义词,如”帝都”对应”北京”
1
示例配置:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{
"intent": "QueryWeather",
"utterances": [
"今天{city}天气怎么样",
"查询{city}的天气",
"{city}今天会下雨吗",
"明天{city}天气如何"
],
"slots": [
{
"name": "city",
"type": "CITY",
"required": true,
"defaultValue": "杭州"
},
{
"name": "date",
"type": "DATE",
"required": false,
"defaultValue": "今天"
}
]
}

5.4 配置服务端接口

  1. 创建服务端接口

    • 在技能配置中,设置服务端URL
    • 接口需要处理AliGenie的请求格式
  2. 实现接口逻辑

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
@RestController
@RequestMapping("/aligenie")
public class AliGenieController {

@PostMapping("/skill")
public Response handleSkill(@RequestBody Request request) {
// 解析请求
String intent = request.getIntent().getName();
Map<String, String> slots = request.getIntent().getSlots();

// 根据意图处理业务逻辑
if ("QueryWeather".equals(intent)) {
String city = slots.get("city");
String date = slots.getOrDefault("date", "今天");

// 调用天气API
WeatherInfo weather = weatherService.getWeather(city, date);

// 构建响应
Response response = new Response();
response.setOutputSpeech("今天" + city + "的天气是" + weather.getDescription());
return response;
}

// 其他意图处理...
return new Response();
}
`请求格式示例:```json
{
"version": "1.0",
"session": {
"sessionId": "xxx",
"newSession": true
},
"request": {
"type": "IntentRequest",
"intent": {
"name": "QueryWeather",
"slots": {
"city": {
"value": "杭州"
},
"date": {
"value": "今天"
}
`响应格式示例:```json
{
"response": {
"outputSpeech": {
"type": "PlainText",
"text": "今天杭州的天气是晴天,温度25度"
},
"shouldEndSession": true
}

5.5 测试验证

  1. 在线测试

    • 在AliGenie平台选择”在线测试”
    • 输入测试话语,查看意图识别结果
    • 验证槽位提取是否正确
  2. 真机测试

    • 在天猫精灵设备上测试
    • 说出唤醒词和指令
    • 验证技能响应是否正确
  3. 调试技巧

    • 查看平台日志,了解请求详情
    • 使用Postman测试接口
    • 检查服务端日志

5.6 发布上线

  1. 提交审核

    • 完成技能开发和测试后
    • 提交技能审核
    • 填写技能说明和使用指南
  2. 审核通过

    • 等待平台审核(通常3-7个工作日)
    • 根据审核意见修改问题
  3. 正式发布

    • 审核通过后,技能正式上线
    • 用户可以通过天猫精灵使用你的技能

5.7 技能优化建议

  1. 提升识别准确率

    • 增加更多用户说法样本
    • 优化槽位定义和实体值
    • 处理同义词和口语化表达
  2. 优化用户体验

    • 提供清晰的语音回复
    • 处理异常情况(如网络错误)
    • 支持多轮对话
  3. 性能优化

    • 接口响应时间控制在2秒以内
    • 使用缓存减少API调用
    • 异步处理耗时操作
  4. 数据分析

    • 关注技能使用数据
    • 分析用户常用意图
    • 根据数据优化技能
1
1、[自然语言处理(NLP)基础理解](https://www.jianshu.com/p/b627cb31aab7)

本文标题: Java版天猫精灵X1AliGenie

发布时间: 2019年07月24日 00:00

最后更新: 2025年12月30日 08:54

原始链接: https://haoxiang.eu.org/8503db80/

版权声明: 本文著作权归作者所有,均采用CC BY-NC-SA 4.0许可协议,转载请注明出处!

× 喜欢就赞赏一下呗!
打赏二维码