Size: a a a

Natural Language Processing

2020 August 21

AW

Alex Wortega in Natural Language Processing
Обилию шума
источник

A

AlexandrN in Natural Language Processing
Defragmented Panda
у нас несколько классов сразу активно может быть?

или этого лучше избегать?
по одному обращению может быть определен только 1 класс
источник

FF

Futorio Franklin in Natural Language Processing
Оно и неудивительно, там не задано количество кластеров
источник

DP

Defragmented Panda in Natural Language Processing
AlexandrN
Спасибо! Возможно, не совсем точно описал проблему или не правильно понял ваше предложение, потому уточню. Датасет для обучения содержит много ситуаций, когда обращения одного смысла (тематики) размечены разными метками классов. Причина в изменения в классах, которые проводились ранее. Например, обращение тематики X сначала классифицировали как класс А, потом приняли решение из А выделить класс В и  обращения тематики X относить к классу В и т.д. Вот и получается, что X может иметь метки А, В, С... Это снижает точность классификации. Вопрос - как получить датасет для обучения или (и) модель, которая максимально точно классифицирует обращения с учетом текущей схемы классификации?
данные были размечены сначала одним способом а потом другим?
источник

DP

Defragmented Panda in Natural Language Processing
т.е. что менялось, данные (разметка) или только желаемый ответ?
источник

A

AlexandrN in Natural Language Processing
Defragmented Panda
т.е. что менялось, данные (разметка) или только желаемый ответ?
данные в основном не менялись, менялись правила классификации
источник

A

AlexandrN in Natural Language Processing
данные - в смысле тематик и содержания обращений
источник

DP

Defragmented Panda in Natural Language Processing
AlexandrN
данные в основном не менялись, менялись правила классификации
если менялось только "я хочу чтобы коробочка теперь отвечала иначе" то как я описал выше

если менялось "коробочка, запомни, это А" на "коробочка, запомни, теперь это же будет Б" - то все сложнее.
источник

A

AlexandrN in Natural Language Processing
Defragmented Panda
если менялось только "я хочу чтобы коробочка теперь отвечала иначе" то как я описал выше

если менялось "коробочка, запомни, это А" на "коробочка, запомни, теперь это же будет Б" - то все сложнее.
2 вариант
источник

DP

Defragmented Panda in Natural Language Processing
я привык что система обучается на неизменных данных, и обучается всего однажды ну или всего несколько раз когда требования ответа меняются

если нужно чтобы система постоянно дообучалась на данных которые могут меняться (назад в прошлом тоже) - все очень плохо.

я не знаю решений. термин который может помочь - live learning по-моему. и насколько я знаю этого просто пытаются избегать, всей ситуации. найдешь решение - расскажи
источник

DD

David Dale in Natural Language Processing
AlexandrN
Спасибо! Возможно, не совсем точно описал проблему или не правильно понял ваше предложение, потому уточню. Датасет для обучения содержит много ситуаций, когда обращения одного смысла (тематики) размечены разными метками классов. Причина в изменения в классах, которые проводились ранее. Например, обращение тематики X сначала классифицировали как класс А, потом приняли решение из А выделить класс В и  обращения тематики X относить к классу В и т.д. Вот и получается, что X может иметь метки А, В, С... Это снижает точность классификации. Вопрос - как получить датасет для обучения или (и) модель, которая максимально точно классифицирует обращения с учетом текущей схемы классификации?
А есть ли история изменения схемы разметки?
Или её меняли, но вообще непонятно как?
источник

A

AlexandrN in Natural Language Processing
David Dale
А есть ли история изменения схемы разметки?
Или её меняли, но вообще непонятно как?
в том то и проблема, что истории изменения нет
источник

A

AlexandrN in Natural Language Processing
хотя, можно ее как то получить, используя дату и время регистрации обращения
источник

DD

David Dale in Natural Language Processing
AlexandrN
Спасибо! Возможно, не совсем точно описал проблему или не правильно понял ваше предложение, потому уточню. Датасет для обучения содержит много ситуаций, когда обращения одного смысла (тематики) размечены разными метками классов. Причина в изменения в классах, которые проводились ранее. Например, обращение тематики X сначала классифицировали как класс А, потом приняли решение из А выделить класс В и  обращения тематики X относить к классу В и т.д. Вот и получается, что X может иметь метки А, В, С... Это снижает точность классификации. Вопрос - как получить датасет для обучения или (и) модель, которая максимально точно классифицирует обращения с учетом текущей схемы классификации?
Мне кажется, можно подумать в сторону примерно такой схемы:
1) Отщепляем от обучающей выборки достаточно свежую часть, внутри которой, насколько нам известно, разметка не менялась. Обучаем классификатор только на ней.
2) Размечаем этим классификатором более древнюю часть обучающей выборки, в которой разметка менялась
3) Придумываем какие-нибудь бизнес-правила для выбора, какой лейбл использовать для каждого наблюдения в старой части выборки: исторический (как его древние люди разметили), или синтетический (как его разметила моделька из пункта 1). Например: если историческая метка - А, классификатор предсказал вероятность класса А ниже порога 1 и вероятность класса B выше порога 2, то верить классификатору. Можно вручную заполнить квадратную матрицу "какие классы могли быть переименованы в какие" и на неё ориентироваться.
4) Обучаем модель на обоих выборках: свежей (с исходной разметкой) и старой (с такой полусинтетической разметкой, полученной в пункте 3). Это совершенно не обязательно должна быть модель того же типа, что и на шаге 1.

Понятно, что шаг 3 требует кучи творчества, но, возможно, если с ним заморочится, то получится плюс-минус старую разметку актуализировать.

P.S. в каком-то смысле бизнес-правила из шага 3 - это тоже часть обучающего алгоритма, поэтому ОК их тюнить, максимизируя конечное качество всего пайплайна на валидационной выборке, если она, конечно, достаточно свежая, чтобы ей вообще можно было доверять.
источник

DP

Defragmented Panda in Natural Language Processing
можно попробовать составить другую сеть, которая ищет features. или классифицирует данные без учета разметки (clustering)

и сделать мелкую нейронку которую пере-тренировать полностью каждый раз как меняется разметка. вход - features, выход - класс (полезный ответ)

но это дофига работы (человеку, разобраться с features, clustering)
источник

A

AlexandrN in Natural Language Processing
Коллеги, спасибо! Протестирую ваши идеи.
источник

AK

Alexander Kukushkin in Natural Language Processing
Продолжение серии постов про проект 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://natasha.github.io/corus Corus — коллекция русскоязычных NLP-датасетов
6. https://t.me/natural_language_processing/18673 Ламповый стрим про историю проекта Natasha
7. https://natasha.github.io/razdel Razdel — сегментация русскоязычного текста на токены и предложения
8. https://natasha.github.io/naeval Naeval — количественное сравнение систем для русскоязычного NLP
#natasha
источник

AK

Alexander Kukushkin in Natural Language Processing
Обновлённая документация Yargy
Обновилась документация Yargy-парсера https://github.com/natasha/yargy. Причесал вводный раздел https://nbviewer.jupyter.org/github/natasha/yargy/blob/master/docs/index.ipynb и справочник https://nbviewer.jupyter.org/github/natasha/yargy/blob/master/docs/ref.ipynb. Главное, добавил Cookbook -- раздел с полезными практиками https://nbviewer.jupyter.org/github/natasha/yargy/blob/master/docs/cookbook.ipynb.

Перечитал этот чатик, собрал самые частые вопросы:
- как пропустить часть текста;
- как подать на вход токены, а не текст;
- что делать, если парсер тормозит.
Ответы теперь есть в Cookbook.

Yargy-парсер -- сложный инструмент. В Cookbook описаны неочевидные моменты, который всплавают при работе со большими наборами правил:
- порядок аргументов в or_,
- неодназначные грамматики,
- зачем аргумент tagger в Parser.

У нас в лабе на Yargy работает несколько крупных сервисов. Перечитал код, собрал в Cookbook патерны, которые не описаны в паблике:
- генерация правил,
- наследование fact (особенно полезно, ни одно решение на практике без этого приёма не обходится).

Cookbook будет полезен тем, кто уже шарит в Yargy и хочет улучшить свой скил. Для новичков есть видос на полтора часа https://www.youtube.com/watch?v=NQxzx0qYgK8 2018 года, он актуален и сейчас. #natasha
источник

AK

Alexander Kukushkin in Natural Language Processing
Дополнительные материалы по Yargy-парсеру
После прочтения документации полезно посмотреть репозиторий с примерами https://github.com/natasha/yargy-examples:
- парсинг объявлений с Авито https://github.com/natasha/yargy-examples/blob/master/02_console/notes.ipynb
- разбор рецептов из ВК https://github.com/natasha/yargy-examples/blob/master/04_food/notes.ipynb

Ещё в проекте Natasha есть репозиторий natasha-usage https://github.com/natasha/natasha-usage. Туда попадает код пользователей Yargy-парсера опубликованный на Github. 80% ссылок -- учебные проекты, но есть и содержательные примеры:
- разбор фида о работе метро в Спб https://github.com/xamgore/spbmetro
- парсинг объявлений о сдаче жилья в соцсетях https://github.com/AlexSkrn/yargy_flats_parser/blob/master/yargy_flats_parser.ipynb
- извлечение атрибутов из названий авто покрышек https://github.com/rokku3kpvc/yargy-tires/blob/master/tires_parser.py
- парсинг вакансий из канала jobs чата ODS https://github.com/AndreyKolomiets/ods_jobs_analytics/blob/master/extractors/position_extractor.py

Самые интересные примеры использования Yargy-парсера, конечно, не публикуют открыто на Github. Напишите в личку, если компания использует Yargy и если не против добавим ваше лого на http://natasha.github.io/ #natasha
источник

VP

Vedika Parvez in Natural Language Processing
Requesting you to pin the English translation in case you have it. Thanks in advance!
источник