natasha/yargy

Новые пайплайны

kuk opened this issue · 1 comments

kuk commented

Текст тикета не закончен и будет дополняться

С пайплайнами есть несколько проблем:

  1. Бывает забываешь добавить пайплайны при инициализации парсера. Парсер мог бы сам добавить пайплайн или хотя бы кинуть ворнинг если где-то в грамматиках встречается предикат типа gram('CustomGram') , а соответствующего пайплайна нет в аргументах парсера.
  2. Можно ошибиться в предикате gram. Написать например не gram('CustomGram') а gram('Custom'). Такое происходит не из-за опечаток (20 минут искал баг, а оказывается 'OrganizationCrf' != 'OrganisationCrf'), а когда начинаешь менять код в разных местах. В пайплайне заменил grammemes а в грамматиках забыл.
  3. Конфликтующие пайплайны. Например, один пайплайн для названий улиц создаёт мультитокен "Карл Маркс" для "ул. Карла Маркса" , а в пайплайне для фамилий есть "Маркс". Если пайплайн для фамилий идёт после пайплайна для улиц ФИО "Карл Маркс" не заметчится.
  4. Нужно учитывать токенизатор. Нельзя написать "научно-производственное предприятие", нужно ставить пробелы "научно - производственное предприятие"
  5. Нет согласования слов. По-хорошему, "Карлом Марксу" не должно метчиться
  6. Неленивая инициализация. В конструкторе пайплайна вызывается MorphAnalizer. Если пайплайн большой, это занимает время. Хорошо бы эту работу делать не при импорте, а при запуске парсера.
kuk commented

Сделано в #48. Теперь пайплайны используются как обычные правила