语音助手——基于语义相似度的泛化语义识别

        在前面的章节中,我们讲到了,对于一个垂域BOT的识别,会有分类模型、意图槽位模型来识别其对应的语义,但是这个一般是针对已经成熟的(即积累了一定数据的)场景才可以做的,对于以下的三种场景,这种做法就不适用了:

  1. 场景冷启动,即一个新的场景,线上并没有对应场景的话术,一般对于冷启动问题我们都会采用模板匹配的方式,但是其泛化能力有限,如何提高其泛化能力呢?
  2. 垂域BOT未识别的话术,即前面章节《潜在技能与未召回话术挖掘》中提到的未召回话术,这部分话术我们会将其补充到已有的场景分类、意图槽位模型中,但算法迭代然后上线是有周期的,除算法训练外,还要经过严格的测试,如何才能做到更加及时的识别呢?
  3. 对于一些节日或者活动时,运营同学会配置一些小技能作为节日彩蛋,但是他们一般配置的话术比较死板,比如:“放个烟花”,在运营同学配置后如何才能识别到“来个烟花”,“放几个烟花”这种话术呢?

针对上面的问题,我们搭建了一套基于语义相似度的泛化语义识别系统。如下图:

语音助手——基于语义相似度的泛化语义识别_第1张图片

        这个系统分为离线部分和在线部分两部分,其中离线部分收集运营配置的话术、产品定义的场景标准话术、BOT中的TOP话术到一起,作为标准话术库,存储为query-intent数据对,同时这些话术也存储到ES数据库中,利用这些数据来训练BERT,使得同intent的query向量更加接近,训练方式这里不做展开,可以使用对比学习或者双塔模型来训练。训练完成后我们就可以得到经过预训练的BERT,用来得到对应query的语义向量。

        在线部分则是一个实时的识别算法,对于用户query,首先经过已经定义的BOT进行语义识别,对于未识别的query,经过ES数据库进行初步检索,对于检索到的query,利用经过预训练的BERT得到语义向量,同时将用户query也得到语义向量,将双方得到的向量进行相似度匹配,基于分数阈值排序得到最终结果。

        

你可能感兴趣的:(语音助手,人工智能,语音助手,智能对话,语义相似度)