160 likes | 246 Views
Q-T 语义一致识别算法描述. 姓名:刘剑 编译笔名: 37X21=777 平台账号: stormagain. 主要内容. 第一部分: LSC 算子介绍 第二部分: ToTAL 算子介绍 第三部分:门禁算法介绍 第四部分:算法评价. 算子作用:找出最长公共字符串 实现思想: 1 ,用一个矩阵来记录两个字符串中 所有位置的匹配情况,如果相同则为 1 ,不同则为 0. 2 ,正向求出对角线最长的 1 序列,其对应的长度即为最长公共字符串长度,其位置就是最长公共字符串的位置. LSC 算子. TOTAL 算子.
E N D
Q-T语义一致识别算法描述 • 姓名:刘剑 • 编译笔名:37X21=777 • 平台账号:stormagain
主要内容 第一部分:LSC算子介绍 第二部分:ToTAL算子介绍 第三部分:门禁算法介绍 第四部分:算法评价
算子作用:找出最长公共字符串 实现思想: 1,用一个矩阵来记录两个字符串中 所有位置的匹配情况,如果相同则为1,不同则为0. 2,正向求出对角线最长的1序列,其对应的长度即为最长公共字符串长度,其位置就是最长公共字符串的位置. LSC算子
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,可以看到,在有准确率约束的条件下,它可以达到比较好的效果。 • 我想更多的说一下它的缺点,缺点主要是对一系列子通道的设置,笔者现在基本上是靠前面提到的两个算子来控制的,但是我感觉还是不够的,这两个算子只是从短句的整体和基于自身字符的出现率来衡量的,这还属于模糊判断,笔者还在探索其他的算子。
算法评价 • 门禁算法的改进方向: • 其实在大赛的规则更改之后,我就想到了改进算法,去尝试一些颠覆性的思想,但由于工作原因,没有花时间来思考,这些想法都是感性上的一种认识,并没有强有力的理论来支撑,所以现在还不成熟,大概可以包括这么几点(这也是为了解决第四条通道的高误差问题),一种是构造多维的语义树,一种是构造全局或者局部的语义拓扑结构,甚至是对语义弱约束词的筛选等。