Парсер для извлечения нескольких типов фактов с интерпретациями
Angriff opened this issue · 6 comments
Добрый день!
Пробую использовать yargy для извлечения фактов из текстов на русском языке.
Предположим, что есть 2 типа фактов. Fact1 и Fact2. Написал правила извлечения с интерпретациями этих фактов. Теперь хочу создать один парсер, разбирающий оба типа фактов, например, так:
parser = Parser(or_(fact1, fact2))
Скрипт падает с ошибкой:
TypeError: expected InterpretationNode, got Node
Если же убрать из правил интерпретации, то все нормально отрабатывает (но интерпретаций не получается).
Парсеры для отдельных фактов с интерпретациями работает нормально.
Можно ли вообще в yargy создать один Parser на несколько фактов с интерпретациями? Если да, то каким образом?
Нет, нельзя. Согласен, что это неудобно и неочевидно и надо будет исправить
То есть на данный момент для извлечения фактов разных типов с интерпретациями нужно создавать N отдельных парсеров? Или есть какие-нибудь трюки, чтобы добиться похожего результата?
надо будет исправить
Когда примерно может появиться подобный функционал?
Можно сделать Fact3 и складывать в него Fact1, 2 как поля.
Когда появится не могу сказать. Но проблема известная.
Спасибо! Вариант с созданием агрегирующего факта вроде бы подходит.
Я правильно понимаю, что время поиска и интерпретации агрегирующего факта будет примерно такое же как при поиске в цикле агрегируемых фактов по отдельности? (никаких сюрпризов внутри библиотеки не будет?)
Если грамматики для Fact1 и Fact2 не пересекаются, то, да, будет примерно такое же.
Релевантный раздел в документации https://nbviewer.jupyter.org/github/natasha/yargy/blob/master/docs/cookbook.ipynb#ValueError:-no-.interpretation(...)-for-root-rule