首页 > 解决方案 > 与 NLP 匹配的字符串

问题描述

我有两个dataframes,df1df2, 分别有 ~40,000 行和 ~70,000 行关于 A 国投票站的数据。

这两个数据帧有一些共同的列,如“polling_station_name”、“province”、“district”等,但是df1有纬度和经度列,而df2没有,所以我试图string matching在两个数据帧之间做,所以至少有一些行df2将提供可用的地理位置。我在进行字符串匹配时阻塞了“区”列。

这是我到目前为止的代码:

import recordlinkage
from recordlinkage.standardise import clean
indexer = recordlinkage.Index()
indexer.block('district')
candidate_links = indexer.index(df1, df2) 

compare = recordlinkage.Compare()
compare.string('polling_station_name', 'polling_station_name', method='damerau_levenshtein', threshold=0.75)
compare_vectors = compare.compute(candidate_links, df1, df2)

这产生了大约 12,000 个匹配项,但是我注意到一些投票站名称被错误匹配,因为它们的名称在不同位置时非常相似 - 例如'government girls primary school meilabu'并且'government girls primary school muzaka'明显不同,但它们正在匹配。

我认为在这里使用 NLP 可能会有所帮助,看看是否有某些词在数据中出现频率很高,例如'government', 'girls', 'boys', 'primary','school'等,这样我就可以减少对这些词的重视,而将更多的重点放在meilabu等等muzaka。进行字符串匹配,但我不太确定从哪里开始。(作为参考,许多投票站是“政府(即公立)学校”)

任何建议将不胜感激!

标签: pythonpandasdataframenlpstring-matching

解决方案


主题非常广泛,只需注意标准方法:

  • TFIDF:词频-逆文档频率通常用作加权因子。
  • 使用余弦相似度测量两个句子之间的相似度

推荐阅读