7

numaralı web sitesine Python API'sini kullanarak bahis koyan bir bot yazma sürecindeyim. Oyundayken futbol (futbol) maçlarına bahis oynamak istiyorum.Python'da Probabalistic Dize Eşleştirme

Oyunlardan canlı veriler vermek için bir XML feed'i kodladım, ancak XML feed'i Betfair'in kullandığı her zaman futbol takımları için aynı adı kullanmaz. Örneğin, Manchester United Betfair'e atıfta bulunulduğunda, örneğin "Man United" veya "Man United" ya da başka bir varyant kullanılsa da "Man Utd" kullanabilir. Popüler pazarlarla sınırlı değilim, bu yüzden standart bir Betfair'e XML ad dönüştürme tablosunu oluşturmak mümkün değil.

İki veri kaynağının aynı ekiplere başvurduğunu gösteren bazı bilgiler vermek için bir çeşit olasılık dizesi eşleştirmesi kullanmaya çalışıyorum.

Şimdiye kadar Papaz ile oynadım ancak ben trainguesser karakter içine dizesini kırmak zorunda gibi ben düzgün kullanıyorum sanmıyorum, bazı Bayes hesaplamaları yapmak için görünüyor. Daha sonra her bir harfin her bir isimle ilişkilendirilme olasılığını ortalarım, bunun matematiksel olarak yanlış olduğunun farkındayım ama bunun uygun bir sezgisel test olabileceğini düşündüm. Geçerli kurulum ile üretilen

import scorefeed 
from reverend.thomas import Bayes 

guesser = Bayes() 
teams=['home','away'] 


def train(team_no, name): 

    for char in name: 
     guesser.train(teams[team_no], char) 

def untrain(team_no, name): 

    for char in name: 
     guesser.untrain(teams[team_no], char) 

def guess(name): 

    home_guess = 0.0 
    away_guess = 0.0 

    for char in name: 

     if len(guesser.guess(char)) > 0: 

      for guess in guesser.guess(char): 

       if guess[0] == teams[0]: 
        home_guess = home_guess + guess[1] 
        print home_guess 
       if guess[0] == teams[1]: 
        away_guess = away_guess + guess[1] 
        print away_guess 
    home_guess = home_guess/float(len(name)) 
    away_guess = away_guess/float(len(name)) 

    probs = [home_guess, away_guess] 
    return probs 

def game_match(betfair_game_string, feed_home, feed_away): 
    home_team = betfair_game_string[0:betfair_game_string.find(' V ')] 
    away_team = betfair_game_string[betfair_game_string.find('V')+2:len(betfair_game_string)] 

    train(0, home_team) 
    train(1, away_team) 

    probs = [] 
    probs.append(guess(feed_home)[0]) 
    probs.append(guess(feed_away)[1]) 

    untrain(0, home_team) 
    untrain(1, away_team) 

    return probs 



print game_match("Man Utd V Lpool", "Manchester United", "Liverpool") 

olasılık [0.4705411764705883, 0.5555] geçerli:

İşte benim kodudur. Herhangi bir fikir veya gelişme için çok minnettar olurum.

DÜZENLEME: Başka bir düşüncem vardı, bunun Betfair ve feed'deki aynı eşleşme olasılığı olmasını istiyorum. Ama bu bana ilk ismin eşleşmesi olasılığını ve ikinci ismin eşleşmesini sağlıyor. Birinci ve ikinci isimlerin eşleşmesi olasılığını bulmam gerek. Benim olasılık düzelterek üzerine

def prob_match(probs): 

    prob_not_home = 1.0 - probs[0] 
    prob_not_away = 1.0 - probs[1] 

    prob_not_home_and_away = prob_not_home*prob_not_away 
    prob_home_and_away = 1.0 - prob_not_home_and_away 

    return prob_home_and_away 

Hala farklı yöntemlerle veya mevcut aynı şeyi yapmak kütüphaneler veya ipuçları önerileri için önerilerinizi takdir ederiz: Bu nedenle bana daha makul sonuçlar verir görünmektedir aşağıdaki işlevini kodlu var hesaplamaları.

+1

Bu sorunu çözdünüz mü? – briankip

+0

Hiçbir zaman doğru bir şekilde çözmedim, bulduğum en iyi çözüm düzenlemeye koyduğum şeyi kullanmaktı. Günümüzde denemek istediğim birkaç şey var, belki de iki dizenin soundex kodlamasını karşılaştırmak, ya da LSTM ya da bir şey kullanarak tekrarlayan bir sinir ağı. – James

cevap

2

İşte benim tavsiyem. http://norvig.com/spell-correct.html'u okuyun, buna dayalı bir şey uygulayın ve ne kadar iyi çalıştığını görün. Umarım yeterince iyi çalışır.

Sonuçları, sonuçta bir ad için bir tahminde bulunmuşsa, o zaman tahminini yeniden kullanması için anında önbelleğe alarak hızlandırın. el gözden geçirmenizi veya reddetme veya bunları düzeltmek böylece

Sizin uygulanması, kullanılan en şüpheli tahminlerde bir istisna raporu olmalıdır.