Python中的概率字符串匹配

2024-05-18 23:40:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个机器人程序,使用他们的PythonAPI在网站Betfair上下注。我想在足球比赛中下注。在

我编写了一个XML提要,以提供来自比赛的实时数据,但是对于足球队,XML提要并不总是使用与betfairuse相同的名称。在

例如,当提到曼联时,Betfair可能使用“manutd”,而XML提要可能使用“manunited”或其他变体。我不局限于流行的市场,所以建立一个标准的Betfair到XML名称转换表是不可行的。在

我尝试使用某种概率字符串匹配来给我一些提示,这两个数据源引用的是同一个团队。在

到目前为止,我已经使用了revard,它似乎在进行一些贝叶斯计算,但是我认为我没有正确地使用它,因为我必须将字符串分解为train和{}的字符。然后我简单地平均每个字母与每个名字相关的概率,我知道这在数学上是不正确的,但我认为这可能是一个可行的启发式测试。在

这是我的代码:

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]。如果有任何想法或改进,我将非常感激。在

编辑:我有另一个想法,我想知道在Betfair和feed上是相同的匹配。但这给了我第一个名字和第二个名字匹配的概率。我需要找出名字和名字匹配的概率。因此,我编写了以下函数,似乎可以得到更合理的结果:

^{pr2}$

我仍然会很感激对不同方法的任何建议,或是现有库中相同操作的建议,或者是关于纠正我的概率计算的提示。在


Tags: namegamehomestringtrain概率名字team
1条回答
网友
1楼 · 发布于 2024-05-18 23:40:56

这是我的建议。阅读http://norvig.com/spell-correct.html,在此基础上实现一些东西,看看它的工作效果如何。希望它能很好地工作。在

通过动态缓存结果来加快速度,这样一旦计算出给定名称的猜测,就可以重用猜测。在

您的实现应该有一个关于所使用的最可疑猜测的异常报告,以便您可以手动检查并拒绝或修复它们。在

相关问题 更多 >

    热门问题