一种基于随机数分治递归的短文本签名生成方法与流程

文档序号:15981716发布日期:2018-11-17 00:24阅读:659来源:国知局

本发明属于信息技术领域中的文章签名方法领域,具体为一种基于随机数分治递归的短文本签名生成方法。

背景技术

当今社会,信息技术的快速发展在给人们提供便利的同时也带来了诸多挑战。在生活中,处处存在着抄袭的现象,网络文章的抄袭更是防不胜防,对此我们需要更多的算法来解决现在网络上存在的文章抄袭问题。该方法旨在发明一种新型的文章签名方法用于文本抄袭检测中。现有的文章签名方法于minhash是每次提前一个排最前面的特征,一次只能产生一个签名,并且minhash每生成一个签名需要一个函数,况且函数不能重复,且函数要事先设计,因此,这大大降低了文章签名的生成方法。



技术实现要素:

本发明的目的在于:为解决现有的文章签名生成方法速度慢、步骤复杂的问题,本发明提供一种基于随机数分治递归的短文本签名生成方法。

本发明的技术方案如下:

一种基于随机数分治递归的短文本签名生成方法,包括如下步骤:

步骤1:输入文章需要的签名大小;

步骤2:对文章进行分词处理,再提出所有的无效词语得到有效词语;

步骤3:打乱所有有效词语的顺序生成乱序的词语表,将此词语表作为递归组,词语表数量记为n,初始化位数为b=n;

步骤4:根据位数b,生成一个随机数,随机数的范围为0到2b,再用二进制数表示随机数,如果二进制数的位数小于b,则二进制数高位统一用0填补;

步骤5:将递归组的词语按顺序与二进制数对应,将对应的是二进制数1的词语放入“1”组,否则放入“0”组。

步骤6:如果“1”组词语数量不等于剩余签名数,其中,剩余签名数=签名大小-签名组内词语数,则选择“1”组或者“1”组中的其中一组作为递归组进行递归;然后进入步骤7;

如果“1”组词语数量等于剩余签名数,则停止递归,进入步骤8;

步骤7:重新设定位数b为步骤7得到的递归组的的词语数,然后重复步骤4-6,直到“1”组词语数量等于剩余签名数,则停止递归,进入步骤8;

步骤8:输出签名组里的所有词语作为就是输入文章的签名。

具体地,所述步骤5的具体步骤为:

步骤5.1:对递归组的词语进行从0-n进行编号,编号从0开始,依次加1;

步骤5.2:将编号与二进制数进行对应,如果编号对应的是二进制数中的1,则将该编号所代表的词语放进“1”组;如果编号对应的是二进制数中的0,则将该编号所代表的词语放进“0”组。

具体地,所述步骤6中选择递归组的具体规则为:

如果“1”组词语数量小于剩余签名数,其中,剩余签名数=签名大小-签名组内词语数,则将所有“1”组数据放入签名组,并且将0组作为递归组;

如果“1”组词语数量大于剩余签名数,则将所有“1”组词语在放入递归组。

采用上述方案后,本发明有益效果如下:

(1)本发明的方法通过产生一个随机数将词语表分成两部分,直接把随机数变成二进制数表示1表示签名,0表示非签名,进行分治处理,又通过递归准则,对相应的部分进行递归处理,然后不断重复直到取得要求数量的签名。随机数用二进制表现出来,出现0和1出现概率相差不大,一下子可以出现非常多签名然后可以按需要的签名数量通过分治递归的处理获得文章的签名组,以便输出文章的签名,就不需要像minhash一样一次只能产生一个签名,大大提高了提取的速度。

(2)本发明中随机数生成也比较简单,不需要像minhash方法一样每一个签名需要一个函数,更加无需事先设计不能重复的函数,提高了便捷性和实用性,将本发明用于快速比较文本的相似度方面效果更佳。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。通过附图所示,本发明的上述及其它目的、特征和优势将更加清晰。在全部附图中相同的附图标记指示相同的部分。并未刻意按实际尺寸等比例缩放绘制附图,重点在于示出本发明的主旨。

图1为本发明的流程图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明具体技术涉及有利用随机数生成函数生成一个随机数,分词的技术,二者均为现有技术,下面,将简要描述这两个技术的过程。

随机数的生成:

随机数的生成采用线性同余随机数生成方法。该方法代表了最好最朴素的伪随机数产生器算法,并且容易理解,容易实现,而且速度快。线性同余随机数生成算法数学上基于公式:

x(n+1)=(a*x(n)+c)%m

其中,各系数为:

模m,m>0

系数a,0<a<m

增量c,0<=c<m

原始值(种子)0<=x(0)<m

其中本方法中m=2^32,a=22695477,c=1;

当我们产生随机数之后,将随机数规范到指定范围,并且将随机数表示成二进制方式。

分词方法:

分词的方法采用了中科院的分词系统,当我们将一篇短文本进行分词之后,我们可以得到词语和词语对应的识别信息。根据识别信息,我们会去除一些无效的语义词,比如“的”,“你”等。

本发明的一种基于随机数分治递归的短文本签名生成方法,包括如下步骤:

步骤1:输入文章需要的签名大小;

步骤2:对文章进行分词处理,再提出所有的无效词语得到有效词语;

步骤3:打乱所有有效词语的顺序生成乱序的词语表,将此词语表作为递归组,词语表数量记为n,初始化位数为b=n;

步骤4:根据位数b,生成一个随机数,随机数的范围为0到2b,此处的范围包含了边缘值;再用二进制数表示随机数,如果二进制数的位数小于b,则二进制数高位统一用0填补;

步骤5:将递归组的词语按顺序与二进制数对应,由于位数相同,所以对应的具体方式按照从高到低或者从低到高均可,将对应的是二进制数1的词语放入“1”组,否则放入“0”组;所述步骤5的具体步骤为:

步骤5.1:对递归组的词语进行从0-n进行编号,编号从0开始,依次加1;

步骤5.2:将编号与二进制数进行对应,如果编号对应的是二进制数中的1,则将该编号所代表的词语放进“1”组;如果编号对应的是二进制数中的0,则将该编号所代表的词语放进“0”组。

步骤6:如果“1”组词语数量不等于剩余签名数,其中,剩余签名数=签名大小-签名组内词语数,则选择“1”组或者“1”组中的其中一组作为递归组进行递归;如果“1”组词语数量小于剩余签名数,其中,剩余签名数=签名大小-签名组内词语数,则将所有“1”组数据放入签名组,并且将0组作为递归组;然后进入步骤7;

如果“1”组词语数量大于剩余签名数,则将所有“1”组词语在放入递归组;然后进入步骤7;

如果“1”组词语数量等于剩余签名数,则停止递归,进入步骤8;

步骤7:重新设定位数b为步骤7得到的递归组的的词语数,然后重复步骤4-6,直到“1”组词语数量等于剩余签名数,则停止递归,进入步骤8;

步骤8:输出签名组里的所有词语作为就是输入文章的签名。

本发明中所称的短文本为500个字左右的文本,由于对象是短文本,即使是文章有一些随机的因素,也不会对精确度有太大的影响,在对比两篇文章的相似度方面,本发明具有重大意义。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1