上节课当中,通过词槽数量的比较,把明显不匹配的模板去掉了,剩下的就都是有可能的。那剩下的里面,到底应该取哪个呢?这个问题,需要借助另外一个规则,进行进一步的处理。

编辑距离

莱文斯坦距离(编辑距离),指两个字串之间,由一个转换成另一个所需的最少编辑操作次数,允许的编辑操作包括:替换、插入、删除。例如:

用户问题:

周星驰导演过什么电影

模板替换后的问题:

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

版权声明:本文为「陈华编程」原创课程讲义,请给与知识创作者起码的尊重,未经许可不得传播或转售!