用于匹配“嘈杂”名称的算法

我有一个应用程序,用于从网络上的不同来源抓取足球比赛结果。不同网站上的球队名称并不一致——例如,曼联在一个网站上可能被称为“Man Utd”,在第二个网站上被称为“Man United”,在第三个网站上被称为“Manchester United FC”。我需要将所有可能的变形映射回一个单一名称(“曼彻斯特联”),并为联赛中的 20 支球队(阿森纳、利物浦、曼城等)重复此过程。显然,我不希望有任何错误的匹配[例如将“Man City”映射到“曼彻斯特联”]。

现在,我为所有可能的组合指定正则表达式——例如,“曼彻斯特联”将是“man(chester)?(u|(utd)|(united))(fc)?”;这对于几个网站来说还可以,但变得越来越笨拙。我正在寻找一种可以避免指定这些正则表达式的解决方案。例如,必须有一种方法可以“评分” Man Utd,使其在“曼彻斯特联”中获得高分,但在“利物浦”中获得低分/零分[例如];我会根据所有可能的解决方案测试示例文本,并选择得分最高的那个。

我的感觉是,该解决方案可能类似于神经网络被训练来识别手写字的经典例子[即存在一组固定的可能结果,并且输入样本中存在一定程度的噪声]

有任何想法吗?

谢谢。


回答:

您可以在所涉及的字符串上使用一些相似性度量和手动调整的阈值。或者,阈值也可以通过一些机器学习方法进行训练。哪种特定的相似性度量效果最佳取决于您要匹配的字符串的类型。您可能还需要在将度量应用于字符串之前对其进行预处理(即,删除空格等噪声字符、规范化大小写、解析先前已知的常用缩写等)。

有关不同字符串相似性度量的相当全面的概述和一个 Java 库,请参阅http://www.dcs.shef.ac.uk/~sam/stringmetrics.html

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注