我正在尝试制作一个小型体育博彩赔率比较脚本供我个人使用。为此我得到了XML feed的数据(来自不同的博彩公司)。为了比较它们,我必须知道哪些匹配/事件完全相同。 问题在于团队,联盟的名称在不同的博彩公司中往往是不同的。
这是一个例子:
Bookmaker1:B1
联赛:欧洲冠军联赛
<匹配:曼联vs国际米兰Bookmaker2:B2
联赛:冠军L.
比赛:Manu vs Inter
Bookmaker3:B3
联赛:冠军联赛(欧足联)
<匹配:曼联U. vs FC Internazionale日期将是相同的。但是有很多比赛同时开始。有1000个比赛和100个联赛。
是否还有其他可能会认识到它们是相同的,而不是手动操作?
手动我的意思是:如果字符串是Manu或Manchester U. =&gt;曼联队 (这适用于每个队名)
赔率比较网站如何做到这一点(如oddsportal.com或其他服务)?
答案 0 :(得分:3)
很老的问题,但也许其他用户会受益。 对不起,我的英语不好。我试着解释。 我是 C# 开发人员,所以我只是解释了如何做到这一点。
如果你制作自己的团队词典,你可以解决这个问题。
在您的数据库中制作您自己的 SoccerTeams 表。在这种情况下,MongoDb 或任何 documentDb 最适合您的解决方案。也可以是关系型数据库,没问题。
Bookmakers1、Bookmakers2 或更多没有什么不同。只需检查您自己的数据库以获取团队名称。例如:
Bookmaker1 主队名称:曼联
Bookmaker1 客队名称:国际米兰
Bookmaker2 主队名称:曼彻斯特联队
Bookmaker2 客队名称:国际米兰
在这种情况下,我们必须检查字符串的相似性,我们可以使用“Levanstein Distance”或类似的算法。这是一些算法Url。
首先从数据库中获取团队。并使用循环检查团队的相似性。 如果距离更近,例如,“Manchester United vs Manchester Utd”距离大于 %50。您可以添加类似“SimilaritySoccerTeamNames”的不同表名。 毕竟,你有这样的相似度表:
table.myTable tr th, td {
border: 1px solid black;
}
<table class="myTable">
<thead>
<tr>
<th width="100px">Id</th>
<th width="200px">Name</th>
<th width="200px">SimilarName</th>
<th width="100px">Distance</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>Manchester United</td>
<td>Manchester Utd</td>
<td>70</td>
</tr>
<tr>
<td>2</td>
<td>Manchester United</td>
<td>Manchester City</td>
<td>50</td>
</tr>
<tr>
<td>3</td>
<td>Manchester United</td>
<td>Manu</td>
<td>20</td>
</tr>
<tr>
<td>4</td>
<td>Inter Milan</td>
<td>Inter</td>
<td>45</td>
</tr>
<tr>
<td>5</td>
<td>Beşiktaş JK</td>
<td>Beşiktaş AŞ</td>
<td>75</td>
</tr>
<tr>
<td>6</td>
<td>Besiktas</td>
<td>Beşiktaş</td>
<td>63</td>
</tr>
</tbody>
</table>
因此,您可以手动选择和组合这些团队。你必须小心你的代码。 Gent 与 Genk 的相似度也为 %99。这些是不同的团队。你必须手动。您可以改进此解决方案。例如,如果 2 场博彩公司相同日期和主队匹配并且客队名称相似度大于 %50,则可以自动添加。毕竟,您可以简化所有这些工作并节省您的时间。我只是解释你如何做到这一点。您也可以改进此解决方案。只是我想解释一下逻辑。你可以做得更好。如果你需要任何帮助,我在这里。
答案 1 :(得分:0)
我担心没有神奇的解决方案。我没有看到任何你可以依据的模式。
最好的方法是确定每个博彩公司使用的名称并相应地进行比较。
博彩公司不太可能改变团队名称
答案 2 :(得分:0)
作为相同的团队,在同一天玩,您可以连接团队名称,并在同一天检查该团队,对方团队,并连接这些团队。 一支球队不能在同一天与另一支球队比赛。 通过这种方式,您可以将所有团队映射到一个。