具体实施方式
为让本发明的上述目的、特征和优点能更明显易懂,以下结合附图对本发明的具体实施方式作详细说明。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是本发明还可以采用其它不同于在此描述的其它方式来实施,因此本发明不受下面公开的具体实施例的限制。
如本申请和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其他的步骤或元素。
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本申请的范围。同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
此外,尽管本申请中所使用的术语是从公知公用的术语中选择的,但是本申请说明书中所提及的一些术语可能是申请人按他或她的判断来选择的,其详细含义在本文的描述的相关部分中说明。此外,要求不仅仅通过所使用的实际术语,而是还要通过每个术语所蕴含的意义来理解本申请。
本申请中使用了流程图用来说明根据本申请的实施例的系统所执行的操作。应当理解的是,前面或下面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各种步骤。同时,或将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
本发明提出一种基于深度学习模型的语义分析方法,可以用于车机系统涉及语音对话的场景,根据该方法对用户的语音进行分析,可以有效地获得用户的意图,以指示车机执行相应的任务,在面对不常用的语句词汇时,通过修改新词向量,为该新词向量增加特征标记并输入到深度学习模型中,以获得准确的语义分析结果。该方法具有效率高、成本低、可解释性强的优点。
图1是本发明一实施例的基于深度学习模型的语义分析方法的示例性流程示意图。如图1所示,本发明实施例的语义分析包括如下步骤:
步骤S110:从深度学习模型的训练文本数据中提取字向量;
步骤S120:获取经训练的固定词向量;
步骤S130:根据自定义规则修改固定词向量,包括为至少一个固定词向量增加至少一个特征标记形成特征词向量,每个特征标记用于标记固定词向量的一种分类;
步骤S140:设置字向量的维度等于特征词向量的维度;
步骤S150:采用字向量和特征词向量训练深度学习模型获得预测模型,其中,设置特征词向量在训练过程中不可被修改;
步骤S160:根据自定义规则修改预输入至预测模型的新词向量,形成新特征词向量,并将新特征词向量输入预测模型。
以下结合图2、3对上述的步骤S110-S160进行说明。
在步骤S110中,从深度学习模型的训练文本数据中提取字向量。
本发明对步骤S110中所采用的深度学习模型的具体实施方式不做限制,可以采用本领域的任意类型的深度学习模型。
根据应用场景的不同,可以为该深度学习模型提供不同类型的训练文本数据。在车辆的人机对话中,涉及到音乐、导航、命令等各种场景,除通用的文本数据之外,还应包括这些场景相关的文本数据。
在本发明实施例中,训练文本数据包括人机对话中的对话语料,对话语料包括句子,要从这些句子中提取字向量,具体步骤如下:
步骤S111:对句子进行分字处理,通过随机初始化获得字向量。
在该步骤中,可以将获取到的句子通过字之间的空白符分割成单个字,对得到的字基于随机初始化,得到字向量。
在步骤S120中,获取经训练的固定词向量。
在该步骤中,经训练的固定词向量可以从公开发布的词向量集合中获得。在一些实施例中,获取对话语料中的句子,将获取到的句子通过分词工具进行分词处理,分词工具可以是jieba、snowNLP、thulac等,对此不作限制。经过分词后,再通过word2vec、fastText或者Glove等词向量工具将词训练成词向量。Word2Vec是从大量文本语料中以无监督方式学习语义知识的模型,可应用于自然语言处理中。
在步骤S130中,根据自定义规则修改固定词向量,包括为至少一个固定词向量增加至少一个特征标记形成特征词向量,每个特征标记用于标记固定词向量的一种分类。
在本步骤中,该特征标记可以是人工定义的特征,表示人类的知识(如同义词、反义词、词的分类等),用于对固定词向量进行分类。例如,为固定词向量A增加一个特征标记A1,形成特征词向量[A,A1],其中A1用于标记该固定词向量的命令类型,其中,用0表示没有此类分类,1表示音乐,2表示导航,3表示空调等。若特征词向量为[A,2],则表示该固定词向量A所属的命令类型为导航命令。根据此例,可以为一个固定词向量设置多个特征标记,以标记其在不同分类中的类型。
图2是本发明一实施例的语义分析方法中根据自定义规则修改固定词向量的示例性流程示意图。参考图2所示,该实施例的步骤包括:
步骤S131:为每个固定词向量增加预定数量的新增维度,每个新增维度对应一个特征标记。
在本步骤中,记固定词向量的原始维度为i,记新增维度的预定数量为j,j的值可按需设置。举例说明,设定“爱我中华”的固定词向量的维度i为6,固定词向量表示为(0,0,1,0,0,1),人工增加预定新增维度为j为2,每个新增维度对应一个特征标记。例如,其中第一个新增的维度对应的特征标记为该固定词向量所属的命令类别,可以为多种不同的命令类别设置不同的向量值,例如1表示音乐,2表示导航;第二个新增的维度对应的特征标记为歌曲的类别,例如,1表示流行音乐,2表示经典音乐,3表示纯音乐。
步骤S132:设置每个新增维度的初始值为0。
继续上述举例,人工增加的预定新增维度j为2,设置每个新增维度的初始值为0,则新增维度的向量可表示为(0,0)。经过本步骤,“爱我中华”对应的固定词向量被修改为(0,0,1,0,0,1,0,0)。
步骤S133:为每个固定词向量设置每个新增维度的特征值,特征值对应于固定词向量根据特征标记的分类结果。
继续上述举例,通过人类知识,我们知道“爱我中华”是一首歌曲,因此其所属的命令类别为“音乐”,歌曲的类别属于“经典音乐”,则“爱我中华”新增维度可表示为(1,2),将固定词向量和新增维度拼接得到特征词向量,特征词向量的维度为Dw:
Dw=i+j
所以最终得到的特征词向量为(0,0,1,0,0,1,1,2),特征词向量的维度为8。如果一个词在新增维度上无此特征或者不确定是否有此特征则用0来默认表示。例如“全聚德”不是歌曲,也没有歌曲类别,则为“全聚德”对应的固定词向量新增维度为(0,0)。
在本发明一实施例中,特征词向量的维度是2的N次方,N为正整数。
在实际应用中,因为计算机是二进制运行的,所以固定词向量的维度D一般设为2的N次方,N为正整数。在本发明中对固定词向量进行了修改,使修改之后的特征词向量的维度DW仍然是2的N次方,例如128、256等。具体的维度数量可以根据实际效果调整,本发明对此不作限制。
在步骤S140中,设置字向量的维度等于特征词向量的维度。
在传统的深度学习模型的训练过程中,通常只训练词向量或字向量中的一种。本发明基于深度学习模型提出联合经训练字向量和词向量一起参与训练过程。为了方便模型的后续运算处理,在本步骤设置字向量的维度Dz等于特征词向量的维度Dw,即
Dz=Dw
在本发明一实施例中,设置字向量的维度等于特征词向量的维度的步骤之后还包括:堆叠字向量和特征词向量,使字向量和特征词向量合并为一个训练数据集。字向量和词向量堆叠指将字向量和词向量合并在一个矩阵中,将字向量和词向量合并作为句子的向量表示,句子向量的维度为Ds,可作为模型的一个训练数据集,使
Ds=Dz=Dw
在步骤S150中,采用字向量和特征词向量训练深度学习模型获得预测模型,其中,设置特征词向量在训练过程中不可被修改。
本发明在步骤S130中对固定词向量进行了修改,获得了包含人工定义特征的特征词向量。该特征词向量中已经结合有人类知识,对于该固定词向量来说,该人类知识是确切的,无需调整的,因此,在后续模型训练和学习过程中不希望该特征词向量本身发生变化。本步骤在模型训练过程中,将特征词向量设置为不可被修改,而与该特征词向量相关的超参数是可以在训练的过程中发生变化的。
在一些实施例中,设置特征词向量在训练过程中不可被修改的步骤包括:使特征词向量在训练过程中不参与反向传播。
在本发明一实施例中,深度学习模型可以是意图识别模型。例如TextCNN模型。
图3是本发明一实施例的深度学习模型的训练过程示意图。参考图3所示,其中,输入数据310包括从训练文本数据中提取的字向量和根据自定义规则修改之后的特征词向量。
在输入层320将字向量和特征词向量堆叠得到的句子向量矩阵作为模型的训练数据集,输入到深度学习模型中,并且设置在模型训练过程中特征词向量不可修改,字向量可以修改,即在后续监督学习过程中,通过反向传播更新输入层的各个字向量,不更新特征词向量。
在卷积层330利用深度学习模型的卷积核对句子向量矩阵进行卷积操作提取对应的局部特征,卷积核的宽度和特征词向量的维度Dw一样,卷积核的高度,也称为卷积核的尺寸,则是一个可以按需设置的超参数,可以设置多个尺寸的卷积核,以获得不同的局部特征。
在池化层340对卷积后得到的若干个局部特征取最大值,然后拼接在一块,作为本层的输出值。如果卷积核的尺寸为2,3,4,5,每个尺寸有128个kernel,则经过卷积层后会得到4x128个局部特征,经过池化后,会得到4x128个scalar值,拼接在一块,得到最终的结构是512x1的向量。池化层的意义在于激活程度最大的特征。
在全连接层350利用全连接神经网络层和SoftMax层对句子进行分类,具体包括运用公式计算的特征的分数y,然后根据分数选择对应的类别。
y=x*w+b
其中,x是局部特征向量,w是权重,b是偏差。
然后使用随机梯度下降算法对模型参数w和b进行训练,得到预测模型。
在输出层360输出句子的对应的类别,并利用反向传播调整模型的超参数和字向量。
图3所示仅为示例,不用于限制本发明的深度学习模型的具体结构、函数以及训练方法。
在步骤S160中,根据自定义规则修改预输入至预测模型的新词向量,形成新特征词向量,并将新特征词向量输入预测模型。
在预测部分,当预测模型碰到一个新词,该词未在训练文本数据集中出现,通过上述自定义规则,在新词固定向量上增加特征标记,形成新特征词向量,与步骤S130中修改固定词向量的方法相同,在此不再赘述。
增加特征标记相当于给模型传授知识,将包含知识的新特征词向量输入到预测模型中,以使模型做出正确的判断。
例如,模型的目标是判定句子是否是导航,模型中对词有定义是否为地名的特征,假如需要推理的句子为:“带我去豹子”。其中的“豹子”是一个地名。然而在正常情况下,“豹子”并不是一个地名,模型无法将其识别为地名,则模型的判断结果错误。根据本发明的语义分析方法,可以通过自定义规则将“豹子”这个新词标记为地名,获得“豹子”的新特征词向量,使模型获得“豹子”是地名的知识,然后再通过模型来判断该句子是否属于导航。这样的判断结果就为“是导航”。
根据本发明的语义分析方法,通过自定义规则对经训练的固定词向量进行修改,增加了人工定义的特征标记,使知识与数据有机地结合在一起。这样,一方面,通过修改特征标记可以增加或者修改词对应的意义,实现对模型的控制;另一方面,在出现新词时,不需要将知识转换成数据再让模型进行重新训练和学习,效率高、成本低、可解释性强。
本发明还包括一种基于深度学习模型的语义分析装置,包括存储器和处理器。其中,该存储器用于存储可由处理器执行的指令;处理器用于执行该指令以实现前文所述的一种基于深度学习模型的语义分析方法。
图4是本发明一实施例的基于深度学习模型的语义分析装置的系统框图。参考图4所示,该语义分析装置400可包括内部通信总线401、处理器402、只读存储器(ROM)403、随机存取存储器(RAM)404以及通信端口405。当应用在个人计算机上时,该语义分析装置400还可以包括硬盘406。内部通信总线401可以实现该语义分析装置400组件间的数据通信。处理器402可以进行判断和发出提示。在一些实施例中,处理器402可以由一个或多个处理器组成。通信端口405可以实现该语义分析装置400与外部的数据通信。在一些实施例中,该语义分析装置400可以通过通信端口405从网络发送和接受信息及数据。该语义分析装置400还可以包括不同形式的程序储存单元以及数据储存单元,例如硬盘406,只读存储器(ROM)403和随机存取存储器(RAM)404,能够存储计算机处理和/或通信使用的各种数据文件,以及处理器402所执行的可能的程序指令。处理器执行这些指令以实现方法的主要部分。处理器处理的结果通过通信端口传给用户设备,在用户界面上显示。
上述的操作方法可以实施为计算机程序,保存在硬盘406中,并可加载到处理器402中执行,以实施本申请的语义分析方法。
本发明还包括一种存储有计算机程序代码的计算机可读介质,该计算机程序代码在由处理器执行时实现前文所述的基于深度学习模型的语义分析方法。
基于深度学习模型的语义分析方法实施为计算机程序时,也可以存储在计算机可读存储介质中作为制品。例如,计算机可读存储介质可以包括但不限于磁存储设备(例如,硬盘、软盘、磁条)、光盘(例如,压缩盘(CD)、数字多功能盘(DVD))、智能卡和闪存设备(例如,电可擦除可编程只读存储器(EPROM)、卡、棒、键驱动)。此外,本文描述的各种存储介质能代表用于存储信息的一个或多个设备和/或其它机器可读介质。术语“机器可读介质”可以包括但不限于能存储、包含和/或承载代码和/或指令和/或数据的无线信道和各种其它介质(和/或存储介质)。
应该理解,上文所描述的实施例仅是示意。本文描述的实施例可在硬件、软件、固件、中间件、微码或者其任意组合中实现。对于硬件实现,处理器可以在一个或者多个特定用途集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、处理器、控制器、微控制器、微处理器和/或设计为执行本文所述功能的其它电子单元或者其结合内实现。
本申请的一些方面可以完全由硬件执行、可以完全由软件(包括固件、常驻软件、微码等)执行、也可以由硬件和软件组合执行。以上硬件或软件均可被称为“数据块”、“模块”、“引擎”、“单元”、“组件”或“系统”。处理器可以是一个或多个专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理器件(DAPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、处理器、控制器、微控制器、微处理器或者其组合。此外,本申请的各方面可能表现为位于一个或多个计算机可读介质中的计算机产品,该产品包括计算机可读程序编码。例如,计算机可读介质可包括,但不限于,磁性存储设备(例如,硬盘、软盘、磁带……)、光盘(例如,压缩盘CD、数字多功能盘DVD……)、智能卡以及闪存设备(例如,卡、棒、键驱动器……)。
计算机可读介质可能包含一个内含有计算机程序编码的传播数据信号,例如在基带上或作为载波的一部分。该传播信号可能有多种表现形式,包括电磁形式、光形式等等、或合适的组合形式。计算机可读介质可以是除计算机可读存储介质之外的任何计算机可读介质,该介质可以通过连接至一个指令执行系统、装置或设备以实现通讯、传播或传输供使用的程序。位于计算机可读介质上的程序编码可以通过任何合适的介质进行传播,包括无线电、电缆、光纤电缆、射频信号、或类似介质、或任何上述介质的组合。
上文已对基本概念做了描述,显然,对于本领域技术人员来说,上述发明披露仅仅作为示例,而并不构成对本申请的限定。虽然此处并没有明确说明,本领域技术人员可能会对本申请进行各种修改、改进和修正。该类修改、改进和修正在本申请中被建议,所以该类修改、改进、修正仍属于本申请示范实施例的精神和范围。
同时,本申请使用了特定词语来描述本申请的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本申请至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一替代性实施例”并不一定是指同一实施例。此外,本申请的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。
一些实施例中使用了描述成分、属性数量的数字,应当理解的是,此类用于实施例描述的数字,在一些示例中使用了修饰词“大约”、“近似”或“大体上”来修饰。除非另外说明,“大约”、“近似”或“大体上”表明所述数字允许有±20%的变化。相应地,在一些实施例中,说明书和权利要求中使用的数值参数均为近似值,该近似值根据个别实施例所需特点可以发生改变。在一些实施例中,数值参数应考虑规定的有效数位并采用一般位数保留的方法。尽管本申请一些实施例中用于确认其范围广度的数值域和参数为近似值,在具体实施例中,此类数值的设定在可行范围内尽可能精确。