Open Liza-Kadetova opened 4 years ago
Сообщение странное. В чем проблема понятно. And_ принимает только предикаты, вы передаете rule.
Могу предложить завернуть NAMES в предикат dictionary
Спасибо. Я думала, что and. аналогичен or. А на семинаре (https://www.youtube.com/watch?v=NQxzx0qYgK8) вы говорили про or_, что там должны быть или только предикаты, или только правила. И сама ошибка смутила, там сказано именно про mixed, а не про недопустимые типы.
Можно ли где-то посмотреть, как использовать dictionary? Я ориентируюсь на пример вот тут: https://nbviewer.jupyter.org/github/natasha/yargy/blob/master/docs/ref.ipynb
Но не срабатывает activate (NameError: name 'activate' is not defined).
Да, сообщение об ошибке нужно исправить.
Да, в or можно и rule и предикат. В and только предикаты.
Использовать dictionary также как остальные предикаты. Посмотрите примеры грамматик в https://github.com/natasha/yargy-examples/blob/master/02_console/notes.ipynb https://github.com/natasha/yargy-examples/blob/master/01_resume/notes.ipynb https://github.com/natasha/yargy-examples/blob/master/04_food/notes.ipynb.
В целом yargy сложная библиотека, методом тыка не освоишь. Нужно понимать примерно как работает внутри. Список всех материалов https://github.com/natasha/yargy#documentation
Ок, спасибо за быстрые ответы!
Сообщение об ошибке надо поправить. Открываю чтобы было в списке задач
Добрый день! Использую Yargy, чтобы вытащить имена собственные из текста. Код ниже выдает ошибку: mixed types: [<class 'yargy.rule.constructors.Rule'>, <class 'yargy.rule.constructors.Rule'>]
Почему она появляется здесь? Ведь в and_ подаются два правила и даже в самой ошибке классы указаны одинаковые. Спасибо!
Код:
NM = rule(NAMES) #список имен, пропущенный через morph_pipeline CAP = rule(iscapitalized()) # без этого уточнения тащит лишнее PERSON = rule(and(NM, CAP)) # ошибка mixed types parser1 = Parser(PERSON) list(parser1.findall(text))