1、语义置信度
在语音识别领域一个很重要的因素是置信度输出,在限定词汇量的条件下,如果客户的提问或回答不超出限定的词汇,ASR识别后文本的正确率可以达到95%以上。但是,一旦问题超出限定的领域或者出现集外词,ASR的识别性能就会严重下降。因此,对ASR识别结果的可信度进行度量就显得非常重要,它可以降低集外词(OOV)带来的不利影响。
采用的方法是利用统计语言模型衡量ASR识别所得到的整个句子的可信度。如果一个句子的词误识率比较低,构成这个句子的众多三元短语(W1W2,W3),会比较多的出现在统计语言模型Trigram中,如图9所示;反之,如果出现较多的识别错误,那么句子中大部分的词W1和元短语(W1,W2)将出现在Unigram或Bigram中,很少有三元短语命中Trigram,如图10所示;对于一个由若干词W1,W2,……,Wi,……,Wn构成的句子,可根据各个词及它所构成的短语在统计语言模型中出现的情况对其中每个词打分。出现在Trigram中的可信度高,因而得分较高,出现在Bigram或Unigram中的可信度低,因而得分较低。再在各个词得分的基础上得到整个句子的可信度得分。若得分低于某个门限,则认为句子中包含较多的识别错误或者集外词,可信度较低,应当被拒识。
ASR识别后文本是由一个个词构成的词序列,其中某些词对于理解整个句子有着非常重要的作用,这就是所说的关键词。在这一步要做的就是提取出这些关键词,形成一个关键词串,作为下一步“问题理解”的输入,这种处理同时也是为了降低“问题理解”时的难度。可以把特定的对话节点看作一个问题域,针对该问题域设计关键词表,预先规定在这一问题域内的关键词。这个关键词表是ASR系统中相应问题域下的词汇表的子集,记录了每个关键字的汉字串,类标识和词序号等信息。在提取关键词时,只需要在句子中进行搜索,检测到出现在关键表的关键词,记录它们出现的位置和次序。比如一个句子“你好,我想问一下,我那个嗯,快递是不是寄错地址了?”,这里可以提取出关键汉字串“问一下”、“快递”、“寄错地址”。对于不包含关键词的句子,例如“啊,可以说给我打了,里头哭了。”,可把它视作无效或者错误的输入,给出相应的提示。
以对话节点来分类语料,可较好的捕获用户说话的习惯和领域用语,某一节点场景下机器人与客户的对话可限定在某个问题域内进行。对句子进行准确的理解,并不需要考虑句子中的每个词,只需对几个蕴含关键概念的关键词汇进行理解就能把握句子的意义。关键词识别技术从语句中抽取用户关心的关键信息,能够降低对识别系统和环境噪声的要求。
2、语料统计分析
利用日志数据,学习用户的语言使用习惯,从日志中自动抽取语意标注数据和构建领域语言模型。以对话节点来分类语料,基于不同典型节点的语料进行词表抽取。
针对每个问题域,需要确定有限大小的“词汇表”,并通过大量的训练语料训练出相应的基于词类的统计“语言模型”。“关键词表”可以从“词汇表”中提炼得到,它记录的是对于理解问题有实质作用的词汇及其相关信息。此外还要在“关键词表”的基础上形成“关键词类型组合模板库”,其中每个模板代表问题域内的一类具体问题,此模板库在“问题理解”过程中使用。
以快递物流领域的对话语料为基础。对话过程是两个人通过电话以一问一答的形式进行的,电话一端代表客户,另一端是智能语音客服机器人,客户端说话方式完全是自由的和随意的。
为了表述方便,我们首先给出如下定义:
定义1对话语句(Utterance)从对话者一方开始讲话到讲完停下或被对方强行打断为止,所说的全部内容称作一个对话语句。
定义2对话子句(Dialogsentence)一个对话语句中所包含的分句,称作对话子句。
例如:嗯|你好/我想查|一下/我|那个|快递|什么|时候|能|到/现在|还|没|送来
这一段文字从开始到结束是一个对话语句,在这个对话语句中包含有4个对话子句(由“/”隔开),每一个子句中包含多个词(由“|”隔开)。
其中,词典标注采用人工方式,语料标注采用机器自动标注与人工核对相结合的方法。当第一次收集语料时,词典是不存在的,我们只需要对整理的语料进行分词,然后提取所有的词汇,并依据这些词汇建立相应的词典。词典一旦建立之后,当领域转移或扩展时,系统只需将新收集的语料中在词典中没有的所有新词提取出来,然后在人的辅助下决定是否将这些新词添加到词典中去。这样,对于应用领域接近或同一领域扩展时,只需要处理少数新的词汇即可,而避免了大量的重复工作。