我正在編寫一個使用其Python
API在網站Betfair上下注的bot程序。我想在比賽中投注足球(足球)比賽。在Python中匹配的字符串
我已經編寫了一個XML feed來爲我提供遊戲中的實時數據,但是XML Feed並不總是像Betfair使用的那樣爲橄欖球隊使用相同的名稱。
例如,當提到曼聯Betfair可能使用「Man Utd」,而XML feed可能使用「Man United」或其他一些變體。我不僅限於流行的市場,因此建立一個標準的必發到XML名稱轉換表是不可行的。
我試圖使用某種概率字符串匹配給我一些跡象表明,兩個數據源指的是相同的團隊。
到目前爲止,我已經與牧師似乎做了一些貝葉斯計算,但我不認爲我正在使用它,因爲我必須將字符串分解成字符train
guesser
。然後我簡單地平均每個字母與每個名字關聯的概率,我知道這在數學上是不正確的,但我認爲這可能是一個可行的啓發式測試。
這裏是我的代碼:
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")
的概率與當前的設置產生是[0.4705411764705883, 0.5555]
。我會非常感謝任何想法或改進。
編輯:我有另一個想法,我想它是必發和飼料的相同匹配的概率。但是,這給了我第一個名字匹配的概率,第二個名字匹配。我需要找出第一個和第二個名字匹配的概率。因此,我編寫了下面的函數,這似乎給我更多的合理的結果:
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
我還是會欣賞不同的方法或做同樣的事情現有庫,或提示的建議,什麼建議在糾正我的概率計算。
你解決了這個問題嗎? – briankip
我從來沒有正確解決它,我發現最好的解決方案是使用我在編輯中的內容。現在有幾件事我會嘗試,比如比較兩個字符串的soundex編碼,或者使用LSTM或其他東西的循環神經網絡。 – James