gpt4 book ai didi

parsing - 标准化 NFL 球队名称

转载 作者:行者123 更新时间:2023-11-30 08:31:34 33 4
gpt4 key购买 nike

这实际上是一个机器学习分类问题,但我想有一种非常好的快速而肮脏的方法来做到这一点。我想将描述 NFL 球队的字符串(例如“San Francisco”或“49ers”或“San Francisco 49ers”或“SF 49ers”)映射到球队的规范名称。 (有 32 支 NFL 球队,所以这实际上意味着找到 32 个箱子中最近的一个来放入给定的字符串。)

传入的字符串实际上并不是完全任意的(它们来自像这样的结构化数据源: http://www.repole.com/sun4cast/stats/nfl2008lines.csv ),因此实际上没有必要像上面 49ers 示例中那样处理每个疯狂的极端情况。

我还应该补充一点,如果有人知道包含维加斯输赢赔率以及过去几年 NFL 比赛实际比赛结果的数据源,那就不需要这样做了。我需要规范化的原因是为了匹配这两个不同的数据集,一组有赔率,一组有结果:

非常欢迎更好、更可解析的数据源的想法!

补充:子字符串匹配的想法可能足以满足此数据;谢谢!通过选择具有最近编辑距离的团队名称,可以使其更加稳健吗?

最佳答案

我认为,即使对于任意用户输入,这里也有足够强大的功能。首先,将每个团队(我使用 3 个字母的代码作为每个团队的规范名称)映射到完整拼写的版本,其中包含城市和团队名称以及城市和团队名称之间括号中的任何昵称。

Scan[(fullname[First@#] = #[[2]])&, {
{"ari", "Arizona Cardinals"}, {"atl", "Atlanta Falcons"},
{"bal", "Baltimore Ravens"}, {"buf", "Buffalo Bills"},
{"car", "Carolina Panthers"}, {"chi", "Chicago Bears"},
{"cin", "Cincinnati Bengals"}, {"clv", "Cleveland Browns"},
{"dal", "Dallas Cowboys"}, {"den", "Denver Broncos"},
{"det", "Detroit Lions"}, {"gbp", "Green Bay Packers"},
{"hou", "Houston Texans"}, {"ind", "Indianapolis Colts"},
{"jac", "Jacksonville Jaguars"}, {"kan", "Kansas City Chiefs"},
{"mia", "Miami Dolphins"}, {"min", "Minnesota Vikings"},
{"nep", "New England Patriots"}, {"nos", "New Orleans Saints"},
{"nyg", "New York Giants NYG"}, {"nyj", "New York Jets NYJ"},
{"oak", "Oakland Raiders"}, {"phl", "Philadelphia Eagles"},
{"pit", "Pittsburgh Steelers"}, {"sdc", "San Diego Chargers"},
{"sff", "San Francisco 49ers forty-niners"}, {"sea", "Seattle Seahawks"},
{"stl", "St Louis Rams"}, {"tam", "Tampa Bay Buccaneers"},
{"ten", "Tennessee Titans"}, {"wsh", "Washington Redskins"}}]

然后,对于任何给定的字符串,找到每个球队全名的最长公共(public)子序列。为了优先匹配开头或结尾的字符串(例如,“car”应匹配“carolina panthers”而不是“arizona cardinals”),请将输入字符串和全名夹在空格之间。哪个团队的全名与输入字符串具有[sic:]最长的最长公共(public)子序列,就是我们返回的团队。这是该算法的 Mathematica 实现:

teams = keys@fullnames;

(* argMax[f, domain] returns the element of domain for which f of that element is
maximal -- breaks ties in favor of first occurrence. *)
SetAttributes[argMax, HoldFirst];
argMax[f_, dom_List] := Fold[If[f[#1] >= f[#2], #1, #2] &, First@dom, Rest@dom]

canonicalize[s_] := argMax[StringLength@LongestCommonSubsequence[" "<>s<>" ",
" "<>fullname@#<>" ", IgnoreCase->True]&, teams]

关于parsing - 标准化 NFL 球队名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/471029/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com