首页打开

科技观察丨使用Python语言实现新闻文本相似度计算

科技观察 | 2024-05-06 23:05:46原创

张震   来源:大众新闻客户端

新闻内容在互联网传播过程中,有的平台转载稿件链接,而大部分平台是转载新闻内容的数据副本,就是复制一份再发布。在采用大数据技术监测分析新闻内容传播过程中,计算新闻文本之间的相似度来判断是否是同一个新闻内容作品成为核心基础工作之一。

这种比对工作,当只有一篇两篇稿件时,哪再简单不过了,分别打开看看,人工判断一下就可以了。但实际当中,那可是每天都有成千上万的新闻作品被各种平台转载传播,几乎是海量啦,再用单纯人工查看比对是很难快速完成了。

程序员有程序员的办法。笔者通过采用Python语言编写程序代码,对新闻内容文本数据进行预处理,对两个新闻文本内容自动计算余弦相似度实现自动批量判断两文本相似度,可以大大解放人工劳动。

一、为什么要对新闻文本进行预处理

新闻内容传播渠道多样,各平台采用了各自不同的显示样式控制标签(比如CSS样式控制标签,HTML格式标签)。这些不同的样式控制标签与新闻内容混合在一起形成各传播渠道上的新闻。如果对这些控制标签和新闻内容签混合在一起的原始文本内容计算出的相似度会很小,原因就在于差异较大的样式控制标签的影响。

因此,就需要把这些混在正文中的不同样式控制代码过滤掉,只保留新闻内容数据,再来比对才更有意义。

笔者反复测试,采用Python语言正则表达式,将新闻文本内容中的中文汉字全部匹配出来,清除过滤掉样式控制标签,仅比较提取的两篇新闻内容部分,计算出来的相似度能够保证基本正确,即使有偏差,也极其微小。

二、如何计算新闻文本相似度

相似度是一个比例,所以是一个0到1之间的小数。如果这个相似度越接近1,表示两篇新闻文本越接近一致,如果相似度越接近0,就表示两篇新闻极不一致。通常,我们会设置一个阈值0.5,如果相似度小于0.5,那就认为两篇新闻不一致。

在Python语言中,如果要计算文本相似度的话,需要将文本转换为向量。笔者使用TF-IDF(词频-逆文档频率)方法将文本转换为向量。在完成向量转换后,这样两篇新闻文本的相似度计算就可以通过计算余弦相似度来得出。余弦相似度就是通过计算两个向量的夹角余弦值来评估它们之间的相似性。

三、示例代码

首先,确保Python环境中安装了必要的库:sklearn、jieba(针对中文文本分词)。

可以使用pip命令安装: pip install sklearn jieba

其中,给出了最核心的两个函数的具体实现。第一个函数get_chinese_character,通过输入的正则表达式参数Remethod实现对新闻文本内容Text的中文汉字提取,然后使用jieba分词进行分词处理。第二个函数tf_clac,实例化TfidfVectorizer类,对两篇预处理后新闻文本内容,实现文本转换为向量,然后使用sklearn的cosine_similarity函数计算出向量间的余弦相似度,即得出新闻文本相似度。

(大众日报·大众新闻客户端 张震 编辑 汤代禄 燕烽)

大众报业集团信息技术部 出品

责任编辑:燕烽