一种快速检测重复抄袭文本的方法与流程

文档序号:12597329阅读:573来源:国知局
本发明涉及文本处理以及搜索引擎领域,特别涉及一种快速检测重复抄袭文本的方法。
背景技术
::互联网中的信息数量,每天正在以爆炸式的速度增长。通过分析互联网上海量的文章,统计表明,文章上大部分相同的页面占29%,而主体内容完全相同的占22%;也就是说,互联网上全部文章中,约有1/4是重复的文章。对一些论坛、BBS、博客页面来说,由于大量文本来自转帖或者抄袭,重复文章的比例更高。这些重复的文章存在多种表现形式:有的是没有一点改动的拷贝;有的在内容上稍作修改,比如增加少量点评,或删除少许文字,或改变文字段落顺序;有的进行细微格式变化,比如改变字体,修改标点,文字大小写等。由上可知,需要一种能够判定文本是否重复的方法(即文本除重),提供给系统使用,在判定抄袭、重复时有重大作用。另外,由于判定工作需要处理的数据规模巨大,需要处理效率足够高,因此系统的运算速度非常重要。技术实现要素:本发明要解决的技术问题是,提供在秒级时间内完成重复抄袭文本的检测,能用于大量应用场景的快速检测重复抄袭文本的方法。以下是对文中出现的英文的对应说明,便于理解文中的内容:current_para_buf——候选文本块current_feature_buf——候选特征文本块current_feature_len——候选文本块长度feature_para_len——全局特征文本长度feature_para_buf——全局特征文本块解决上述技术问题,本发明提供了一种快速检测重复抄袭文本的方法,包括如下步骤:1)识别经过预处理后文本的长度,若所述文本的长度小于设定阈值,则进行签名计算;2)若所述文本的长度大于第一阈值,则进行进入如下步骤:2-1)设置第一类型特征句分隔符列表和第二类型特征句分隔符列表;2-2)从上述文本的头部开始依次遍历后续字符,并在上述分隔符列表中寻找是否存在对应分隔符;2-3)若是,则将遍历得到的分隔符保存至候选文本块current_para_buf中;2-4)提取得到所述步骤2-3)中获得的候选文本块中的特征字符;3)将提取后的全部有效的特征字符,依次存放入字符串current_feature_buf候选特征文本块中,并记录得到current_feature_len候选文本块长度;以及比较所述current_feature_len候选文本块长度和所述feature_para_len全局特征文本长度;若current_feature_len>feature_para_len,则将current_feature_len赋值给feature_para_len,并将字符串current_feature_buf保存入特征句字符串feature_para_buf中,再继续遍历文本;4)当所述文本全部遍历完成后,得到feature_para_len和feature_para_buf全局特征文本块,将feature_para_buf作为所述文本的组合特征句;5)判断所述步骤4)中feature_para_len是否低于第二阈值,若是则将预处理后的文本代替组合特征句存放入feature_para_buf;6)对所述步骤5)中feature_para_buf进行签名计算,并和哈希表中已有的文本进行对比,如果存在重复则认为是重复文本。更进一步,所述预处理进一步包括:进行文本归一化,将编码转换为UTF-8编码,然后再将原始文本中全角字符转换为半角字符,同时将所有大写字符转换为小写字符。更进一步,所述第一阈值进一步为:文本的长度是否大于第一阈值MIN_CONTENT_LEN=80;所述第二阈值进一步为:判断feature_para_len是否低于第二阈值MIN_PARA_LEN=100。更进一步,所述第一类型特征句分隔符列表包括以下字符:{!}、{?}、{;}、{。}。更进一步,所述第二类型特征句分隔符列表包括以下字符:{,}、{:}、{-}、{+}、{=}、{~}、{‘}、{“}、{[]}、{{}}、{()}、{《》}、{<}、{>}、{/}、{\}。更进一步,所述步骤2-2)中的遍历方法具体为:从文本头部开始,设定指针start_pos,并依次遍历后续字符,寻找是否存在上述分隔符,如果存在,则保存由start_pos到tail_pos之间的文本段至current_para_buf,并继续遍历。更进一步,所述遍历进一步包括:步骤2-2-1)将遍历tail_pos+1;作为下次遍历的start_pos步骤2-2-2)若遇到文本尾端仍未出现分隔符,则将文本尾端字符设为tail_pos;步骤2-2-3)若遍历过程中,已遍历文本的长度大于阈值MAX_PARA_LEN=1200,则tail_pos的位置将由下一次出现第一类型特征句分隔符列表或第二类型特征句分隔符列表中的分隔符的位置决定。更进一步,所述步骤2-4)中提取的特征字符具体为:去除空格、提取UTF-8中中文字符、提取数字0~9、提取英文字符a~z。更进一步,在所述步骤3)进一步包括:3-1)若feature_para_len之前不存在,则预设为03-2)若current_feature_len<=feature_para_len,则丢弃当前字符串,继续遍历文本。更进一步,所述步骤6)中feature_para_buf进行签名计算具体为:计算feature_para_buf的MD5签名,并使用所述MD5的128bit签名生成对应的哈希表。本发明的有益效果:1)本发明提出快速检测重复抄袭文本的方法,并且具备较强的稳定性,对文章中少量文字修改、对换等,具备抗干扰能力。2)本发明通过生成组合特征句的方法,能在超大数据集中进行快速去重的新技术,能够极为快速的进行重复抄袭的检测。3)考虑到重复的文章存在多种表现形式:有的是没有一点改动的拷贝;有的在内容上稍作修改,比如增加少量点评,或删除少许文字,或改变文字段落顺序;有的进行细微格式变化,比如改变字体,修改标点,文字大小写等。采用本发明的方法能够处理文本扰动问题,对小幅度噪音扰动有抗干扰能力,具备较强鲁棒性。附图说明图1是本发明一实施例中的一种快速检测重复抄袭文本的方法流程示意图。图2是本发明一优选实施例中的一种快速检测重复抄袭文本的方法流程示意图。图3(a)-图3(b)是采用本发明中的方法处理文本扰动问题的示意图。具体实施方式为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。请参考图1是本发明一实施例中的一种快速检测重复抄袭文本的方法流程示意图。本实施例中的一种快速检测重复抄袭文本的方法,包括如下步骤:步骤S1识别经过预处理后文本的长度,若所述文本的长度小于设定阈值,则进行签名计算;作为本实施例中的优选,所述预处理进一步包括:进行文本归一化,将编码转换为UTF-8编码,然后再将原始文本中全角字符转换为半角字符,同时将所有大写字符转换为小写字符。步骤S2-1若所述文本的长度大于第一阈值,设置第一类型特征句分隔符列表和第二类型特征句分隔符列表;作为本实施例中的优选,所述第一阈值进一步为:文本的长度是否大于第一阈值MIN_CONTENT_LEN=80;所述第二阈值进一步为:判断feature_para_len是否低于第二阈值MIN_PARA_LEN=100。作为本实施例中的优选,所述第一类型特征句分隔符列表包括以下字符:{!}、{?}、{;}、{。}。作为本实施例中的优选,所述第二类型特征句分隔符列表包括以下字符:{,}、{:}、{-}、{+}、{=}、{~}、{‘}、{“}、{[]}、{{}}、{()}、{《》}、{<}、{>}、{/}、{\}。上述特征的有益效果在在于:使用第一类型特征句分隔符列表和第二类型特征句分隔符列表中的字符,可以灵活的根据文本特点,使用相应的分隔符来获取合适长度的特征句。步骤S2-2从上述文本的头部开始依次遍历后续字符,并在上述分隔符列表中寻找是否存在对应分隔符;作为本实施例中的优选,所述步骤S2-2中的遍历方法具体为:从文本头部开始,设定指针start_pos,并依次遍历后续字符,寻找是否存在上述分隔符,如果存在,则保存由start_pos到tail_pos之间的文本段至current_para_buf,并继续遍历。在一些实施例中,所述遍历进一步包括:步骤2-2-1)将遍历tail_pos+1;作为下次遍历的start_pos;步骤2-2-2)若遇到文本尾端仍未出现分隔符,则将文本尾端字符设为tail_pos;步骤2-2-3)若遍历过程中,已遍历文本的长度大于阈值MAX_PARA_LEN=1200,则tail_pos的位置将由下一次出现第一类型特征句分隔符列表或第二类型特征句分隔符列表中的分隔符的位置决定。步骤S2-3若是,则将遍历得到的分隔符保存至候选文本块current_para_buf中;步骤S2-4提取得到所述步骤S2-3中获得的候选文本块中的特征字符;作为本实施例中的优选,所述步骤S2-4中提取的特征字符具体为:去除空格、提取UTF-8中中文字符、提取数字0~9、提取英文字符a~z。步骤S3将提取后的全部有效的特征字符,依次存放入字符串current_feature_buf候选特征文本块中,并记录得到current_feature_len候选文本块长度;以及比较所述current_feature_len候选文本块长度和所述feature_para_len全局特征文本长度;若current_feature_len>feature_para_len,则将current_feature_len赋值给feature_para_len,并将字符串current_feature_buf保存入特征句字符串feature_para_buf中,再继续遍历文本;在一些实施例中,在所述步骤3进一步包括以下判断:3-1)若feature_para_len之前不存在,则预设为03-2)若current_feature_len<=feature_para_len,则丢弃当前字符串,继续遍历文本。步骤S4当所述文本全部遍历完成后,得到feature_para_len和feature_para_buf全局特征文本块,将feature_para_buf作为所述文本的组合特征句;步骤S5判断所述步骤S4中feature_para_len是否低于第二阈值,若是则将预处理后的文本代替组合特征句存放入feature_para_buf;步骤S6对所述步骤S5中feature_para_buf进行签名计算,并和哈希表中已有的文本进行对比,如果存在重复则认为是重复文本。在一些实施例中,所述步骤6中feature_para_buf进行签名计算具体为:计算feature_para_buf的MD5签名,并使用所述MD5的128bit签名生成对应的哈希表。本实施例中的技术效果在于:本实施例中的快速检测重复抄袭文本的方法,具备较强的稳定性,对文章中少量文字修改、对换等,具备抗干扰能力。通过在本实施例中生成的组合特征句,能在超大数据集中进行快速去重的新技术,能够极为快速的进行重复抄袭的检测。在本实施例中,充分考虑到了由于待比对的文章库的数量通常极为庞大,甚至多达亿级甚至十亿级。庞大的文章数量,对本文比对的效果提出了严峻的挑战,对一个新获取的文章A来说,需要判断在已有的千万文章中,是否存在一篇文章B或者多篇文章B、C、D与之重复,如果重复则去除。在这种前提下,直接将文章A和已有的千万文章逐一进行比对是不现实的,原因是计算复杂度过高:假设文档数为n,文档平均长度为m,如果相似度计算复杂度为m的某一个复杂度函数:T=T(m),文档两两比较的复杂度是O(n^2),合起来是O(n^2*T(m)).这个复杂度是相当高的,想搜索引擎这样处理海量数据的系统,这样的复杂度是完全不能接受的。通过在本实施例中生成的组合特征句的方法,能在超大数据集中进行快速去重的新技术,够极为快速的进行重复抄袭的检测。经过验证,组合特征句签名的算法提取了文本中最具代表性的内容(选择了最长句),并且设置了最短阈值,因此有很强的描述能力,适用于判定文本重复。请参考图2是本发明一优选实施例中的一种快速检测重复抄袭文本的方法流程示意图。●提取文本后,首先进入文本归一化阶段,将编码转换为UTF-8编码,再将原始文本中全角字符转换为半角字符,再将所有大写字符转换为小写字符。经过以上预处理后,可以避免由于编码或大小写不一致带来的文本重复误判●判定转换后的文本长度:如果小于阈值(MIN_CONTENT_LEN=80)则直接进行后续的MD5算法签名计算步骤。如果大于等于阈值,则进入以下步骤:●设置A类特征句分隔符列表(即第一类型特征句分隔符列表),包括4类字符:!?。;●设置B类特征句分隔符列表(即第一类型特征句分隔符列表),包括以下字符:,~《:‘》-“<+[>=]/\{}()●从文本头部开始,设定指针start_pos,并依次遍历后续字符,寻找是否存在上述分隔符,如果存在,则保存由start_pos到tail_pos之间的文本段至current_para_buf,并继续遍历,规则为:A以上次遍历tail_pos+1作为下次遍历的start_posB如果遇到文本尾端仍未出现分隔符,则将文本尾端字符设为tail_posC如果遍历过程中,已遍历文本的长度大于阈值MAX_PARA_LEN=1200,则将下一次分隔符列表升级为A类分隔符与B类分隔符的总和,即tail_pos的位置将由下一次出现A类或B类分隔符的位置决定●对当前获得的current_para_buf进行处理,提取其中特征字符,规则为:去除空格、提取UTF-8中中文字符、提取数字0~9、提取英文字符a~z●将提取后的全部有效字符,依次存放入字符串current_feature_buf中,并记录其长度为current_feature_len●比较current_feature_len和feature_para_len的大小,存在以下几种情况:A若feature_para_len之前不存在,则预设为0B若current_feature_len<=feature_para_len,则丢弃当前字符串,继续遍历文本C若current_feature_len>feature_para_len,则将current_feature_len赋值给feature_para_len,并将字符串current_feature_buf保存入特征句字符串feature_para_buf中,再转入上步骤继续遍历文本●是否已到文本尾部,若是则全部文本遍历完成后,得到feature_para_len和feature_para_buf作为该文本的组合特征句;若否则继续遍历●判断feature_para_len的长度是否低于阈值MIN_PARA_LEN=100,如果低于该阈值,则将原始文本代替原组合特征句存放入feature_para_buf●计算feature_para_buf的MD5签名,并使用该128bit签名生成Hash_table●对所有需要判定的文本,使用上述流程计算128bit的组合特征句签名,并和Hash_table中已有的巨量文本进行对比,如果存在重复则认为是重复文本。计算生成的128bit数字签名能保证特征的唯一性,可实现海量数据的快速除重。组合特征句提取流程能保证文本出现扰动时,计算获取的128bit签名不变,从而获得了良好的抗干扰能力。请参考图3(a)-图3(b)是采用本发明中的方法处理文本扰动问题的示意图。文章文本在被转载或修改时,可能会存在文本内容的部分调整变化,给文本判定带来障碍,例如以下两段来自不同文章的文本:引用网址http://news.xhby.net/system/2010/06/01/010763191.shtml目前,我国探月工程二期中的“嫦娥二号”任务已基本完成了火箭和卫星产品的研制,预计2010年底前发射。在昨天举行的世界月球大会上,中国航天科技集团公司有关人士介绍了我国深空探测的现状及未来展望。据悉,虽然我国目前还没有明确计划,但相关单位和科技人员正在进行论证开展载人登月和建立月球基地的研究与探索。引用网址http://news.qq.com/a/20100601/000062.htm晨报讯(记者韩娜)目前,我国探月工程二期中的“嫦娥二号”任务已基本完成了火箭和卫星产品的研制,预计2010年底前发射。在昨天举行的世界月球大会上,中国航天科技集团公司有关人士介绍了我国深空探测的现状及未来展望。据悉,虽然我国目前还没有明确计划,但相关单位和科技人员正在进行论证开展载人登月和建立月球基地的研究与探索。通过本实施例中可以看出:两段文本的内容几乎相同,但是第二段文本开头有少许文字与第一段文本有差异,这种情况在文章抄袭中经常出现,因此在判定去重时,算法必须具备鲁棒性——即对小幅度噪音扰动有抗干扰能力。所属领域的普通技术人员应当理解:以上,所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1