KBQA项目 P11 计算编辑距离并按相似度排序
上节课当中,通过词槽数量的比较,把明显不匹配的模板去掉了,剩下的就都是有可能的。那剩下的里面,到底应该取哪个呢?这个问题,需要借助另外一个规则,进行进一步的处理。
编辑距离
莱文斯坦距离(编辑距离),指两个字串之间,由一个转换成另一个所需的最少编辑操作次数,允许的编辑操作包括:替换、插入、删除。例如:
用户问题:
周星驰导演过什么电影
模板替换后的问题:
1、周星驰导演过哪些电影
2、周星驰的导演是谁
在项目中,要比较模板替换后的问题,哪个和用户问题的意思更接近,就可以用编辑距离,换算成相似度比例之后来衡量。
第1个问题,要替换2次(+4),相似度比例:1-4/(10+10)=0.8
第2个问题,要插入1次(+1)、替换2次(+4)、删除3次(+3),相似度比例:1-8/(10+8)=0.55
最终得出结果,是第1个模板,更接近用户问题的意思。
代码示例
1、安装三方包
内容不可见,请联系管理员开通权限。
2、代码实现
内容不可见,请联系管理员开通权限。
3、列表套字典结构排序
内容不可见,请联系管理员开通权限。
4、嵌入项目
内容不可见,请联系管理员开通权限。
这节课,就通过编辑距离的方式,算出了用户问题和模板的相似度,并且从高到低进行了排序,越靠前的越接近用户问题的真实目的。
本文链接:http://ichenhua.cn/edu/note/604
版权声明:本文为「陈华编程」原创课程讲义,请给与知识创作者起码的尊重,未经许可不得传播或转售!