0

私は、個人的な使用のために、小さなスポーツ ベッティング オッズ比較スクリプトを作成しようとしています。このために、XML フィードのデータを (さまざまなブックメーカーから) 取得しています。それらを比較するには、どの試合/イベントがまったく同じかを知る必要があります。問題は、チーム名、リーグ名がブックメーカーによって異なることが多いことです。

ここに例があります:


ブックメーカー1: B1

リーグ: UEFA チャンピオンズ リーグ

試合: マンチェスター・ユナイテッド vs インテル・ミラノ


ブックメーカー2: B2

リーグ: チャンピオンズ L.

試合: マヌ vs インテル


ブックメーカー3: B3

リーグ: チャンピオンズリーグ(UEFA)

試合: マンチェスター U. vs FC インテルナツィオナーレ


日付は同じになります。しかし、多くの試合が同時に開始されます。数千の試合と数百のリーグがあります。

手動で行う以外に、それらが同じであることを認識する別の可能性はありますか?

手動で意味するのは、文字列がManuまたはManchester U.の場合=>マンチェスター・ユナイテッド(そしてこれはすべてのチーム名について)

オッズ比較サイト (oddsportal.com や他のサービスなど) はどのようにこれを行っていますか?

4

4 に答える 4

3

非常に古い質問ですが、おそらく他のユーザーが恩恵を受ける可能性があります。すみません、私の下手な英語について。私は説明しようとします。私は C# 開発者なので、その方法を説明するだけです。

独自のチーム辞書を作成すると、この問題を処理できます。

  1. データベースに独自の SoccerTeams テーブルを作成します。この場合、MongoDb または任意の documentDb が最適なソリューションです。リレーショナル データベースでも問題ありません。

  2. ブックメーカー1、ブックメーカー2またはそれ以上の違いはありません。チーム名については、独自のデータベースを確認してください。例:

    Bookmaker1 ホーム チーム名 : マンチェスター・ユナイテッド

    Bookmaker1 アウェイ チーム名 : インテル ミラノ

    Bookmaker2ホームチーム名:Manchester Utd.

    Bookmaker2 アウェイ チーム名 : インテル

  3. この場合、文字列の類似性をチェックする必要があり、これには「レバンシュタイン距離」または同様のアルゴリズムを使用できます。ここにいくつかのアルゴリズムUrlがあります。

  4. まず、データベースからチームを取得します。チームの類似性をループでチェックします。距離が近い場合、たとえば「マンチェスター ユナイテッド vs マンチェスター ユナイテッド」の距離は %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 を超える場合、自動的に追加できます。結局のところ、これらすべての作業を簡単にして時間を節約できます。どうすればそれができるかを説明するだけです。また、このソリューションを改善できます。ロジックを説明したかっただけです。あなたはより良くすることができます。何か助けが必要なら、私はここにいます。

于 2021-02-24T11:22:00.687 に答える
0

残念ながら魔法のような解決策はありません。基になるパターンはありません。

最良の方法は、各ブックメーカーに使用されている名前を特定し、それに応じて比較することです。

ブックメーカーがチーム名を変更する可能性は低い

于 2013-04-05T11:36:02.070 に答える