龙空技术网

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

万山数据 59

前言:

今天兄弟们对“图像相似度算法java”大体比较关切,姐妹们都需要分析一些“图像相似度算法java”的相关内容。那么小编同时在网络上汇集了一些关于“图像相似度算法java””的相关内容,希望朋友们能喜欢,大家一起来学习一下吧!

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

文本相似度计算测试

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

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


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


(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))))ascorrelation

(2)ETL方案(Talend)

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

文本相似度计算测试结果

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

ETL为Talend Open Studio的Windows版本。

(1)SQL批处理

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

运行截图:

处理前的数据截图:

处理后的数据截图:

(2)ETL处理

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

运行过程截图:

处理后的数据截图:

(3)测评结果对比


标签: #图像相似度算法java #文本相似度函数