ClickHouse自然语言处理技术之文本相似度计算

文本相似度的计算场景比较复杂,有时不能直接使用SQL的JOIN关键字进行关联。但需要关联的表中均有一列文本,可通过其文本相似度进行关联。比如从互联网上抓取的公共资源交易的招标公告和中标公告,如果要把同一个项目的招标公告和中标公告关联起来,就需要用到两个公告的公告标题进行文本关联。

文本相似度计算测试

(1)源表结构如下,其中str、str1分别为两个文本字段,需要在目标表中增加一个str、str1文本相似度标签;

(2)文本相似度计算公式:


31497541e88cb581aae572610196cf3f.jpeg

例如“北京万山数据科技”与“北京万山数据科技公司”的相似度为

5793142ac7176dfba46377eddaa0a04a.jpeg

(3)测试数据条数:1000000条。

文本相似度计算测试

(1)SQL方案

通过正则提取,将str和str1转换成数组,求出两个数组的交集数组,然后用交集数组的长度除以str和str1不重复长度之和减去交集数组长度,再开3次方,SQL实现如下:

extractAll(ifNull(str,’’),’.’) as arr,

extractAll(ifNull(str1,’’),’.’) as arr1,

cbrt(length(arrayIntersect(arr,arr1))/(length(arrayDistinct(arr))+length(arrayDistinct(arr1))-length(arrayIntersect(arr,arr1))))as correlation

0c9e7491d6b0e7e70d327755aab058f0.jpeg

(2)ETL方案(Talend)

使用Talned Open Studion作为ETL工具,需要扩展一个JAVA函数,以实现相似度的计算。实现的代码如下:

cce6d073537374484b933a577b27eb0f.jpeg

84d56314db57b719301bfac7a4a718fb.jpeg

文本相似度计算测试结果

测试环境为笔记本电脑,CPU为Intel is-8265U,内存为8G,硬盘为256G的固态硬盘;数据库为clickhouse,安装于WSL2(ubuntu18.04)。

ETL为Talend Open Studio的Windows版本。

(1)SQL批处理

本方案运行时间为3.7秒,平均每秒处理数据超过27万。

运行截图:

2581cf022d4e32f78a1056de6e973e06.jpeg

处理前的数据截图:

9720db0c61426bcab3668f8e23fc3387.jpeg

处理后的数据截图:

47585838fe3d97a86a32b2813f23c0ca.jpeg

(2)ETL处理

ETL处理运行的时间为12.86秒,平均每秒处理不到8万条数据。

运行过程截图:

7cbf1b167a20c5705dfff82ce49fdd49.jpeg

处理后的数据截图:

b03544ff0c16c31d0e18313918bcff02.jpeg

(3)测评结果对比

260d4c143ce123b076c001783864b633.jpeg


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值