本专栏暂未更新完,特惠59.90元,更新完以后将恢复原价
本专栏已经迁移到浪皮坞,请前往新地址查看
专栏目录
- (一)项目概述
- (二)什么是自然语言理解
- (三)意图识别:规则模式
- (四)意图识别:神经网络-问题分析篇
- (五)意图识别:神经网络-代码实现篇
- (六)关键信息抽取:规则模式
- (七)关键信息抽取:jieba提取
- (八)关键信息抽取:神经网络
- (九)自然语言理解模块实现
- (十)服务调用分发
- (十一)MQTT服务搭建
- (十二)硬件采购指南
- 更新中
系统的功能点主要为语音控制家庭开关,不过为了系统不那么单调,也顺便附加上了一些其他功能,比如新闻查询、天气查询、闲聊等,主要通过这些案例熟悉如何自己构建一个个人版的家庭助手,涉及内容不仅仅是智能家居设计,还囊括了智能聊天机器人
本专栏以实战为主,手把手实现一个个人智能家居助手,遥控家里的设备
-
主要特点:
1.手机或电脑远程遥控
2.自然语言识别
3.多轮对话管理
-
基础要求:
1.有Python或Java基础
2.了解深度学习的相关知识
-
更新频率:
一周1-3篇
1.效果图
Talk is cheap,Show me your result.
好的,这就来!
2.特别说明
由于本人前端知识菜鸡,所以在页面的交互上不会涉及太多,能展示就行
1.结构图
1.1 局域网通信
如果只考虑局域网通信,那么可以简单一点,在同一个网络的前提下,进行socket编程或者web编程等,如下图:
1.2 远程通信
如果要求高一些,实现远程通信,那么可以采用云端代理的模式,如下图:
也就是找一台云服务器,让手机(或其他客户端)和家庭设备都能够连接,完成信息的公网传输,本项目采用该模式,详细架构如下:
2.结构说明
首先便是客户端,客户端即常人可操作的软件设备,客户端将文字指令发送给中央控制系统;
然后中央控制系统对文字指令进行自然语言的理解,也就是意图识别和信息提取,并根据意图进行对应的操作,如开关控制、天气查询灯;
对于家庭开关控制,将信息提取结果发送到云端消息队列,云端消息队列可以理解为家庭开关设备的接口,所有监听该消息队列的设备都可以得到控制;
为啥要整这么复杂,局域网通信不行吗?
行的!这么设计出于两个目的:1、远程控制;2、解耦合,便于后续功能扩展。各模块详细功能如下:
2.1 客户端
该模块主要负责:
1、使用者语音指令的接收和文字转换
2、展示开关的执行结果
3、与中央控制系统交互
2.2 中央控制系统
中央控制系统,是该系统最为核心的部分,该模块主要负责:
1、提供通用接口服务,确保各种客户端的灵活使用,而不局限与手机或者电脑设备等
2、提供对话意图识别,如将“打开卧室的灯”识别为“开灯”
3、提供关键信息提取,如将“打开卧室的灯”里面的开灯类型识别为“卧室”
4、服务调用功能,考虑到扩展性,不应单一地只进行开关灯服务,应考虑其他服务调用的设计,这样,需要增加一项新功能时,只需要配置新的意图,编写新的服务接口即可,而不需要更改其他代码
5、指令发送功能,对开关灯的意图进行解析完以后,需要将指令发送到云端的消息队列中
2.3 家庭设备
家庭设备需要一个可以联网的模块,能够监听消息消息队列的指令,本项目使用esp8266
1、客户端技能:
android开发、ios开发、web开发、桌面客户端开发任意一个即可
2、中央控制器系统技能
- 任意一门编程语言的服务端(socket、websocket、web任一)开发即可,本文使用python,也会提到一些Java方面的使用
- 熟悉消息队列开发,本文使用Mosquitto
- 自然语言处理相关技术
- 深度学习相关技术,要求不高的童鞋可使用规则处理,不需要深度学习技术!本项目使用的TF2.0
3、 家庭设备技能
- 会接线路,确保不会被电,确保不会被电,确保不会被电!重要事说三遍
- esp8266 芯片开发(可树莓派,不过树莓派成本有点贵,得要好几百,esp8266也就10来块钱)