Я пытаюсь собрать набор данных, который можно использовать для автоматического создания статей о бейсболе.
У меня есть записи игр MLB от retrosheet.org , которые я хотел бы записать в виде простого текста, как те, которые могли бы появиться как часть краткой новостной статьи.
Вот несколько примеров записей play-by-play:
play,2,0,semim001,32,.CBFFFBBX,9/F
play,2,0,phegj001,01,FX,S7/G
play,2,0,martn003,01,CX,3/G
play,2,1,youne003,00,,NP
Вот чего я хотел бы достичь:
Для первого примера
play,2,0,semim001,32,.CBFFFBBX,9/F
,
Я хочу, чтобы это было записано примерно так:
"semim001 (Маркус Семен) был на трех мячах и двух ударах во втором иннинге в качестве игрока на выезде. Он бросил мяч в игру после одного колла, одного удара, трех фолов и еще двух шаров. Мяч был пойман правым аутфилдером. "
Пьесы отформатированы следующим образом:
Первое поле - это иннинг, целое число начинается с 1.
Второе поле: 0 (для команды гостей) или 1 (для команды хозяев).
Третье поле - идентификатор игрока Retrosheet игрока на планшете.
Четвертое поле - это счет теста, когда произошло это конкретное событие (игра). Большинство игр Retrosheet не имеют этой информации, и в таких случаях "??" появляется в этом поле.
Пятое поле имеет переменную длину и содержит все шаги для этого теста в этом виде пластины и описано ниже. Если поля неизвестны, это поле остается пустым, между запятыми ничего нет.
Шестое поле описывает игру или событие, которое произошло.
Пояснения ко всем символам в пятом и шестом полях можно найти на этой странице Retrosheet.
С Python 3 я смог отформатировать всю информацию неизменной длины в отформатированное предложение, которое является всеми, кроме двух последних полей. Мне трудно придумать эффективный способ разборки (поправьте меня, если это неправильный термин для использования здесь) пятого и шестого полей, высот и событий, которые произошли, из-за их переменной длины и большого разнообразия вещей это может произойти.
Я думаю, что мог бы выписать все правила, основываясь на информации на сайте Retrosheet, но я ищу предложения для более разумного способа сделать это. Я написал обработку естественного языка как теги, надеясь, что это может быть тривиальной проблемой в этой области. Любые указатели будут с благодарностью!