本算法是《利用余弦相似度对大量文章排重》的升级版本,转载请注明出处。
概念定义:
关键词重合度:
文章a的关键词集为A,文章b的关键词集为B,文章a与b的关键词重合度为:COUNT(A交B)/COUNT(A)
假分页文章:
将多篇相关文章糅合在一起作为一篇新文章
一、通过关键词选出相关文章
1、将最近10天的所有有效文章,根据长度,按1%的比例提取7-20关键词保存(100个字提取1个词,不足7个取7个,超过20个取20个)
2、新进文章A按此方法取词,与每篇文章的关键词做交集,若以往文章与新文章A关键词重合度大于70%,将该文章加入候选集
二、计算新文章与候选集中文章的片段重合关系
1、文章预处理(统一全角、半角,去掉多余的空白符、圆括号内容等)
2、计算相同段落比率:相同段落数/MIN(文章A段落数,文章B段落数)
3、剔出文章正文所有空白符,计算长度比:MIN( 文章A长度,文章B长度 )/MAX(文章A长度,文章B长度)
4、用符号集[,。,\!!?\?;;]拆分正文,计算:
相同句子比率:相同句子数/MIN(文章A句子数,文章B句子数)
相同字符比率:相同句子总字数/MIN(文章A字符数,文章B字符数) //用于防止关键长句一样,辅助短句不一样
5、根据以上参数判断两篇文章关系
if 相同句子比率 > 0.7 or 相同字符比率 > 0.6
if 长度比 > 0.6
两篇文章相同或者相似
else
if 相同段落比率 > 0.4
长文章包含短文章
else
短文章是长文章的句子摘要
6、如果没有命中以上关系,计算两篇文章的余弦相似度
if 余弦相似度 > 0.9 and 长度比 > 0.8 and 相同句子比率 > 0.5
两篇文章相似
三、从以上关系中,进一步判断是否是“假分页”
1、如果包含关系中的长文章已被标记问假分页,包含关系为假分页
2、如果两篇文章相似且其中一篇文假分页,两篇均为假分页
3、如果文章B包含文章A,从历史记录中提取文章B的包含关系,如果文章B包含另外一篇文章C,通过第二步的算法计算文章C与文章A的关系,如果A与C无关,则文章B为假分页,将文章B置为无效,重新计算与文章B相关的文章的相似关系
四、更新新文章的指向关系
经过以上步骤的计算,得到新文章A与以往文章的一系列关系
1、按以上计算结果及链接的引用方向,将关系分为“入”与“出”两组
2、如果存在“出”关系,忽略“入”关系,按照“包含、相似、摘要、发布时间”的优先级从“出”关系中选择一条,将新文章指向选中的文章。
3、如果存在入的关系且不存在出的关系,将其他文章及它们的“入”关系文章指向新文章A
五、TODO
1、新文章加入时自动计算原始出处
2、利用相似性的计算结果推荐相关文章
评论