NLP匹配城市名称并返回相对匹配分数

NLP匹配城市名称并返回相对匹配分数,nlp,spacy,Nlp,Spacy,我有一个用例,需要在新闻标题中提取不动产名称、城市和州(如果有),并与数据库中可用的记录进行匹配。我能够使用python中的开源NLP统计模型从新闻标题中提取实体,但在匹配城市名称和db记录城市名称时面临问题 例如,将从新闻标题中提取的城市名称“N York”与城市名称为“New York”的DB行进行匹配 我尝试了多个python库,如Fuzzy Wuzzy、Levenshtein distance、Spacy相似性函数,但似乎不适合我的用例 我需要一些关于如何实现城市名称匹配和生成相对匹配分

我有一个用例,需要在新闻标题中提取不动产名称、城市和州(如果有),并与数据库中可用的记录进行匹配。我能够使用python中的开源NLP统计模型从新闻标题中提取实体,但在匹配城市名称和db记录城市名称时面临问题

例如,将从新闻标题中提取的城市名称“N York”与城市名称为“New York”的DB行进行匹配

我尝试了多个python库,如Fuzzy Wuzzy、Levenshtein distance、Spacy相似性函数,但似乎不适合我的用例


我需要一些关于如何实现城市名称匹配和生成相对匹配分数的指导。

在查看您的数据之前,我认为您需要使用一个或另一个版本的编辑距离-如果不是Levenshtein,那么可能是Jaro Winkler,或者任何其他距离函数。甚至可能是多重距离函数的加权平均


如果你给出更多的城市名字配对的例子,你会更容易提出更具体的建议。例如,纽约和纽约之间的JW距离为0.925-这个数字到底有什么问题?

使用语音,它为每个语音创建语音键

phonetics.dmetaphone('New York')
phonetics.dmetaphone('N York')
以上两者都提供了唯一的语音键


我对实现城市名称匹配的建议是使用更好的位置数据库。我强烈建议你退房

它们提供了一个真正庞大的位置数据库。除了城市、国家等的表格外,他们还提供了一个带有别名的AlternateNames表格。例如,“大苹果”和“纽约市”通过外键连接到“纽约市”

除了像“N York”这样晦涩难懂的引用之外,这肯定会满足您的要求。由于你的消息来源是新闻标题,我认为拼写等将得到很好的保留

您可以在此处找到所有数据:


而且它是免费的。

请解释您是如何尝试这些多个库的,以及为什么它们的结果不能让您满意-然后有人可以提出改进的想法。