最近公司有个需求,要求要对2800万客户的地址(短中文文本),从中找出两两地址相似的客户。比如A 客户填写的地址与B客户填写的地址相似,不要求完全想等,就可以认为他们可能存在关系。最后把所有两两有地址相似的客户都导出。这个一个全量的、批量的相似地址的计算。
现在在做的做法是,通过中文分词,Tf-idf 把地址中文文本转成特征稀疏向量,然后这2800万条向量做笛卡尔积或阶乘式的匹配,进行两两余弦距离计算,满足设定夹角余弦距离阈值才给输出,或写进表里。这样做,对于少量数据可以用,但是千万级数据的笛卡尔积或阶乘式的匹配带来的计算量实在太恐怖了,在spark 上跑,一会就full GC了,或是报数组长度超过java允许的最大长度的错误。
千万级文本特征向量互相匹配计算余弦距离带来大量计算量该如何解决
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-