Estoy tratando de encontrar un analizador para jugadas de fútbol. Utilizo aquí el término "lenguaje natural" muy libremente, así que tengan paciencia porque sé muy poco sobre este campo.Analizador de lenguaje natural para analizar datos play-by-play de deportes
Éstos son algunos ejemplos de lo que estoy trabajando con (Formato: TIEMPO | ABAJO & DIST | OFF_TEAM | DESCRIPCIÓN):
04:39|4th and [email protected]|Dal|Mat McBriar punts for 32 yards to NYJ14. Jeremy Kerley - no return. FUMBLE, recovered by NYJ.|
04:31|1st and [email protected]|NYJ|Shonn Greene rush up the middle for 5 yards to the NYJ21. Tackled by Keith Brooking.|
03:53|2nd and [email protected]|NYJ|Mark Sanchez rush to the right for 3 yards to the NYJ24. Tackled by Anthony Spencer. FUMBLE, recovered by NYJ (Matthew Mulligan).|
03:20|1st and [email protected]|NYJ|Shonn Greene rush to the left for 4 yards to the NYJ37. Tackled by Jason Hatcher.|
02:43|2nd and [email protected]|NYJ|Mark Sanchez pass to the left to Shonn Greene for 7 yards to the NYJ44. Tackled by Mike Jenkins.|
02:02|1st and [email protected]|NYJ|Shonn Greene rush to the right for 1 yard to the NYJ45. Tackled by Anthony Spencer.|
01:23|2nd and [email protected]|NYJ|Mark Sanchez pass to the left to LaDainian Tomlinson for 5 yards to the 50. Tackled by Sean Lee.|
A partir de ahora, he escrito un programa de análisis mudos que los mangos todas las cosas fáciles (playID, quarter, time, down & distancia, equipo ofensivo) junto con algunos scripts que van y obtienen estos datos y los desinfectan en el formato visto anteriormente. Una sola línea se convierte en un objeto "Reproducir" para almacenarse en una base de datos.
La parte difícil aquí (al menos para mí) es analizar la descripción de la obra. Aquí hay alguna información que me gustaría extraer de esa cadena:
Ejemplo cadena:
"Mark Sanchez pass to the left to Shonn Greene for 7 yards to the NYJ44. Tackled by Mike Jenkins."
Resultado:
turnover = False
interception = False
fumble = False
to_on_downs = False
passing = True
rushing = False
direction = 'left'
loss = False
penalty = False
scored = False
TD = False
PA = False
FG = False
TPC = False
SFTY = False
punt = False
kickoff = False
ret_yardage = 0
yardage_diff = 7
playmakers = ['Mark Sanchez', 'Shonn Greene', 'Mike Jenkins']
La lógica que tenía para mi programa de análisis inicial fue algo como esto :
# pass, rush or kick
# gain or loss of yards
# scoring play
# Who scored? off or def?
# TD, PA, FG, TPC, SFTY?
# first down gained
# punt?
# kick?
# return yards?
# penalty?
# def or off?
# turnover?
# INT, fumble, to on downs?
# off play makers
# def play makers
Las descripciones pueden ponerse bastante peludas (errores varios & recuperaciones con penalidades, etc.) y me preguntaba si podría aprovechar algunos módulos NLP. Lo más probable es que vaya a pasar unos días en una máquina de estado tonto/estático como analizador, pero si alguien tiene sugerencias sobre cómo abordarlo usando técnicas de PNL, me gustaría saber de ellos.
Dado el tema de la pregunta, me parece interesante que el resaltador de sintaxis SO esté resaltando todos los nombres humanos ... – Jon