natasha/yargy

Парсер для извлечения нескольких типов фактов с интерпретациями

Angriff opened this issue · 6 comments

Добрый день!
Пробую использовать yargy для извлечения фактов из текстов на русском языке.
Предположим, что есть 2 типа фактов. Fact1 и Fact2. Написал правила извлечения с интерпретациями этих фактов. Теперь хочу создать один парсер, разбирающий оба типа фактов, например, так:
parser = Parser(or_(fact1, fact2))
Скрипт падает с ошибкой:

TypeError: expected InterpretationNode, got Node

Если же убрать из правил интерпретации, то все нормально отрабатывает (но интерпретаций не получается).
Парсеры для отдельных фактов с интерпретациями работает нормально.

Можно ли вообще в yargy создать один Parser на несколько фактов с интерпретациями? Если да, то каким образом?

kuk commented

Нет, нельзя. Согласен, что это неудобно и неочевидно и надо будет исправить

То есть на данный момент для извлечения фактов разных типов с интерпретациями нужно создавать N отдельных парсеров? Или есть какие-нибудь трюки, чтобы добиться похожего результата?

надо будет исправить

Когда примерно может появиться подобный функционал?

kuk commented

Можно сделать Fact3 и складывать в него Fact1, 2 как поля.

Когда появится не могу сказать. Но проблема известная.

Спасибо! Вариант с созданием агрегирующего факта вроде бы подходит.

Я правильно понимаю, что время поиска и интерпретации агрегирующего факта будет примерно такое же как при поиске в цикле агрегируемых фактов по отдельности? (никаких сюрпризов внутри библиотеки не будет?)

kuk commented

Если грамматики для Fact1 и Fact2 не пересекаются, то, да, будет примерно такое же.