我有一个用例,我需要在新闻标题中提取房地产属性名称,城市和州(如果可用),并与数据库中可用的记录进行匹配。我能够使用python中的开源NLP统计模型从新闻标题中提取实体,但在将城市名称与db记录城市名称匹配时遇到了问题。
例如,将新闻标题中提取的城市名称“ N York”与城市名称为“ New York”的数据库行进行匹配。
我尝试了多个Python库,例如Fuzzy Wuzzy,Levenshtein距离,Spacy相似性函数,但似乎不适合我的用例。
我需要一些有关如何实现城市名称匹配以及生成相对匹配分数的指导。
答案 0 :(得分:1)
在查看数据之前,在我看来,您需要使用一个或另一个版本的编辑距离-如果不是Levenshtein,则可能是Jaro Winkler,或者距https://pypi.org/project/textdistance/的任何其他距离函数。甚至可能是多个距离函数的加权平均值。
如果您提供更多关于困难城市名称对的示例,则更容易提出更具体的建议。例如。纽约和纽约之间的JW距离是0.925-这个数字到底有什么问题?
答案 1 :(得分:0)
使用语音,它将为每个语音创建语音键,
phonetics.dmetaphone('New York')
phonetics.dmetaphone('N York')
以上两者都为您提供了独特的语音键
答案 2 :(得分:0)
我对实现城市名称匹配的建议是使用更好的位置数据库。我高度建议您结帐www.GeoNames.org。
它们提供了一个真正庞大的位置数据库。除了用于城市,国家等的表外,它们还提供带有别名的AlternateNames表。因此,例如,“大苹果”和“纽约市”通过外键连接到“纽约市”。
除了像“ N York”这样真正晦涩的引用外,这肯定会满足您的要求。而且由于您的消息来源是新闻头条,所以我认为拼写等将非常保守。
您可以在此处找到所有数据: http://download.geonames.org/export/dump/
它是免费的。