Size: a a a

Natural Language Processing

2020 August 09

EB

Evgeniy Blinov in Natural Language Processing
Alexander Kukushkin
Продолжение серии постов про проект Natasha. Что за Наташа? Почему в этот чат? См. https://t.me/natural_language_processing/16962

1. http://natasha.github.io/ner Natasha — качественное компактное решение для извлечения именованных сущностей из новостных статей на русском языке
2. https://t.me/natural_language_processing/17369 Почему Natasha не использует Transformers. BERT в 100 строк.
3. https://natasha.github.io/navec/ Navec — компактные эмбединги для русского языка
4. https://t.me/natural_language_processing/18186 BERT-модели Slovnet
5. https://t.me/natural_language_processing/18450 Corus — коллекция русскоязычных NLP-датасетов
6. https://t.me/natural_language_processing/18673 Ламповый стрим про историю проекта Natasha
#natasha
Чем наташа лучше станзы?
источник

AK

Alexander Kukushkin in Natural Language Processing
Evgeniy Blinov
Чем наташа лучше станзы?
Смотря для какой задачи. Количественное сравнение в https://github.com/natasha/naeval, наблюдения https://github.com/natasha/naeval/issues/1#issuecomment-647924514
источник

РН

Роман Некрасов... in Natural Language Processing
Evgeniy Blinov
Чем наташа лучше станзы?
Станза - это синтаксический и морфологический парсер. В Наташе основная фишка NER-тегинг.
источник

AM

Alex Mak in Natural Language Processing
Alexander Kukushkin
Razdel — сегментация русскоязычного текста на токены и предложения
https://natasha.github.io/razdel

Современные модели часто пропускают этап сегментации, используют BPE-кодировку, показывают замечательные результаты, вспомним GPT и весь зоопарк BERTов. Но, например, задачи определения морфологии и синтаксиса имеют смысл только для отдельных слов внутри одного предложения.

На новостях, нормальное качество сегментации на предложения даёт регулярочка [.?!]\s+. Правда, она будет ошибаться на сокращениях и инициалах: "аудиторией от 3 тыс.| |человек", "В.А.| |Моцарта". Для русского существует несколько хороших решений, которые учитывают эти нюансы, например, ru_sentence_tokenizer от DeepPavlov https://github.com/deepmipt/ru_sentence_tokenizer.

Единственный недостаток готовых решений — их нельзя настроить. Например, есть текст судебного акта, нужно выделить в нём результативную часть и поделить её на параграфы. Естественно готовые решения так не умеют. Библиотека razdel https://github.com/natasha/razdel — на самом деле, это не просто готовое решение для разделения на токены и предложения, а небольшой сегментационный движок на правилах. Как упороться и сделать на нём топовое решение стандартной задачи сегментации читайте в http://natasha.github.io/razdel. Как писать свои правила читайте в исходниках https://github.com/natasha/razdel/blob/master/razdel/segmenters/sentenize.py =)
Интересно, а есть аналогичные решения, но для английского языка?
источник

I

I Апрельский... in Natural Language Processing
Роман Некрасов
Станза - это синтаксический и морфологический парсер. В Наташе основная фишка NER-тегинг.
но вот теперь-то Наташа — это комбайн как Станза. т.е. имя осталось, но за ним теперь другое наполнение.
источник

N

Natalia in Natural Language Processing
Alex Mak
Интересно, а есть аналогичные решения, но для английского языка?
не в курсе детально, но имеет смысл вообще посмотреть, что в итоге вышло в https://github.com/huggingface/tokenizers
источник
2020 August 10

E

Elena in Natural Language Processing
Это tokenizers для Бертоподобных моделей
источник

E

Elena in Natural Language Processing
Для английского nltk можно разбивать на токены и предложения
источник

D

Dmitry in Natural Language Processing
Подскажите чем можно определять корень в русских словах? (не стемминг, а именно корень). Есть ли такие решения?
источник

I

I Апрельский... in Natural Language Processing
Constantin
Неделю назад я спрашивал про наличие библиотеки для выделения морфологических корней для русских слов. Её не оказалось. Я написал её сам - морфологический токенизатор. Если кому нужно будет, то его можно найти тут https://github.com/constantin50/morphological_tokenizer
такое? :)
источник

D

Dmitry in Natural Language Processing
о, точно)
источник

D

Dmitry in Natural Language Processing
спасибо
источник

I

I Апрельский... in Natural Language Processing
Dmitry
спасибо
Это Константину спасибо!
источник

I

I Апрельский... in Natural Language Processing
А что у вас за интерес такой? Какой-то конкурс идет? Просто аж 2 запроса для такой эзотерической темы за неделю — удивительно!
источник

AP

Alex Peresmeshnik in Natural Language Processing
I Апрельский
А что у вас за интерес такой? Какой-то конкурс идет? Просто аж 2 запроса для такой эзотерической темы за неделю — удивительно!
Мы недавно поднимали тему русского мата. Некоторые ученые предлагают классифицировать мат по исходному уорню слова
источник

C

Constantin in Natural Language Processing
I Апрельский
А что у вас за интерес такой? Какой-то конкурс идет? Просто аж 2 запроса для такой эзотерической темы за неделю — удивительно!
мне нужно было для конвертации отглагольного существительного в глагол (use case в readme на git)
источник

KS

Konstantin Smith in Natural Language Processing
Constantin
мне нужно было для конвертации отглагольного существительного в глагол (use case в readme на git)
Кстати, в Pullenti есть так называемые дериватные группы: объединение однокоренных слов разных частей речи. Например, "ПРОИЗВОДСТВО ПРОИЗВОДИТЕЛЬ ПРОИЗВОДСТВЕННЫЙ ПРОИЗВОДИТЬ ПРОИЗВЕСТИ ПРОИЗВЕДЕННЫЙ...". Объединяет существительные, прилагательные, наречия, глаголы несовершенный и совершенные, причастия. Словарь содержит около 15000 групп. Использовать так: в классе Explanatory есть статическая функция List<DerivateGroup> FindDerivates(string word, bool tryVariants = true). Вернёт null, одну или несколько вариантов групп для слова (word - в верхнем регистре и нормальной форме). В рамках группы DerivateGroup можно перебрать список List<DerivateWord> Words и по атрибутам найти подходящий. Второй аргумент - если слово не найдено, то поищет по аналогии и сгенерирует соотв. группу.
источник

ck

cnstntn kndrtv in Natural Language Processing
Konstantin Smith
Кстати, в Pullenti есть так называемые дериватные группы: объединение однокоренных слов разных частей речи. Например, "ПРОИЗВОДСТВО ПРОИЗВОДИТЕЛЬ ПРОИЗВОДСТВЕННЫЙ ПРОИЗВОДИТЬ ПРОИЗВЕСТИ ПРОИЗВЕДЕННЫЙ...". Объединяет существительные, прилагательные, наречия, глаголы несовершенный и совершенные, причастия. Словарь содержит около 15000 групп. Использовать так: в классе Explanatory есть статическая функция List<DerivateGroup> FindDerivates(string word, bool tryVariants = true). Вернёт null, одну или несколько вариантов групп для слова (word - в верхнем регистре и нормальной форме). В рамках группы DerivateGroup можно перебрать список List<DerivateWord> Words и по атрибутам найти подходящий. Второй аргумент - если слово не найдено, то поищет по аналогии и сгенерирует соотв. группу.
буду третьим Константином в ветке) В Pulenti это сделано на основе словаря? Можно как это в текстовый словарь выгрузить?
Использовал когда-то в Solr расширение запросов синонимами, из словаря Хагена. Результат устроил, не плохо бы его еще дополнить вашими данными.
источник

KS

Konstantin Smith in Natural Language Processing
Увы, не только я его делал, и в текстовом виде выложить пока не могу.
источник

ck

cnstntn kndrtv in Natural Language Processing
Konstantin Smith
Увы, не только я его делал, и в текстовом виде выложить пока не могу.
Но лицензия позволит дергать АПИ и записывать результат?)
источник