深度学习固然热络,但在垂直领域,我还是推崇规则匹配,垂直领域的正常问答中,不会超过10000条语句,那么规则其实能很好cover,准确率甚至能高达90%,累积了大数据,深度学习在这个时候就能很好提升模型精度,下面是对智能交互的总结。

 

智能交互系统架构图 智能交互怎么写_深度学习

                                      智能交互总体框架

下面着重总结下自然语言理解(NLU)部分:

1. NLU分为两个部分:用户意图判定,属性结构化抽取

utterance               我想看刘德华的天下无贼

领域/意图判断                   intent:video

属性抽取                            明星:刘德华


                电影名:天下无贼


智能交互系统架构图 智能交互怎么写_数据_02


                              NLU流程


2. 面临问题


a)      多样性,一句话表述方式多种多样,比如:刘德华的天下无贼,刘德华天下无贼,天下无贼刘德华

b)      鲁棒性,ASR导致错字,多字用户输入过程中,带犹豫性质的字词,“嗯”等;

c)       语言多义性,举例:“你好周杰伦”,是一首歌。

d)      上下文。

e) 语言知识的依赖。



3. 意图判断

a)      抽象成一个分类问题,那么就对应很多分类模型,比如SVM,CNN等,对于多样本量,建议采用CNN方法,垂直领域同时匹配规则算法。

b)      举例,天下无贼,一句话并不能简单判定这句话的领域,但依赖知识,知道这是一部电影,那么可以将它改写成,movie name,这样结合符号的embedding,与word2vector作为分类特征,效果会有所提升。可能会有疑问,如果通过知识已经知道这句话中包含的符号,是不是就可以判断这句话的领域了呢?如果输入是:你觉得孙俪漂不漂亮,应该是什么领域呢?

c)       以词作为输入,往往会出现,词表之外的词,所谓的Out of Vocabulary首先会想到使用固定向量或随机向量替代,最好的方式,同步更新词向量。参考FastText

d)      数据增强,缓解鲁棒问题,比如,在数据中自动加入写噪音。



4. 属性提取

方式一:

我 想 看 刘          德          华         的  天          下          无          贼

O  O  O  B-actor  B-actor  I-actor  O  B-name  I-name  I-name  I-name

方式二:

 刘德华    的  

  O     B-actor O  B-name

问题本质是,序列标注问题,算法模型比较成熟的有:CRF、CNN、RNN、LSTM等,目前用的比较号的是:bilstm+crf,通过crf解码,解决了softmax局部最优的问题。

对方式一、二,的区别在于,是否分词,方式二依赖未登录词的分词结果。垂直领域建议训练自己的分词工具,而不是采用通用分词工具,其精度会大幅度提升,而方式一带来更多类别问题,从而对模型训练、数据有更高要求。



5. 上下文

a)      举例:“刘德华的”,既可以理解成刘德华的电影,也可以理解成刘德华的歌,它的理解需要基于上一句或上几句

每个领域对应一个属性模板,电影对应一个模板,音乐对应一个模板,每一个模板包括该领域事先设置的Slot,以及对应的Slot Value,电影模板如下:

智能交互系统架构图 智能交互怎么写_智能问答_03



    b)方法:

1.上下文判断,抽象成是否属于上文领域的二分类模型,utterance输入之后,通过分类模型得到其领域意图;同时直接继承上文意图,做属性提取。抽取两种方式结果,训练分类模型,根据模型输出对应结果的置信度排序、选择。

2.根据意图完整型,通过属性提取后,填写领域属性模板,通过模板完整性(事先定义,比如电影领域只要个别领域非None,则完整)判断是否属于上一个意图领域。每一次并不需要全部填充模板,只满足完整性


智能交互系统架构图 智能交互怎么写_结构化_04