【问题标题】:NLP Matching city names and returning relative match scoreNLP 匹配城市名称并返回相对匹配分数
【发布时间】:2019-05-21 15:27:29
【问题描述】:

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

例如,将从新闻标题中提取的城市名称“纽约”与城市名称“纽约”的数据库行进行匹配。

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

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

【问题讨论】:

  • 请说明您是如何尝试这些多个库的,以及为什么它们的结果不能让您满意 - 然后有人会想出要改进的地方。

标签: nlp spacy


【解决方案1】:

在查看您的数据之前,在我看来,您需要使用一个或另一个版本的编辑距离 - 如果不是 Levenshtein,那么可能是 Jaro Winkler,或者来自 https://pypi.org/project/textdistance/ 的任何其他距离函数。或者甚至可能是多个距离函数的加权平均值。

如果您提供更多复杂城市名称配对的示例,则更容易提出更具体的建议。例如。 N York 和 New York 之间的 JW 距离是 0.925 - 这个数字到底有什么问题?

【讨论】:

    【解决方案2】:

    我对实现城市名称匹配的建议是使用更好的位置数据库。我强烈建议您查看www.GeoNames.org

    它们提供了一个真正庞大的位置数据库。除了他们的城市、国家等表之外,他们还提供了一个带有别名的 AlternateNames 表。因此,例如,“Big Apple”和“NYC”通过外键连接到“New York City”。

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

    您可以在此处找到所有数据: http://download.geonames.org/export/dump/

    而且它是免费的。

    【讨论】:

      【解决方案3】:

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

      phonetics.dmetaphone('New York')
      phonetics.dmetaphone('N York')
      

      以上都给你独特的音标

      Reference

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-01-17
        • 2020-05-09
        • 1970-01-01
        • 1970-01-01
        • 2022-11-14
        • 1970-01-01
        • 2014-10-18
        相关资源
        最近更新 更多