改进的Simhash算法在文本去重中的方法及系统与流程

文档序号:18030822发布日期:2019-06-28 22:38阅读:575来源:国知局
改进的Simhash算法在文本去重中的方法及系统与流程

本发明属于信息处理技术领域,尤其涉及一种改进的simhash算法在文本去重中的方法及系统。



背景技术:

目前,业内常用的现有技术是这样的:

在去除冗余数据方面,simhash算法是当前公认的最好的去重算法。该算法是一种局部敏感哈希算法,它能够将高维数据进行概率降维并映射为位数较少且固定的指纹,之后再对指纹进行相似度比较来反映数据之间的相似程度。其中相似度比较通常使用海明距离或编辑距离。simhash算法优势在于处理速度快,并且结果准确度高。

如今,simhash算法被广泛应用在近似文本检测、冗余数据去重、异常检测等领域。董博,郑庆华等提出了一种基于多simhash指纹算法,利用多种指纹值经过k维多曲面进行相似度计算,有效地解决了指纹单一,信息丢失严重的问题;陈波,潘永涛等在simhash算法中加入了减值运算,对最后合并的结果序列串结果减去一个阈值t,从而提升了simhash算法的准确性。nis,qianq等将simhash算法和cnn进行结合用于恶意软件检测,通过转化为灰度图像提高恶意软件识别率和性能。

综上所述,现有技术存在的问题是:

(1)现有技术中,数据处理方法处理速度快,但结果准确度低。

(2)现simhash算法在权重计算方面的欠缺,在生成的hash指纹中不能体现关键特征项所占比重。(3)现有技术中未能体现文档特征词汇中的分布信息。

解决上述技术问题的难度:

为了提升simhash算法的文本去重效果、精确率,解决simhash算法无法体现分布信息的缺点,引入信息熵的概念,采用熵加权的方式给文档中的关键词进行赋权,优化权重计算公式,并在hash计算中加入关键词分布信息,从而达到对传统simhash算法的优化,最后通过仿真实验论证了该算法的可行性,合理性。

解决上述技术问题的意义:

该算法引入tf-idf和信息熵,通过优化simhash算法中的权重及阈值计算,增加文本分布信息,使得最终生成的指纹更能体现关键信息的比重,并对指纹信息与权重的关联性进行了分析。仿真实验表明:优化权重计算能有效的提升simhash算法的性能,e-simhash算法在去重率、召回率、f值等方面均优于传统simhash算法,并且在文本去重方面取得了良好的效果。



技术实现要素:

针对现有技术存在的问题,本发明提供了一种改进的simhash算法在文本去重中的方法及系统。

本发明是这样实现的,一种改进的simhash算法在文本去重中的方法包括:利用基于tf-idf算法与信息熵进行加权得到权重,并按照在文档中的分布进行排序,对每个特征词汇生成的hash再与特征词汇所在位置进行异或;

经改进的权重计算后,引入权重阈值wt,增加文本分布信息,使最终生成的指纹体现关键信息的比重,并对指纹信息与权重的关联性进行分析。

进一步,所述改进的simhash算法在文本去重中的方法具体包括:

步骤1:,初始化:

对数据集大小及存储成本确定simhash位数以及f维向量空间,同时初始化f位二进制数s均置为0;

步骤2,文档预处理:

对文档进行分词、去停用词操作,构成文档若干特征词项m={};

步骤3,权重计算:

分别计算分词之后的特征项的tf-idf值以及左右信息熵,使用tf值、idf值的平方平均值作为特征项最终的权重,并且引入阈值wt防止文档特征失真;

步骤4,hash计算:

对步骤二中的特征项进行hash计算,并引入位置因子与hash进行异或操作作为特征项的最终hash值,hash值包括特征项的位置信息,记为h={},其中=hash();

步骤5:,累加对步骤三中产生的特征项权重以及步骤四中产生的f位hash值进行下列运算:

步骤6:,压缩变换:

对最后生成的二级指纹向量v,对每一位进行转化处理,最终生成文档f位hash指纹s;

进一步,文档中提取出n个关键词分别为{p1,p2,p3,…pn},各关键词的权重为w={w1,w2,w3,…,wn};对n个关键词生成hash值,结果为h={h1,h2,h3,…,hn},经过叠加后生成二级指纹f={f1,f2,f3,...fm},m为指纹位数,最后根据f中fi是否大于0生成simhash指纹为s;

若存在某一特征词pk,权重为

wk>>wj,j∈[1,n]∩j≠k;

则s由pk决定。

进一步,引入权重阈值后,权重计算如下式所示:

进一步,信息熵为:

h(x)=-∑(xi∈x)p(xi)log2p(xi)

其中x表示信息概率空间x=(x1:p(x1),x2:p(x2),...,xn:p(xn)),h(x)表示随机变量x不确定性的量度。

进一步,信息熵包括左右信息熵,公式如下:

式中,w表示某个单词,el(w)表示该单词的左熵,p(aw|w)表示该单词左侧出现不同词的概率,a变量是一个变化值,表示与w相结合的词汇;er(w)为右熵。

进一步,熵加权计算法包括:

对特征词左右信息熵取平均;用hk(w)来表示该单词的熵信息量;把熵因子hk加入权值计算公式中,取两者的平方平均数作为词权重,如下所示:

特征词tk在文档dj中出现的次数越多,在训练集中出现该特征词的文档越少,并且其信息量越大,则其权重越高。

本发明的另一目的在于提供一种实施所述改进的simhash算法在文本去重中的方法的改进的simhash算法在文本去重中的控制系统。

本发明的另一目的在于提供一种实施所述改进的simhash算法在文本去重中的方法的改进的simhash算法在文本去重中的去除冗余数据储存介质。

综上所述,本发明的优点及积极效果为:

本发明在去除冗余数据方面具有良好的效果,simhash算法是一种局部敏感哈希算法,它能够将高维数据进行概率降维并映射为位数较少且固定的指纹,之后再对指纹进行相似度比较来反映数据之间的相似程度。其中相似度比较通常使用海明距离或编辑距离。simhash算法优势在于处理速度快,并且结果准确度高。

本发明针对传统simhash算法在权重计算方面的欠缺,以及算法中不能考虑到文档特征词汇的分布信息,本发明通过优化权重计算,使用tf-idf和信息熵的平方平均数作为特征词的权重值,考虑到部分权重过大导致信息失真,引入权重阈值,并在此基础上将特征词的位置信息引入到hash计算中去,从而提升simhash算法的去重率、查准率,并通过仿真实验论证了e-simhash算法在各方面均优于传统的simhash算法。

通过仿真实验,使用搜狐实验室中的全网新闻数据作为文档集,在去重率对比实验中,实验结果如图4所示。修改相似度阈值t,e-simhash算法去重率分别以0.833:0.679、0.751:0.529,0.687:0.476、0.661:0.451优于传统的simhash算法,并且随着文章变动的增加,其去重率都呈现下降趋势,其仿真实验结果如图5所示。最后在查准率、召回率以及f值对比中,如图6所示,e-simhash算法在查准率0.963:0.818,召回率0.867:0.621,f1值0.912:0.706优于传统的simhash算法,。仿真实验结果表明:优化权重计算能有效的提升simhash算法的性能,e-simhash算法在去重率、召回率、f值等方面均优于传统simhash算法,并且在文本去重方面取得了良好的效果。

附图说明

图1是本发明实施例提供的simhash的算法流程图。

图2是本发明实施例提供的位置对simhash的影响图。

图3是本发明实施例提供的e-simhash算法过程图。

图4是本发明实施例提供的不同海明距离下去重率对比图。

图5是本发明实施例提供的不同阈值下去重率对比图。

图6是本发明实施例提供的综合性能比较图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

现有技术中,数据处理方法处理速度快,并且结果准确度低。

为解决上述问题,下面结合具体分析对本发明作做详细描述。

本发明实施例提供的改进的simhash算法在文本去重中的方法包括:利用基于tf-idf算法与信息熵进行加权得到权重,并按照在文档中的分布进行排序,对每个特征词汇生成的hash再与特征词汇所在位置进行异或;

经改进的权重计算后,引入权重阈值wt,增加文本分布信息,使最终生成的指纹体现关键信息的比重,并对指纹信息与权重的关联性进行分析。

下面结合定义分析对本发明作进一步描述。

1、simhash算法的分析

定义一simhash算法的原理是对于两个给定的变量x,y,哈希函数h总是满足下式:

prh∈f(h(x)=h(y))=sim(x,y)(1)

其中,sim(x,y)∈[0,1]是相似度函数,一般也用雅可比函数来表示变量x,y的相似度,sim(x,y)表示如下:

h属于哈希函数簇f,需要满足以下条件:

1)如果d(x,y)≤d1,则prh∈f(h(x)=h(y))≥p1;

2)如果d(x,y)≥d2,则prh∈f(h(x)=h(y))≤p2。

称f为(d1,d2,p1,p1)上的敏感哈希簇函数。其中d(x,y)表示x,y变量之间的距离,通俗而言,表示如果x,y足够相似时,那么它们映射为同一hash函数的概率也就足够大,反之哈希值相等的概率足够小。

由于传统hash函数与simhash函数最大的不同在于局部敏感性,如果针对输入的数据做些局部些许修改,经过传统hash函数运算后可能会得到完全不同的结果,而simhash计算的结果则很相似,因此可以使用simhash函数产生的指纹相似程度来表示源数据之间的相似程度。

2、simhash算法流程:

simhash算法的流程是首先定义一个f维度的空间,然后在这个空间中定义每一个特征所对应的向量,接着将所有的向量结合自身的权重进行加权、求和就得到了一个和向量作为结果。最后再对该结果进一步的进行压缩转化,其规则是:对每一个向量得出一个相对应的f位签名信息,若向量维度的值大于0,则置其签名所在的位置为1,否则置为0。通过这样的转化方式,得到的签名信息就表证了此向量在各个维度中的值的信息。

simhash的算法流程图如图1所示。simhash算法的具体步骤如下:

步骤1:初始化

针对数据集大小及存储成本确定simhash位数以及f维向量空间,同时初始化f位二进制数s均置为0。

步骤2:文档预处理

主要包含两部分,第一部分是分词,寻找文档的特征词汇以及去除文档停用词等。第二就是赋权,一般而言这里普遍忽略了权重的计算设置为1。

步骤3:生成hash值

利用传统的散列算法对步骤二中的每个特征词计算一个f位hash值,并进行下列运算:

步骡4:压缩变换:

针对最后生成的向量v,对每一位进行转化处理。

步骤5:指纹生成:输出最终的签名s作为该文档的指纹,之后再进行海明距离或编辑距离计算相似度。

步骤6:距离计算:在simhash算法中使用海明距离进行相似度计算。海明距离通过比较两个文档指纹中不相同的个数来度量两个文档之间的相似度。海明距离越大,代表两个字符串的相似度越低,反之则两个字符串相似度越高。对于二进制字符串而言,可以使用异或运算来计算两个二进制的海明距离。

下面结合实施例对本发明作进一步描述。

实施例1:

设a,b为两个二进制数,其中a=00110,b=01110。则可知a,b两个二进制数只有第二位不同,故hamming(a,b)=1。也可利用异或操作,统计异或结果中1的个数。共有1个1,故海明距离为1。

传统simhash算法在权重计算方面通常设置为1或特征词出现的次数,这很容易造成信息丢失,导致最终的simhash指纹准确性降低,并且根据simhash算法可知它不表现出词汇分布信息,关键特征词调整顺后,不会影响最终生成的simhash指纹。

如图2所示,两个关键词的位置调整下就可能导致最终的意义大不相同,但是传统的simhash算法生成的指纹却是一样的。

实施例2

为了提升simhash算法的文本去重效果、准确率,解决simhash算法无法体现分布信息的缺点,提出了一种基于信息熵加权的simhash算法(简称e-simhash)。该算法引入tf-idf和信息熵,通过优化simhash算法中的权重及阈值计算,增加文本分布信息,使得最终生成的指纹更能体现关键信息的比重,并对指纹信息与权重的关联性进行了分析。

仿真实验表明:优化权重计算能有效的提升simhash算法的性能,e-simhash算法在去重率、召回率、f值等方面均优于传统simhash算法,并且在文本去重方面取得了良好的效果。

在本发明中,(1)词频-逆向文件频率包括:

词频-逆向文件频率(tf-idf)算法是一种常用的文本特征权重计算方法,特征词tk在文档dj中的tf-idf值记为tfidf(tk,dj),有如下定义:

定义二:特征次tk在文档dj中出现的频率tf(tk,dj)为

式中nj,k表示特征词tk在文档dj中出现的次数,∑inj,i表示文档dj中的所有特征词的个数。

定义三:反文档频率idf(tk,dj)是权衡特征词重要性的系数,其定义为:

式中:{j:tk∈dj}为含有特征词tk的文档综述,|d|为语料库中的文件总数。

定义四:tf-idf函数,特征词的词频权重定义为:

wk=tfidf(tk,dj)=tf(tk,dj)*idf(tk)(5)

在本发明中,(2)信息熵包括:

信息熵表示在随机事件发生之前的结果不确定性的量度,以及在随机事件发生之后,人们从该事件中得到的信息量。

根据信息熵的定义:

h(x)=-∑(xi∈x)p(xi)log2p(xi)(6)

其中x表示信息概率空间x=(x1:p(x1),x2:p(x2),...,xn:p(xn)),h(x)表示随机变量x不确定性的量度。

在本发明中,(3)左右信息熵

左右熵是指多字词表达的左边界的熵和右边界的熵。左右熵的公式如下:

式中,w表示某个单词,el(w)表示该单词的左熵,p(aw|w)表示该单词左侧出现不同词的概率,a变量是一个变化值,表示与w相结合的词汇。er(w)为右熵同上。

在本发明中,(4)熵加权计算法包括:

本发明采用熵加权计算方法

这里对特征词左右信息熵取平均。用hk(w)来表示该单词的熵信息量。把熵因子hk加入权值计算公式中,取两者的平方平均数作为词权重,如下所示:

上式的物理意义为:特征词tk在文档dj中出现的次数越多,在训练集中出现该特征词的文档越少,并且其信息量越大,则其权重越高。

在本发明中,基于熵加权的simhash算法(e-simhash)具体包括:

首先利用基于tf-idf算法与信息熵进行加权得到权重,并按照其在文档中的分布进行排序,针对每个特征词汇生成的hash将再与其所在位置进行异或。

但是经过改进的权重计算后,由于训练集的不完整等因素,会导致部分特征次权重过大,最终引起查准率下降,为了解决这一问题,引入权重阈值wt。下面就权重不均导致的问题进行证明。

设一个文档中提取出n个关键词分别为{p1,p2,p3,...pn},各关键词的权重为w={w1,w2,w3...,wn}。对n个关键词生成hash值,其结果为h={h1,h2,h3,...,hn},经过叠加后生成二级指纹f={f1,f2,f3,...fm},m为指纹位数,最后根据f中fi是否大于0生成simhash指纹为s。

则若存在某一特征词pk,其权重

wk>wj,j∈[1,n]∩j≠k(11)

则s主要由pk决定。证明如下:

设hi={ai1,ai2,ai3,...,aim},aij是一个二进制变量,则

提取出wk,则有

因wk>>wj,故:

所以此时:

最终有f主要与pk相关,证明完成。

以上证明同时也反映出权重对simhash指纹的影响。

引入权重阈值后,此时的权重计算如式(16)所示:

综上所述,e-simhash算法流程如图3所示。

e-simhash算法与传统的simhash算法有以下三点不同,主要在tf-idf的基础上引入信息熵进行特征词权重计算,并使用两者的平方平均数作为最后的特征词权重,同时为了避免权重过高的情况导致指纹失真,引入权重阈值,计算方式如式(16)所示。最后在生成特征词hash时与特征词位置进行异或,使其hash包含文档的位置分布信息。

下面结合具体实验、仿真对本发明作进一步描述。

仿真实验与分析:本发明主要模拟真实的应用场景,验证e-simhash算法的性能是否比传统simhash算法优越。

实验环境及数据集:

实验环境部署在一台台式机上,机器参数如下:

表1实验环境参数

数据集来自搜狗实验室中的全网新闻数据2012版,它是来自多家新闻站点近20个栏目的分类新闻,剔除低于800字符的数据,并从中随机选取1565篇进行后续实验。

首先从1565篇新闻中,根据修改比例,随机选取若干篇新闻进行修改、删除、移位、替换等随机操作,并控制修改后的文章与原始文章有一定阈值t的相似度,生成待测样本集,之后使用传统simhash与本专利中的算法进行比较,统计实验的相关指标。

实验结果分析

实验结果中常用四种指标进行评估,分别是去重率、查准率、召回率以及f值,其中去重率是指分类正确的样本数与总样本的比值,就本实验而言即预测为同源文章集数与总文章数的比值。

下面结合具体实验对本发明作进一步描述。

实验一:去重率对比:

在1565篇新闻中随机选取1162篇进行任意修改,选取不同的海明距离,对比两种算法中的准确率,试验中t=15%,即每篇新闻保持不超过15%修改,指纹长度为128位,词权重阈值wt=90,实验结果如下图4所示。

实验结果表明在海明距离大于2时,e-simhash算法均具有很高的去重率。在实际应用中海明距离一般取10左右,所以e-simhash算法的去重效果更好。

实验二:修改t阈值对比:

本发明实验修改文本的相似度阈值t,分别对5%、10%、15%、20%的修改下,海明距离选为10,即低于10则认为相似,比较两种算法的去重率。从实验结果如图5所示中可知,e-simhash算法去重率分别以0.833:0.679、0.751:0.529,0.687:0.476、0.661:0.451优于传统的simhash算法,并且随着文章变动的增加,其去重率都呈现下降趋势。实验结果表明在不同修改阈值t下,e-simhash算法均优于传统的simhash算法。

实验三:查准率、召回率以及f值对比:

在实验中,从新闻集中随机选取一篇文章进行随机修改,并保证与原文有90%的相似度,对比基于simhash指纹与e-simhash算法的查准率、查全率以及f1值。其中海明距离选取10;实验进行100次,并取他们的平均值,作为最终结果,结果如图6所示。通过实验数据可知,e-simhash算法在查准率0.963:0.818,召回率0.867:0.621,f1值0.912:0.706优于传统的simhash算法。结果表明e-simhash算法在查准率、召回率以及f值方面均比普通的simhash算法有很大的提升,也足以证明e-simhash算法的优越性。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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