Size: a a a

Natural Language Processing

2020 December 08

B

Banof in Natural Language Processing
🔫 Lachance erik кикнут — вернуть этого пользователя можно только разбаном в настройках чата.

Проголосовавшие за кик:
@wadimiusz, @LoneGeek, Lachance erik, @aragaer, @Joyfulltake
При поддержке Тудуранта
источник

A

Anthony in Natural Language Processing
Всем, привет!

Я новичок в деле NLP. Сейчас решаю задачу с классификацией СМИ по заголовкам. Решаю через метод опорных векторов LinearSVC из sklearn. Текст обрабатываю через наташу, убираю имена, числа, локации, знаки и привожу в нормальную форму через pymorphy2. Также убираю стоп слова. И также создал небольшой словарь синонимов, который находит слово в тексте по значениям словаря и меняет его на ключ словаря. Это было сделано, чтобы слова относящиеся, например, к гос органам, заменялись словом "государство" и тем самым такой заголовок с большей вероятностью относился к классу связанным с государством.

Сейчас на тестовых данных результат 80%, а на свежей партии новостей результат заметно хуже. И думаю о том, как улучшить.

Хотел с вами посоветоваться:
1. Есть ли статьи/книги/пооекты которые можно посмотреть и найти интереснык идеи по улучшению классификвции коротких текстов
2. Знаю, что есть такие модели машинного обучегия, которые умеют самообучаться. Насколько в NLP  такмюие модели уместны и если умкстны, то где можно о чем-то таком узнать?
3. Обучающая выборка состоит из 7к текстов. Насколько это адекватно? 7к на 14 классов.

Не ругайте, если плохо вопрос задаю. Опыта мало и не знаю пока много всего. Гуглил свои вопросы, но решения или идей пока не нашел.

Спасибо за внимание!
источник

E

Elena in Natural Language Processing
Anthony
Всем, привет!

Я новичок в деле NLP. Сейчас решаю задачу с классификацией СМИ по заголовкам. Решаю через метод опорных векторов LinearSVC из sklearn. Текст обрабатываю через наташу, убираю имена, числа, локации, знаки и привожу в нормальную форму через pymorphy2. Также убираю стоп слова. И также создал небольшой словарь синонимов, который находит слово в тексте по значениям словаря и меняет его на ключ словаря. Это было сделано, чтобы слова относящиеся, например, к гос органам, заменялись словом "государство" и тем самым такой заголовок с большей вероятностью относился к классу связанным с государством.

Сейчас на тестовых данных результат 80%, а на свежей партии новостей результат заметно хуже. И думаю о том, как улучшить.

Хотел с вами посоветоваться:
1. Есть ли статьи/книги/пооекты которые можно посмотреть и найти интереснык идеи по улучшению классификвции коротких текстов
2. Знаю, что есть такие модели машинного обучегия, которые умеют самообучаться. Насколько в NLP  такмюие модели уместны и если умкстны, то где можно о чем-то таком узнать?
3. Обучающая выборка состоит из 7к текстов. Насколько это адекватно? 7к на 14 классов.

Не ругайте, если плохо вопрос задаю. Опыта мало и не знаю пока много всего. Гуглил свои вопросы, но решения или идей пока не нашел.

Спасибо за внимание!
привет! 7 тысяч на 14 классов, конечно, очень мало. Надо хотя бы по тысяче на класс, а лучше еще больше. Чем больше, тем лучше. Как эксперимент, 7 тысяч пойдет, но для рабочей модели, мало. Я бы порекомендовала попробовать предобученные модели, где уже есть информация о текстах, Fasttext, BERT и так далее.
источник

E

Elena in Natural Language Processing
А какие у вас классы? Темы новостей?
источник

М

Марк in Natural Language Processing
Anthony
Всем, привет!

Я новичок в деле NLP. Сейчас решаю задачу с классификацией СМИ по заголовкам. Решаю через метод опорных векторов LinearSVC из sklearn. Текст обрабатываю через наташу, убираю имена, числа, локации, знаки и привожу в нормальную форму через pymorphy2. Также убираю стоп слова. И также создал небольшой словарь синонимов, который находит слово в тексте по значениям словаря и меняет его на ключ словаря. Это было сделано, чтобы слова относящиеся, например, к гос органам, заменялись словом "государство" и тем самым такой заголовок с большей вероятностью относился к классу связанным с государством.

Сейчас на тестовых данных результат 80%, а на свежей партии новостей результат заметно хуже. И думаю о том, как улучшить.

Хотел с вами посоветоваться:
1. Есть ли статьи/книги/пооекты которые можно посмотреть и найти интереснык идеи по улучшению классификвции коротких текстов
2. Знаю, что есть такие модели машинного обучегия, которые умеют самообучаться. Насколько в NLP  такмюие модели уместны и если умкстны, то где можно о чем-то таком узнать?
3. Обучающая выборка состоит из 7к текстов. Насколько это адекватно? 7к на 14 классов.

Не ругайте, если плохо вопрос задаю. Опыта мало и не знаю пока много всего. Гуглил свои вопросы, но решения или идей пока не нашел.

Спасибо за внимание!
Попробуйте более сильную модель.
https://keras.io/examples/nlp/text_classification_with_transformer/
источник

A

Anthony in Natural Language Processing
А что значит попробовать предобученные модели? Именно модели классификации? У меня классы специфичные, касательно деятельности одной компании. Например "взаииодействие с бизнесом", "с государством", "продукты", "негативная оценка деятельности компании" и т.п.
источник

A

Anthony in Natural Language Processing
Спасибо! Посмотрю сейчас
источник

М

Марк in Natural Language Processing
Anthony
Спасибо! Посмотрю сейчас
Или еще лучше. Попробовать для начала эмбединги бертовые подать в ваш классификатор. Например такие:
https://www.sbert.net/examples/applications/computing-embeddings/README.html
источник

М

Марк in Natural Language Processing
Ну и данных конечно маловато.
При таком объеме нужно очень внимательно за валидационной выборкой следить. Вплоть до ручного отбора экземпляров. Чтобы вы могли убедиться что валидация отражает вашу совокупность.
А потом можно и аугментаций добавить.
источник

ДС

Дмитрий Симаков... in Natural Language Processing
Anthony
Всем, привет!

Я новичок в деле NLP. Сейчас решаю задачу с классификацией СМИ по заголовкам. Решаю через метод опорных векторов LinearSVC из sklearn. Текст обрабатываю через наташу, убираю имена, числа, локации, знаки и привожу в нормальную форму через pymorphy2. Также убираю стоп слова. И также создал небольшой словарь синонимов, который находит слово в тексте по значениям словаря и меняет его на ключ словаря. Это было сделано, чтобы слова относящиеся, например, к гос органам, заменялись словом "государство" и тем самым такой заголовок с большей вероятностью относился к классу связанным с государством.

Сейчас на тестовых данных результат 80%, а на свежей партии новостей результат заметно хуже. И думаю о том, как улучшить.

Хотел с вами посоветоваться:
1. Есть ли статьи/книги/пооекты которые можно посмотреть и найти интереснык идеи по улучшению классификвции коротких текстов
2. Знаю, что есть такие модели машинного обучегия, которые умеют самообучаться. Насколько в NLP  такмюие модели уместны и если умкстны, то где можно о чем-то таком узнать?
3. Обучающая выборка состоит из 7к текстов. Насколько это адекватно? 7к на 14 классов.

Не ругайте, если плохо вопрос задаю. Опыта мало и не знаю пока много всего. Гуглил свои вопросы, но решения или идей пока не нашел.

Спасибо за внимание!
Можешь попробовать запустить вот эту штуку (минутка саморекламы).

https://www.kaggle.com/simakov/lama-tabularnlpautoml-preset-example

Тут как раз тфидф + эмбеддинг navec от Наташи через случайную лстм и в бустинг. (важная пометка, там под капотом не делается подходящий препроцессинг для глов эмбеддингов и больше рассчитано на фасттекст, поэтому имеет смысл либо заменить модель эмбеддинга, либо предварительно сделать препроцессинг).

А ниже пример с файнтюном диппавловского Берта.

Все в формате фит-предикт для задачи классификации (без мультилейбла) и регрессии. Если попробуешь, было бы прикольно услышать фидбэк, можно и в личке.

Сама библиотека https://github.com/sberbank-ai-lab/LightAutoML
источник

YB

Yuri Baburov in Natural Language Processing
Anthony
Всем, привет!

Я новичок в деле NLP. Сейчас решаю задачу с классификацией СМИ по заголовкам. Решаю через метод опорных векторов LinearSVC из sklearn. Текст обрабатываю через наташу, убираю имена, числа, локации, знаки и привожу в нормальную форму через pymorphy2. Также убираю стоп слова. И также создал небольшой словарь синонимов, который находит слово в тексте по значениям словаря и меняет его на ключ словаря. Это было сделано, чтобы слова относящиеся, например, к гос органам, заменялись словом "государство" и тем самым такой заголовок с большей вероятностью относился к классу связанным с государством.

Сейчас на тестовых данных результат 80%, а на свежей партии новостей результат заметно хуже. И думаю о том, как улучшить.

Хотел с вами посоветоваться:
1. Есть ли статьи/книги/пооекты которые можно посмотреть и найти интереснык идеи по улучшению классификвции коротких текстов
2. Знаю, что есть такие модели машинного обучегия, которые умеют самообучаться. Насколько в NLP  такмюие модели уместны и если умкстны, то где можно о чем-то таком узнать?
3. Обучающая выборка состоит из 7к текстов. Насколько это адекватно? 7к на 14 классов.

Не ругайте, если плохо вопрос задаю. Опыта мало и не знаю пока много всего. Гуглил свои вопросы, но решения или идей пока не нашел.

Спасибо за внимание!
80% на новостях -- нормально, там же естественный разброс тем, спортивную новость про США можно и в "США" и в "Спорт" запихнуть, а иногда даже в "Здоровье" и в "Экономика". Ну и в "Политика" тоже. А если там травма из-за того, что мотоцикл во время гонки сломался... то ещё "Катастрофы" и "Технологии". Так что 80% -- это даже ещё хорошо.
Посмотрите, насколько точно у вас руками размечают.
Ну и ещё можно взять ленту.ру и другие датасеты с проставленными категориями, их данные использовать за основу вашего классификатора -- сначала учить на нём, а потом уже выбросить верхний слой и доучивать на ваших метках.
источник

E

Elena in Natural Language Processing
Дмитрий Симаков
Можешь попробовать запустить вот эту штуку (минутка саморекламы).

https://www.kaggle.com/simakov/lama-tabularnlpautoml-preset-example

Тут как раз тфидф + эмбеддинг navec от Наташи через случайную лстм и в бустинг. (важная пометка, там под капотом не делается подходящий препроцессинг для глов эмбеддингов и больше рассчитано на фасттекст, поэтому имеет смысл либо заменить модель эмбеддинга, либо предварительно сделать препроцессинг).

А ниже пример с файнтюном диппавловского Берта.

Все в формате фит-предикт для задачи классификации (без мультилейбла) и регрессии. Если попробуешь, было бы прикольно услышать фидбэк, можно и в личке.

Сама библиотека https://github.com/sberbank-ai-lab/LightAutoML
почему так сложно там все? совсем не для новичка библиотека
источник

E

Elena in Natural Language Processing
Anthony
А что значит попробовать предобученные модели? Именно модели классификации? У меня классы специфичные, касательно деятельности одной компании. Например "взаииодействие с бизнесом", "с государством", "продукты", "негативная оценка деятельности компании" и т.п.
предобученные языковые модели - почитайте про fasttext, transformers от HuggingFace. У fasttext есть свой классификатор, довольно хорошо работает на небольших текстах. HuggingFace это наше все теперь :) для простой работы с transformers есть библиотека Simpletransformers https://simpletransformers.ai/
источник

ДС

Дмитрий Симаков... in Natural Language Processing
Elena
почему так сложно там все? совсем не для новичка библиотека
В формате фит-предикт там просто)

Поменять язык или указать нужную модель берта - одним параметром. А так - менять конфиг или вообще кастомные пайплайны - это да.

Если говорить про тексты, то сейчас не хватает подбора батчсайза / длины сиквенса, чтобы не вываливать это на пользователя. Плюс более интуитивное добавление модели эмбеддинга, а не внутри дикта диктов. Какие параметры для чего нужны есть в файле конфига. Его можно сохранить automl.get_config(path='config.yml'). Там дефолтный конфиг для пресета с описанием параметров.

Мы добавим больше документации и примеров. Согласен, что запутанно. Для базового понимания работы нужно смотреть туториалы на гитхабе / ридзедокс. Плюс должно быть видео с AIJ, но пока нельзя посмотреть(
источник

KL

Kir L in Natural Language Processing
А в симплтрансформерс есть генерация текста на русском? Или надо как-то дообучить на тонне данных
источник

E

Elena in Natural Language Processing
Kir L
А в симплтрансформерс есть генерация текста на русском? Или надо как-то дообучить на тонне данных
есть но не все типы моделей
источник

E

Elena in Natural Language Processing
если у вас уже есть обученная GPT2 например или уже есть такая на Hugging Face, то с ней можно работать в симпл трансформерс
источник

E

Elena in Natural Language Processing
Сбербанк же вот недавно выложил в свободный доступ предобученные модели для генерации текста
источник

E

Elena in Natural Language Processing
на русском
источник

A

Anthony in Natural Language Processing
Спасибо большое, @mark_rtb @gwenywere @DmitrySimakov @yuri_baburov! Буду изучать и пробовать)
источник