我有几个表,它们的列名不同,通过ETL进行映射。总共有大约200个表和500个属性,所以数据集并不庞大。
一些列的映射如下所示:
startDate EFT_DATEstartDate START_DATEstartDate entryDate
如您所见,同一个列名可以在不同的表中映射到不同的名称。
我试图解决以下问题:
给定两个模式,我希望找到属性名称之间的匹配。
我想知道是否有办法利用gensim来解决这个问题,类似于Google示例中的源词。我面临的挑战是使用哪个数据集来训练模型。我也在考虑是否有其他方法来解决这个问题。
回答:
您可以通过预处理每个术语来应用基本的文本分析器
。
- 按任何非字母字符分割。
- 例如,
EFT_DATE
变为[eft,date]
- 例如,
- 按驼峰命名法分割。
- 例如,
startDate
变为[start,date]
- 例如,
- 将每个术语转换为小写
- 对每个标记应用模糊字典查找
- 例如,
startt
->start
(打字错误检测…)
- 例如,
- 应用词干提取
- 例如,
starting
->start
- 例如,
- 可能应用同义词转换。
- 例如,
begin
->start
- 例如,
可选地对术语进行排序:
dateStarted
->[date,start]
startingDate
->[start,date]
->[date,start]
现在您可以应用集合距离
操作 – 这是O(^2)
。考虑到您的中等基数,这是可以接受的。如果您有更大的术语集,那么以下可扩展的集合比较方法可以帮助降低复杂度。
LSH Forests
SimHash
/MinHash
- 理论 https://stackoverflow.com/a/46415603/1056563
- python
- simhash https://github.com/leonsim/simhash
- minhash/simhash/others https://github.com/ekzhu/datasketch