natasha / yargy

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

Нормализация отдает предпочтение мужским именам #60

Closed strawberrypie closed 4 years ago

strawberrypie commented 5 years ago

При нормализации токена она происходит крайне просто — выбирается самый первый вариант из предложенных. Такое поведение иногда ошибочно распознает имена, например: "Актриса Ярослава Новожилова" — извлекается {'first': 'ярослав', 'last': 'новожилов'}.

Нужно как-то иначе проводить нормализацию, так чтобы был учет контекста. Скорее всего это потребует более серьезных методов обработки предложения, например составления дерева зависимостей между словами в нем. Либо же это проблема встроенного в PyMorphy CRF-теггера.

kuk commented 5 years ago

Попробуйте использовать согласование, в документации есть пример с ФИО https://yargy.readthedocs.io/ru/latest/#id9

strawberrypie commented 5 years ago

Согласование с "актриса" перед именем? Это я для примера привел, хотелось бы чтобы распознавалось корректно при произвольном контексте.

kuk commented 5 years ago

Да, с "актриса". Решения для произвольного варианта в Yargy не предполагается, в любом случаи должен быть словарь и набор правил.

kuk commented 4 years ago

Также имеет смысл делать нормализацию не средствами yargy, запускать отдельно морфологический тегер, приводить словарь к нормальной форме перед запуском yargy, см. https://nbviewer.jupyter.org/github/natasha/natasha/blob/master/docs.ipynb#Phrase-normalization