发明内容
为克服上述现有技术的不足,本发明提供一种基于资讯指纹的资讯去重方法。
实现上述目的所采用的解决方案为:
一种基于资讯指纹的资讯去重方法,其改进之处在于:所述方法包括以下步骤:
I、获取所述资讯的信息;
II、根据所述资讯指纹获取所述资讯的核心词向量;
III、根据所述资讯的指纹信息和所述核心词向量所述资讯进行分组聚类。
进一步的,所述资讯的信息包括标题、标题指纹、正文和正文指纹。
进一步的,所述步骤I包括,提取所述资讯的标题和正文,分别对所述标题和所述正文去噪,通过MD5算法获取去噪后的所述标题和所述正文的标题指纹和正文指纹。
进一步的,所述步骤II包括以下步骤:
S201、对去噪后的正文进行切词,获取各正文词的词频;
S202、按下式计算各正文词的词权重:
IDF为当前正文词词频的倒数;
S203、对获得权重的正文词根据其权重排序,根据所述词权重获得核心词,组成所述核心词向量。
进一步的,所述步骤III包括以下步骤:
S301、接收第一个资讯作为标准资讯,将所述标准资讯的标题、正文指纹、正文作为第一个堆的标题、正文指纹和标准正文;
S302、接收新资讯,依次判断是否加入所述堆中,加入则将所述新资讯的标题、正文指纹、正文分别加入标题集合、正文指纹集合、标准正文集合,否则作为另一堆。
进一步的,所述步骤S302中包括以下情况:
若所述新资讯的标题与所有堆的标题集合中的标题相同,则将该资讯归入此堆;
若所述新资讯的正文指纹与所有堆的正文指纹集合中的正文指纹相同,则将该资讯归入此堆;
若所述新资讯的标题与所有堆的标题集合的标题均不相同,正文指纹与正文指纹集合中的正文指纹均不相同,则计算所述新资讯的正文特征词向量与所有堆的标准正文的相似度,若所述正文特征词向量与某堆的标准正文相同或相似,则将该资讯归入此堆;
若所述新资讯的正文特征词向量与所有堆的标准正文无相同也无相似,则计算所述新资讯的正文特征词向量与所有堆的判别正文集合的相似度,若所述正文特征词向量与某堆的判别正文集合中的正文相同或相似,则将该资讯归入此堆;
若所述新资讯的标题与所有堆的标题均不同,正文与所有堆的标准正文均不相同或相似,与所有判别正文集合均不相同或相似,则单独成为一堆。
进一步的,所述标题相同的判定方法包括:
若两个所述标题的指纹完全相同则认为两标题相同,否则不同。
进一步的,所述正文相同或相似的判定方法包括:
若正文词个数N大于或等于16,确定前十六个词为核心词,第一至第三的核心词的内容相同且第四至第十六的核心词内容相同,则判定两资讯的正文相同;若第一至第三的核心词的内容相同且第四至第十六的核心词中至少有10个词内容相同,则判定两资讯的正文相似;否则判定两资讯不同;
若所述正文词个数N的范围为10≤N<16,确定前十个正文词为核心词,第一和第二的核心词内容相同且第三至第十的核心词内容相同,则判定两资讯的正文相同;若第一和第二的核心词内容相同且第四至第十六的核心词中至少有6个词内容相同,则判定两资讯的正文相似;否则判定两资讯不同;
若所述正文词个数N的范围为0≤N<10的正文词,确定所有正文词为核心词,核心词内容相同,则判定两资讯的正文相同;否则判定两资讯不同。
与现有技术相比,本发明具有以下有益效果:
1、本发明提供的去重方法,基于指纹计算法,对比现有技术中效果单一的去重方法,本发明通过关键词及正文指纹合二为一的方式提高了召回率,提高5%左右,达到75%的召回率,准确率达到90%以上,处理千万数据在一个小时左右。
2、本发明提供的方法对文本向量的排序通过编码进行排序,解决了字符串对比的效率问题。
具体实施方式
下面结合附图对本发明的具体实施方式做进一步的详细说明。
本发明提供一种基于资讯指纹计算的资讯去重的方法,该方法以资讯或新闻的标题和正文作为搜索的依据,进行去重。该方法包括以下步骤:
步骤一、获取所述资讯的信息;
步骤二、根据所述资讯指纹获取所述资讯的核心词向量;
步骤三、根据所述资讯的指纹信息和所述核心词向量所述资讯进行分组聚类;
步骤一中,获取资讯的信息,所述资讯的信息包括标题、标题指纹、正文和正文指纹。
所述步骤一包括:获取资讯的标题指纹和获取资讯的正文指纹。其中,
1、获取资讯的标题指纹包括以下步骤:
I、标题去噪。
包括:去除“图”,“组图”等噪音信息;全角转半角;英文大写转小写;去除标点,符号,去除停用词以及高频词。
II、对去噪后标题取MD5(信息摘要算法5),作为标题指纹。
2、获取资讯的正文指纹包括以下步骤:
I、正文去噪。
包括:去除正文中重复的句子;全角转半角;英文大写转小写;只保留GBK字符。
II、对去噪后选取正文中最长的三个句子,首先按照句子长度再按照位置的先后关系,选取正文中去噪后的三个最长句子,组成一个字符串,通过MD5生成正文指纹。
步骤二、II、根据所述资讯指纹获取所述资讯的核心词向量。
具体包括以下步骤:对去噪后的正文进行切词;获取各词的词频;计算各词的词权重;根据所述词权重获得核心词,组成所述核心词向量。
获取各词的词频的方法为:根据切词获得所述正文所有词,遍历后合并相同的词,获得所述正文中词总数N和每个词的词频,去除单字。
计算词权重的方法为:对于合并相同词后获得的各正文词,分别计算其权重;依次遍历正文词;计算当前正文词权重。
其中,IDF(inverse document frequency)表示反文档频率,IDF是文档频率(DF documentfrequency)的倒数。
所述当前正文词权重小于零,则当前正文词权重为零。
获得核心词的方法为:
对获得权重的正文词根据其权重排序,若正文词个数大于或等于16的正文词,根据权重前16个的上述正文词形成核心词向量(最重要的前16个词Top1~Top16组成)。
若正文词个数范围为10≤N<16的正文词,根据前十个正文词形成核心词向量(最重要的前10个词Top1~Top10组成)。
若正文词个数范围为0≤N<10的正文词,根据所有正文词形成核心词向量(所有词Top1~TopN)。
步骤三,根据所述资讯的信息和所述核心词向量所述资讯进行分组聚类。
步骤三包括:根据资讯的标题指纹、正文指纹等信息分别判断两资讯的正文和标题是否相同。
标题的判断方法为:对于标题而言,若两个标题的指纹完全相同则认为两标题相同,否则不同。
正文的判断方法为:对于正文而言,若两个正文的指纹判断两正文相同、相似或不同。
正文相同的情况:
正文词的个数N=16:两篇正文的核心词Top1~Top3内容相同、顺序可能不同;且Top4~Top16内容相同,顺序可能不同。
正文词的个数N=10:两篇正文的核心词Top1、Top2内容相同、顺序可能不同;且Top3~Top10内容相同,顺序可能不同。
正文词的个数N<10:两篇正文的核心词向量Top1~TopN内容相同、顺序可能不同。
正文相似的情况:
正文词的个数N=16:两篇正文的核心词Top1~Top3内容相同、顺序可能不同;且Top4~Top16至少有10个词内容相同,顺序可能不同。
正文词的个数N=10:两篇正文的核心词Top1、Top2内容相同、顺序可能不同;且Top4~Top16至少有6个词内容相同,顺序可能不同。
正文词的个数N<10:只有相同或不相同,不存在相似。
步骤三还包括:对资讯按所有要素进行分组聚类。
分组包括标题集合TitleSet、正文指纹集合ContentSet、标准正文StdContent、判别正文集合CheckContentSet、其他正文集合OtherContentSet等。
标题集合包括该堆中各资讯的标题。
正文指纹集合包括该堆中各资讯的正文指纹。
标准正文包括该堆中与第一条资讯相同的资讯的正文。
判别正文集合包括该堆中与第一条资讯相似的资讯的正文。
其他正文集合包括与该堆中任一资讯既不相同也不相似的资讯的正文。
其中,标题集合TitleSet、正文指纹集合ContentSet、标准正文StdContent、判别正文集合CheckContentSet均可作为继续聚类的依据。判别正文集合不能用作继续聚类的依据,实现时可以不必保存。
分组方法具体包括以下步骤:
I、每堆的第一条资讯的标题加入标题集合、正文即为标准正文、标题ID即为堆ID。
II、接收一条新资讯,对资讯进行相同、相似或不同的判断,根据结果将资讯依次加入堆中或作为另一个新堆。
对资讯进行相同、相似或不同的判断:
对于一条新的资讯,将其标题T与已有所有堆的标题集合进行相同判定,若标题T与某堆的标题集合中的标题相同,则将该资讯归入此堆。
对于一条新的资讯,将其正文指纹CF与已有所有堆的正文指纹集合进行相同判定,若正文指纹CF与某堆的正文指纹集合中的正文指纹相同,则将该资讯归入此堆。
标题T与所有堆的标题均不相同,正文指纹CF与所有堆的正文指纹均不相同,则将正文特征词向量CF与所有堆的标准正文StdContent进行核心词向量相似度计算,若正文特征词向量CF与某堆的标准正文StdContent完全相同或相似,则将该资讯归入此堆。
若正文特征词向量CF与所有堆的标准正文StdContent无相同也无相似,则将正文特征词向量CF与所有堆的判别正文集合CheckContentSet进行核心词向量相似度计算,若正文特征词向量CF与某堆的判别正文集合CheckContentSet中的正文完全相同或相似,则将该资讯归入此堆。
此资讯与所有标题集合均不同,与所有标准正文StdContent均不相同或相似,与所有判别正文集合CheckContentSet均不相同或相似,则单独成为一堆。
将一条资讯被收录到一堆包括以下步骤:
①将标题T加入此堆的标题集合TitleSet。
②将正文指纹CF加入此堆的正文指纹集合ContentSet。
若正文特征词向量CV与标准正文StdContent相似,则加入判别正文集合CheckContentSet。
若正文特征词向量CV与标准正文StdContent不相似,则加入其他正文集合OtherContentSet。
将堆ID作为资讯的内容ID。
步骤四、获得去重结果。
将相同标题的聚入一个堆,不同堆的标题绝不相同。堆中所有标题都在标题集合中,能够聚入所有相同标题的资讯。
标准正文可以聚入与之相似的资讯,同时,只有与标准正文相似的资讯正文才能作为判别正文,才能进一步聚入相似正文的资讯。
限制了正文漂移的范围,最多漂2次。
最后应当说明的是:以上实施例仅用于说明本申请的技术方案而非对其保护范围的限制,尽管参照上述实施例对本申请进行了详细的说明,所属领域的普通技术人员应当理解:本领域技术人员阅读本申请后依然可对申请的具体实施方式进行种种变更、修改或者等同替换,但这些变更、修改或者等同替换,均在申请待批的权利要求保护范围之内。