Алгоритм перевода записей воспроизведения MLB в описательный текст - PullRequest
1 голос
/ 20 июня 2019

Я пытаюсь собрать набор данных, который можно использовать для автоматического создания статей о бейсболе.

У меня есть записи игр 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. Первое поле - это иннинг, целое число начинается с 1.

  2. Второе поле: 0 (для команды гостей) или 1 (для команды хозяев).

  3. Третье поле - идентификатор игрока Retrosheet игрока на планшете.

  4. Четвертое поле - это счет теста, когда произошло это конкретное событие (игра). Большинство игр Retrosheet не имеют этой информации, и в таких случаях "??" появляется в этом поле.

  5. Пятое поле имеет переменную длину и содержит все шаги для этого теста в этом виде пластины и описано ниже. Если поля неизвестны, это поле остается пустым, между запятыми ничего нет.

  6. Шестое поле описывает игру или событие, которое произошло.

Пояснения ко всем символам в пятом и шестом полях можно найти на этой странице Retrosheet.

С Python 3 я смог отформатировать всю информацию неизменной длины в отформатированное предложение, которое является всеми, кроме двух последних полей. Мне трудно придумать эффективный способ разборки (поправьте меня, если это неправильный термин для использования здесь) пятого и шестого полей, высот и событий, которые произошли, из-за их переменной длины и большого разнообразия вещей это может произойти.

Я думаю, что мог бы выписать все правила, основываясь на информации на сайте Retrosheet, но я ищу предложения для более разумного способа сделать это. Я написал обработку естественного языка как теги, надеясь, что это может быть тривиальной проблемой в этой области. Любые указатели будут с благодарностью!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...