Я пытаюсь придумать парсер для футбольных игр.Я использую термин «естественный язык» здесь очень свободно, поэтому, пожалуйста, имейте в виду, что я почти ничего не знаю об этом поле.
Вот несколько примеров того, с чем я работаю (Формат: TIME | DOWN & DIST |OFF_TEAM | DESCRIPTION):
04:39|4th and 20@NYJ46|Dal|Mat McBriar punts for 32 yards to NYJ14. Jeremy Kerley - no return. FUMBLE, recovered by NYJ.|
04:31|1st and 10@NYJ16|NYJ|Shonn Greene rush up the middle for 5 yards to the NYJ21. Tackled by Keith Brooking.|
03:53|2nd and 5@NYJ21|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 10@NYJ33|NYJ|Shonn Greene rush to the left for 4 yards to the NYJ37. Tackled by Jason Hatcher.|
02:43|2nd and 6@NYJ37|NYJ|Mark Sanchez pass to the left to Shonn Greene for 7 yards to the NYJ44. Tackled by Mike Jenkins.|
02:02|1st and 10@NYJ44|NYJ|Shonn Greene rush to the right for 1 yard to the NYJ45. Tackled by Anthony Spencer.|
01:23|2nd and 9@NYJ45|NYJ|Mark Sanchez pass to the left to LaDainian Tomlinson for 5 yards to the 50. Tackled by Sean Lee.|
На данный момент я написал тупой парсер, который обрабатывает все простые вещи (playID, четверть, время, вниз и дистанция, атакующая команда) вместе с некоторыми сценариями, которые идут иполучает эти данные и очищает их в формате, указанном выше.Одна строка превращается в объект «Воспроизведение» для хранения в базе данных.
Здесь сложная часть (по крайней мере для меня) - анализ описания пьесы.Вот некоторая информация, которую я хотел бы извлечь из этой строки:
Пример строки:
"Mark Sanchez pass to the left to Shonn Greene for 7 yards to the NYJ44. Tackled by Mike Jenkins."
Результат:
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']
Логика, которую я использовал для моейПервоначальный синтаксический анализатор выглядел примерно так:
# 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
Описания могут быть довольно сложными (многократные сбои и восстановления со штрафами и т. д.), и мне было интересно, смогу ли я воспользоваться некоторыми модулями NLP там.Скорее всего, я собираюсь потратить несколько дней на тупой / статический конечный автомат, такой как парсер, но если у кого-то есть предложения о том, как подойти к нему с использованием техник НЛП, я бы хотел о них услышать.