使用一组长规则规范化公司名称

时间:2014-12-12 13:25:07

标签: parsing text-mining data-cleansing

我们有一个包含公司名称和其他特征的大表(> 30M行)。

数据:

Company_id  Type Name               Adress  (more...)
497651684   8    Big mall Toys'rUs  BigMall adress   
468468486   1    McDonnnals         WhateverStreet
161684314   8    Toys R Us          Another street
546846846   1    BgKing             BigMall2 adress
484984988   5    IKEA store103      Other Mall
489616848   5    Mss Duty           Addrs
484984984   5    Pull&Bear          Adrss
468484867   5    Zara store         Adress2
(...)

从该表中,我们已经确定了大约300个公司组,其名称可以通过以下方式轻松规范化:

if type is (8,10,85,2)
and
(
contains name ("toys","us")
or
stringDistance name("toys R us") < (X)
)
new name is "Toys 'R us"


if type is (1,90,7)
and
(contains name("donalds")
or
stringDistance name("mcdonalds") < (X)
)
new name is "Mc donalds"

(...)

我不确定什么是最好的方法。我们之前采用了一种特殊方法,采用较小的集合,并采用更简单的逻辑来实现快速解决方案。但是这次我想知道什么是理想的方式。

1 个答案:

答案 0 :(得分:0)

字符串编辑距离,例如stringDistance名称(“玩具R我们”)&lt; (X)是一个很好的方法,我还建议尝试使用聚类,尤其是层次聚类。

属于同一群集的所有名称都应具有相同的标准公司名称。为了使上述工作,你将不得不切割层次结构的树状图(http://en.wikipedia.org/wiki/Dendrogram)非常接近叶子。您将不得不尝试群集的不同功能(用于计算距离或相似性的功能)以获得合适的集合。示例可以将每个公司名称表示为字符向量,然后使用余弦相似度来测量距离。顺便说一句,余弦相似性对文本很有用。