Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mixed types error - why? #72

Open
Liza-Kadetova opened this issue May 20, 2020 · 5 comments
Open

Mixed types error - why? #72

Liza-Kadetova opened this issue May 20, 2020 · 5 comments

Comments

@Liza-Kadetova
Copy link

Liza-Kadetova commented May 20, 2020

Добрый день! Использую Yargy, чтобы вытащить имена собственные из текста. Код ниже выдает ошибку:
mixed types: [<class 'yargy.rule.constructors.Rule'>, <class 'yargy.rule.constructors.Rule'>]

Почему она появляется здесь? Ведь в and_ подаются два правила и даже в самой ошибке классы указаны одинаковые. Спасибо!

Код:

NM = rule(NAMES) #список имен, пропущенный через morph_pipeline
CAP = rule(is_capitalized()) # без этого уточнения тащит лишнее
PERSON = rule(and_(NM, CAP)) # ошибка mixed types
parser1 = Parser(PERSON)
list(parser1.findall(text))

@kuk
Copy link
Member

kuk commented May 20, 2020

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

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

@Liza-Kadetova
Copy link
Author

Liza-Kadetova commented May 20, 2020

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

kuk commented May 20, 2020

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

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

Liza-Kadetova commented May 22, 2020

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

@kuk
Copy link
Member

kuk commented May 22, 2020

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

@kuk kuk reopened this May 22, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants