倾听,是一项重要的技能,随着语音识别的日渐成熟,车机的理解能力,将成为人机交互的关键,基于倾听和理解,驾乘者与车机的交流,将会充满温度,彼此契合,智慧的倾听方式也会赋予,未来的每一程,全新的智能驾乘体验,那么,倾听的智慧,从何而来?
NLP分类模型:层层深入,语言数字化分类
NLP(自然语言处理)分类模型用来识别用户意图,比如用户说“我要听刘德华的忘情水”, 意图是查询歌手“刘德华”的《忘情水》这首歌。预先给这样的意图编号,比如编号为1代表“歌手歌名查询”。

输入层(one-hot转换层):
用户输入语句的字符串,变成一个个字的索引号,一句话就变成一个索引号的数组。数组元素的值是整型数值,代表这个字的索引。
字嵌入层(字向量):
字嵌入就是用一个多维的浮点数据表示每个字的意思,每个字可以用128个元素的一维数组表示。输入层输出的字索引数组经过字嵌入层变成一个个多维字向量。
卷积层:
卷积层的作用是忽略大部分特征,放大、提取某些特征。卷积层的输入是前面字嵌入层的输出矩阵,输出也是一个矩阵,矩阵大小和卷积核的大小有关,每个尺寸的卷积核有多个,比如128个。
池化层:
把卷积核提取出的特征中重要的特性忽略掉,只看最重要的特征,手段就是“下采样”。所谓“下采样”就是找出矩阵中最大的值,用该最大值替代整个矩阵。每一个卷积核后面接一个池化层,池化层的输出就是一个代表该卷积结果矩阵中的最大值。
融合层:
多个池化层的输出的一个个数据,组合起来组成一个大的一维数组,比如128个3字节卷积池化、128个4字节卷积池化、128个5字节卷积池化,得到的384个数值,组成一个一维数组,数组中每个元素都是一个浮点数。
全连接层:
全连接层接收来自融合层的输出,它是一个384个元素的一维数组,经过全连接层以后变成n个浮点值,n等于预设的分类类别。一般还要做归一化处理,归一化的意思是做等比例缩小,使得所有n个值之和为1。
输出层:
接收连接层输出的n个值,相当于一个有n个元素的一维数组,数组每个元素的下标代表一个分类的分类号, 输出层把分类号转成用户可识别的意图,分类类别号和类别名字是用户预先定义好的。
NER识别模型:井然有序,语义精准解码识别
NLP中NER是用来识别句子中的词槽(词槽类型,位置)的,比如“给我放一首刘德华的忘情水”,NER处理的结果和NER标签(tag)的定义如下:
基于双向LSTM+CRF的NER模型结构,由下到上分别是one-hot转换层(one hot index)、字嵌入(字向量)层、双向LSTM层(BiLstm)、全连接层(BiLstm output)、维特比解码层(CRF Viterbi decode)。

NER网络(BiLstm+CRF)
输入层(one-hot转换层):
用户输入语句的字符串,变成一个个字的索引号,一句话就变成一个索引号的数组。数组元素的值是整型数值,代表这个字的索引。
字嵌入层(字向量):
字嵌入就是用一个多维的浮点数据表示每个字的意思,每个字可以用128个元素的一维数组表示。输入层输出的字索引数组经过字嵌入层变成一个个多维字向量。
双向LSTM层:
双向LSTM层输入是前面字嵌入层的输出,它是一个70*128的矩阵,输出也是一个矩阵,大小是[2*70, HIDDENUNIT], 其中70是指70个字,正向LSTM加反向LSTM就是140, HIDDENUNIT是预设的长度,比如128。矩阵的每个元素同样是一个浮点数。
全连接层:
双向LSTM输出的矩阵[2*70, HIDDENUNIT]经过全连接层变成一个新的矩阵[70, OUTPUTDIM], 其中70代表最大70个字,OUTPUTDIM代表NER标签数量,每个字产生OUTPUTDIM个可能的标签,每个标签用一个浮点数表示,数值越大表示可能性越大。
维特比解码(Viterbi decode):
前面全连接层输出了每个字的标签值,矩阵格式是[70, OUTPUTDIM],最终每个字只能有一个标签,输出格式是70个元素的一维数组。矩阵到一维数组的转换就是维特比解码的功能,上图2中的紫色线就是Viterbi解码选择的最佳路径。
虽然,还有许多正在尝试的新方法,但分类和命名实体识别,是语义理解的基础,正确的识别交互,也是ECARX理解用户的第一步,更具人性化、智能化的,未来驾驶方式
将由ECARX与你共同开启