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

2个回答

这种规模的数举,完全在内存中做是不行的,利用数据库,分几个步骤完成就可以了。

qq_17260701
qq_17260701 具体是怎样实现的
2 年多之前 回复

首先正规化得到包含省市区行政区划层级的数据
然后分别去比较。

qq_17260701
qq_17260701 这确实是最简单、有效解决办法
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问