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

我有一个应用程序,用于从网络上的不同来源抓取足球比赛结果。不同网站上的球队名称并不一致——例如,曼联在一个网站上可能被称为“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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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