natasha / yargy

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

Mixed types error - why? #72

Open Liza-Kadetova opened 4 years ago

Liza-Kadetova commented 4 years ago

Добрый день! Использую 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))

kuk commented 4 years ago

Сообщение странное. В чем проблема понятно. And_ принимает только предикаты, вы передаете rule.

Могу предложить завернуть NAMES в предикат dictionary

Liza-Kadetova commented 4 years ago

Спасибо. Я думала, что 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).

kuk commented 4 years ago

Да, сообщение об ошибке нужно исправить.

Да, в 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

Liza-Kadetova commented 4 years ago

Ок, спасибо за быстрые ответы!

kuk commented 4 years ago

Сообщение об ошибке надо поправить. Открываю чтобы было в списке задач