natasha / yargy

Rule-based facts extraction for Russian language
MIT License
315 stars 40 forks source link

Как прописать "Жадность" токену/правилу? #88

Closed the-vindicar closed 2 months ago

the-vindicar commented 10 months ago

Я пытаюсь разобрать фразу "без двадцати пяти час". После нормализации, я так понимаю, получается "без двадцать пять час". И что бы я ни делал, это всегда парсится как "без" + "двадцать" + "пять" + "час" = 16:40 вместо "без" + "двадцать пять" + "час" = 12:35. Порядок задания правил влияния не оказывает. В то же время "без двадцати час" парсится корректно. "Двадцать пять" парсится с помощью словаря вида {"один": 2, ... }, в котором присутствует и "двадцать", и "двадцать пять".

Можно ли указать, что правило, которое матчит "двадцать пять", должно быть жадным, т.е. матчить как можно больше токенов или строку максимальной длины?

the-vindicar commented 10 months ago

Уф, понял. Нужно использовать функцию morph_pipeline() вместо dictionary().