Comments 4
Изначально программа была написана на BlitzBasic, с которым я тогда активно работал (дело было ну очень давно), поэтому недавно я захотел переписать ее на C#. А заодно увеличить уровень автоматизации за счет автоматического составления исходного списка фамилий. Это классический поиск именованных сущностей. Для этого решил попробовать Natasha, которую так хвалят. И сильно разочаровался. Половину фамилий она вообще не находила, а среди того, что находила, было довольно много мусора. Пришлось оставить «человеческий» поиск фамилий в тексте.
У меня возникло подозрение, что Natasha оптимизирована для поиска именованных сущностей в более-менее связном и коротком тексте. Например, в аннотации статьи или в приговоре суда. Если же ей подсунуть большой текст, состоящий из массы не связанных между собой параграфов, насыщенный именованными сущностями, то она сильно лажает.
@michael108 точно не берусь утверждать, что библиотека идеальна, она успешно охватывает определенный круг задач, как и любой другой модуль. Мы рассматриваем настраиваемый поиск с помощью парсера, где можно указать собственные правила, опираясь на закономерности указания имен.
«Мусор» встречается из-за обобщенных правил, которые указывают, что в тексте может встретиться, например, только фамилия. Для ее поиска в коде «NameExtractor» указывается правило – «слово с заглавной буквы». И парсер найдет всё, что попадает под это указание. Можно ограничить поиск еще одним правилом вроде «оканчивается на –ов/-ова/-ко». Это – пользовательская настройка, которую нужно писать самостоятельно.
Интерес разработчиков был скорее оставить ложноположительные вхождения, нежели отсечь ложноотрицательные вместе с истинно отрицательными. Сущности вроде имен и фамилий в принципе сложно найти механически, если у них нет статичного окружения. В таких случаях мы обращаемся к ML.
Не берусь делать однозначные выводы относительно качества работы их модели для NER на разных объемах и структуре текста. Она обучена на новостях и художественной литературе, что охватывает далеко не весь спектр жанров письменной речи.
А если и форм больше (уфк, ано, мп, итд)и записаны они не только сокращённо?
Поиск названия компании с использованием Python и контекстно-свободных грамматик