【记录】文章相似度计算开发(附代码)

本文介绍了如何计算文章相似度,包括设计思路、前期准备、开发流程和步骤说明。使用腾讯词向量包进行中文分词和向量转换,通过余弦相似度计算文本相似性,并结合MysqlBinlog实现实时数据处理。当前方案存在效率和精准度问题,后续优化考虑采用pyflink集群和近义词库来提升性能和准确性。
摘要由CSDN通过智能技术生成

写在前边:目前已经通过爬虫等手段获取了千万级的文章类数据,但是目前这些数据是只是简单的基于表层的应用,相对粗粒度的统计,文本之间的很多信息并没有被良好的利用起来。为了提高数据的使用率并获取更多有用信息,尝试用常见的NLP来计算文章之间的相似度,探索文章与文章之间的关联关系,了解文章的传播范围,为后续灵活使用数据提供技术基础。

1、设计思路

1.1、 数据分析

  • 数据样式上复杂。在数据探索阶段发现除了有汉语、英语,同时也有不少藏文、特殊符号构成的文章,样式上相对多样,对数据处理有更高的要求
  • 数据长度相对较长,大部分都是长文本类数据,一篇文章长的有上万个词语,对数据处理时候的速度影响较大,且在词语数量过多的情况下,会有不少无效词语对整片文章造成“中庸”的影响,即钝化的文章的特征
  • 文章内夹杂大量emoji符号,在对文章进行分析的时候,很难去定义符号的含义,如果不考虑这类数据的特征时,实际上有大量的信息被忽略了
  • 语义分析复杂,在长文本的特征提取时,使用常规的句法分析工具,提取“主+谓+宾”之类的,作为文本的切分结果。但是句法分析的耗时比较高,适合数据量小的场景,在精度要求没那么高的时候不考虑句向量分析。

1.2、流程设计

  • 存量数据相似度计算
    在这里插入图片描述

  • 新增数据相似度计算
    在这里插入图片描述

2、前期准备

2.1、 表设计

  • word_vec

    字段名称 字段英文名 字段类型
    文章id id int
    文章向量 vec varchar
  • similarity_results

    字段名称 字段英文名 字段类型
    文章id id int
    与id进行对比的文章id hit_id int
    相似度 similarity float

2.2、 腾讯词向量包下载

考虑到有实时需求,不再通过tf-idf来提取特征。采用腾讯词向量包来计算向量

2.3、 用到的python包

gensim  提取词向量
jieba   分词
mysql.connector  mysql连接器
numpy  计算包
json   解析json
time   获取时间
kafka  消费topic
sklearn 机器学习包

2.4、 MysqlBinlog实时读取

需要提前安装部署deb

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值