Transcript 1.刘剑
Q-T语义一致识别算法描述 姓名:刘剑 编译笔名:37X21=777 平台账号:stormagain LOGO 主要内容 第一部分:LSC算子介绍 第二部分:ToTAL算子介绍 第三部分:门禁算法介绍 第四部分:算法评价 LSC算子 算子作用:找出最长公共字符串 实现思想: 1,用一个矩阵来记录两个字符串中 所有位置的匹 配情况,如果相同则为1,不同则为0. 2,正向求出对角线最长的1序列,其对应的长度即 为最长公共字符串长度,其位置就是最长公共字符 串的位置. TOTAL算子 算子作用:找出query语句中有多少字符出现在title语句 实现思想:遍历query字符串的每个字符,如果字符出现 在title中,则+1,反之+0,最后统计出出现 过的字符总数。 门禁算法 算法描述:在判断大量对象的是与非的问题中,很多时候 我们只需要去筛选出是的那一部分对象,那么 非的那一部分对象自然也区分出来了。我们可 以通过构造一系列的通道去过滤这些数据,能 够顺利通过通道的数据,自然就是我们要寻找 的是的那一部分对象。由于它跟生活中的门禁 系统比较相似,因此,我称它为门禁算法。 门禁算法就是去设计一系列的通道,如VIP通 道,尊贵会员通道,普通会员通道,及普通通 道等,对象在起点位置可获得一张具有优先级 的PassCard,如果这张PassCard能够打通某条 通道上的所有关卡,即对象到达终点,则该对 象会被识别为一致。 门禁算法 算法描述:如果对象在走某一条通道的途中,没有打开某 个关卡,那么这时候的对象该怎么办呢?此时, 对象有两种可能,一是沿着原路返回,改走其他 的通道,二是被直接判定为永远无法到达终点。 这就是设置PassCard的意义,当PassCard在某 个关卡被消耗掉的时候,对象会被直接判定为不 一致,如果打不开关卡,PassCard也没有被消 耗掉,那么对象可以原路返回,改走其他的通道 门禁算法 算法实现:这样的一种思想是怎么在语义一致识别中去实 现的呢?对于门禁算法的实现,重点在于通道 的设置,通道设置的有效性及完美程度,关系 到算法的效果。笔者根据大赛的数据描述,设 置了四条大的通道,以及通道下面的一系列子 通道(子通道的某些关卡决定PassCard是否消 耗),后面详细介绍四条通道。 门禁算法 算法实现:第一条通道(VIP): case 1:query与title完全一致: query:惺惺相惜是什么意思 title:惺惺相惜是什么意思? 对于这种去掉最后的符号后,前面的query短句与title短句 一致的情况,我们没有必要去做语义上的分析,直接走 VIP通道,到达终点。 门禁算法 算法实现:第二条通道: case 2:query是title的子句,存在简单的疑问词、 助词变换等: query:周杰伦的资料 title:有关周杰伦的资料 或者:query:海市蜃楼是? title:海市蜃楼是什么? 对于这种query和title之间只是某些前缀或者后缀的差别, 并没有影响语义偏差很大的对象,可以认为语义一致。当 然,这种情况下并不是每种情形都会一致,这就需要用到 前面提到的两个算子来控制了,对于query与title长度相差 超过一定范围,或者不满足两个算子所控制的界限,该对 象有可能要换走其他通道,或者被判断为不一致。 门禁算法 算法实现:第三条通道: case 3:query与title出现语序变化,主题词变换, 但表意相同: query:U盘分区方法 title:u盘如何分区? 对于这种数据对象,这次就不像第二条通道那样增加前缀、 后缀了,而是去对一些疑问词、语气词或者与疑问词同义 的词语的过滤。例如:过滤掉上面的“方法”与“如何”, 这样得到处理后的query和title短句就是一致的了,但是, 这样过滤很可能造成大量数据的误识别,例如: 门禁算法 算法实现:第三条通道: case 3:query与title出现语序变化,主题词变换, 但表意相同: 例如: query:叔叔的妈妈如何称呼 title:妈妈的叔叔怎样称呼 在这两个短句中,“如何”和“怎样”的表意是一样的, 因此,它们可以被过滤掉,但是由于“叔叔”与“妈妈” 的位置不一样,造成了语义不一致,这就需要对这种数据 对象的再一次语义检测,从而减小识别误差。 门禁算法 算法实现:第四条通道: case 4:query的语义被title用多个子句表示出来: 这就是最难检测的那部分数据,因此要对它们做语义分析, 通过语义上的相似度去判断它们是否一致,也是误差最高 的地方,笔者借助MMSeg4J的jar包,对短句实现分词, 分词之后通过计算词形和词序上的相似度来获得加权的相 似度,其中在计算词形相似度时用到了同义词词林,由于 笔者未找到比较好的反义词词林,因此,程序中没有用到 反义词及否定词检测(程序留了位置),而同义词词林的 词组也不超过两万条,再加上一些专业术语未加收录,因 此,效果不是很好,但是只要是收录过的词语或同义词词 组,都能达到很好的效果。 算法评价 为什么选择门禁算法? 笔者一开始想到了今年比较火的Deep Learning算法,但是 为什么没有选择Deep Learning来做呢,原因有这么几点, 现在的query语句呈现碎片化,各种带有语病的语句(如: 错别字,杂乱的语序,甚至是比较乱的符号),等等都给 语义一致识别带来很大麻烦,如果要选择用深度学习算法, 那么它的训练数据集将是巨大的,而且效率堪忧。再者是 网络新兴词汇的诞生,经常有网络词汇诞生,这就需要适 时的去更新词库,对于深度学习算法,更新词库后,需要 重新训练,这样带来的工作很麻烦。 算法评价 门禁算法的优缺点分析: 本次算法大赛中途更改过一次规则,以前是需要有0.9 的准确率来支撑,在笔者提供的快速门禁算法中,得出的 数据结果是这样的:F值:0.6158,召回率:0.4679,准确 率:0.9012,可以看到,在有准确率约束的条件下,它可 以达到比较好的效果。 我想更多的说一下它的缺点,缺点主要是对一系列子 通道的设置,笔者现在基本上是靠前面提到的两个算子来 控制的,但是我感觉还是不够的,这两个算子只是从短句 的整体和基于自身字符的出现率来衡量的,这还属于模糊 判断,笔者还在探索其他的算子。 算法评价 门禁算法的改进方向: 其实在大赛的规则更改之后,我就想到了改进算法, 去尝试一些颠覆性的思想,但由于工作原因,没有花时间 来思考,这些想法都是感性上的一种认识,并没有强有力 的理论来支撑,所以现在还不成熟,大概可以包括这么几 点(这也是为了解决第四条通道的高误差问题),一种是 构造多维的语义树,一种是构造全局或者局部的语义拓扑 结构,甚至是对语义弱约束词的筛选等。