本文重新整理的更详细规范的介绍见这里
判断文本的相似度在很多地方很有用,比如在爬虫中判断多篇已爬取的文章是否相似,只对不同文章进一步处理可以大大提高效率。
在Python中,可以使用gensim模块来判断长篇文章的相似度。点这里进官网
官方的文档部分内容实在太含糊了,网上也找不到很有用的文章,所以我现在写下来记录一下自己的踩坑史。
实际中我用的是数据库抽取的批量文章,所以就不放上来了,只讲代码本身使用。
假定最初给定的格式是内容为(content_id, content)的cur数据库游标。
初步处理
在使用gensim模块之前,要对爬取的文章做一些清洗:
del_words = {
'编辑', '责编', '免责声明', '记者 ', '摘要 ', '风险自担', '扫码下载', '(原题为', '依法追究', '严正声明',
'关键词 ', '原标题', '原文', '概不承担', '转载自', '来源:', '仅做参考', '仅供参考', '未经授权',
'禁止转载', '阅后点赞', '研究员:', '本文首发', '微信公众号', '个人观点', '蓝字关注', '微信号:', '欢迎订阅', '点击右上角分享', '加入我们'
}
def filter_words(sentences):
'''
过滤文章中包含无用词的整条语句
:sentences list[str]
:return list[str]
'''
text = []
for sentence in sentences:
if sentence.strip() and not [word for word in del_words if word in sentence]:
text.append(sentence.strip())
return text
contents = []
for id_, content in cur:
sentences = c