[Машинное обучение] NLP: разбираем на пальцах практические кейсы без заморочек с ML
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Сравнение текстовДопустим у нас есть три текста: два из них про собачек и один про кошечек. Как их сравнить между собой?
Мы можем посчитать сколько каждое слово встречается в тексте, в нашем случае считать будем кошечек и собачек, и если в тексте собачек встречается больше, чем кошечек, то можно сделать вывод, что они (тексты) про одно и то же.
На самом деле, не всегда так. Представим ситуацию, что есть очень длинный текст про собачек и в нем слов встречается больше. К счастью, из такой ситуации можно выйти, сравнив косинусные расстояния.
Такой подход, когда мы текст делим на слова и считаем каждое слово называется bag-of-words или мешок слов. На python это делается довольно просто:
Проблема подхода bag-of-words в том, что, например, «Кошку» и «Кошка» это два разных слова и при подсчете будут засчитаны двум разным словам. Если внимательнее присмотреться, то мы заметим, что эти слова различаются только на одну букву. А что, если мы вырежем все окончания и суффиксы? На самом деле такой процесс называется Стемминг. Этот подход работает довольно быстро и послепредобработки bag-of-words будет засчитывать такие слова, как «Кошку» и «Кошка» за одно.ЛемматизацияРассмотренный выше подход так же не лишен недостатков. Представим ситуацию, когда у нас есть два слова, но удаление суффиксов и окончаний не приведет к одному и тому же слову. Например, слова «шел» и «идти». Тут нам на помощь приходят другие инструменты – морфологические анализаторы. В python два самых популярных: pymorphy и pymystem. На вход подаем слово, а на выходе получаем его в нормализованном виде. Такой подход называется Лемматизация.
ОрфографияИ снова поднимаем вопрос предобработки данных. Иногда бывает так, что в тексте могут встретится орфографические ошибки и было бы не плохо о них знать, а в идеале еще и исправить их.
Расстояние ЛевенштейнаВычисление метрики Расстояния Левенштейна помогает при решении задач, в которых необходимо ответить насколько слова или тексты похожи друг на друга. Как это работает? У нас есть два слова и если они одинаковы, то метрика равно нулю, а если для достижения «одинаковости» требуется произвести, к примеру, перестановку букв, то мы штрафуем и прибавляем единицу. Таким образом значение метрики увеличивается, и чем больше значение мы получаем, тем меньшей степенью похожести обладают наши слова.
Однако, не во всех случаях Расстояние Левенштейна одинаково эффективно. Например, если мы посчитаем метрику у слов «Светильник» — «Лампа» — «Кипятильник», то скорее всего окажется, что «Светильник» больше похож на «Кипятильник», чем на «Лампа».Word2VecВопрос со светильником, лампой и кипятильником остается открытым. Преодолеть данную проблему можно проанализировав контекст употребления слов, и в этом нам поможет инструмент Word2Vec. Как он работает? Он берет различные контексты и если слова встречаются в одинаковых контекстах, то считается что они похожи. Другими словами, каждому слову представлен некоторый вектор и если слова близко, то они синонимы. Обучить Word2Vec можно в несколько строчек:
На вход подается массив из массивов слов, т.е. предложения для обучения еще делим на слова. На деле для обучения предложений должно быть, естественно, побольше. Имеет смысл при обучении использовать от 10 тыс. предложений.Тематическое моделированиеПредставим, что у нас есть набор книг и нам нужно поделить их по жанрам, например книги про бизнес, книги про IT, экономику и т.д. Здесь на помощь нам приходит тематическое моделирование. Как это работает? Каждому тексту присваивается метка и благодаря этой метке он (инструмент) относит текст к одной из «кучек». Далее мы садимся разбирать эти «кучки» и если «кучка» состоит из миллиона текстов, а десять из них про кулинарные рецепты, то следовательно, мы делаем вывод, что все тексты в этой кучке являются кулинарными рецептами.
Кроме того, инструмент pyLDAvis обладает мощной визуализацией, что сейчас очень актуально.Синтаксический анализМетоды синтаксического анализа применяются, когда нужно удалить часть предложения. Например, если из текста нужно сделать небольшую аннотацию. Для этого разбираем предложение по составу и убираем ненужные слова. С такой задачей легко справится udpipe.
И посмотрим, как работает этот инструмент на примере мема, который ходит среди лингвистов: «Глокая куздра штеко будланула бокра и курдячит бокрёнка». Это предложение, в котором у нормальных слов корни заменили на набор звуков, но при этом все еще понятно кто и кого «будланул».
Как мы видим, udpipe справился и построил граф зависимостей даже на таком, очевидно, бредовом предложении.Несмотря на то, что все инструменты рассматривались на простых примерах, у NLP широкий спектр решаемых задач: классификация обращений сотрудников, оценка отзывов клиентов, анализ сообщений из чат-бота. Таким образом в наших руках появилось еще несколько инструментов.
===========
Источник:
habr.com
===========
Похожие новости:
- [Алгоритмы, Машинное обучение] Что такое графовые нейронные сети
- [Big Data, Машинное обучение] Перспективные архитектуры для современных инфраструктур данных (перевод)
- [Тестирование IT-систем, Python, Программирование, Машинное обучение] PyTest для машинного обучения — простой учебник на основе примеров (перевод)
- [Машинное обучение, Искусственный интеллект, Экология] Проект CETI — декодинг «языка» кашалотов
- [Программирование, Машинное обучение, Искусственный интеллект] Принципиальная схема работы типичного мышления
- [Python, Обработка изображений, Машинное обучение, DIY или Сделай сам] Полив газона с помощью модели сегментации изображений и системы на базе Arduino (перевод)
- [Машинное обучение, Искусственный интеллект] И чат, и бот, и логопед. Как разработать сервис на основе ML для диагностики дефектов речи у детей
- [Работа с 3D-графикой, Алгоритмы, Машинное обучение, Игры и игровые приставки] Преобразуем миры Minecraft в трёхмерные фотореалистичные сцены с помощью нейросетей (перевод)
- [Программирование, Машинное обучение] Дообучение нейросети для поиска лиц в медицинских масках
- [Машинное обучение, Искусственный интеллект, Natural Language Processing] Искусственный интеллект в юриспруденции. Вебинар № 2: Обзор актуальных LegalTech-решений
Теги для поиска: #_mashinnoe_obuchenie (Машинное обучение), #_nlp, #_mashinnoe_obuchenie (машинное обучение), #_mashinnoe_obuchenie (
Машинное обучение
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 19:29
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Сравнение текстовДопустим у нас есть три текста: два из них про собачек и один про кошечек. Как их сравнить между собой? Мы можем посчитать сколько каждое слово встречается в тексте, в нашем случае считать будем кошечек и собачек, и если в тексте собачек встречается больше, чем кошечек, то можно сделать вывод, что они (тексты) про одно и то же. На самом деле, не всегда так. Представим ситуацию, что есть очень длинный текст про собачек и в нем слов встречается больше. К счастью, из такой ситуации можно выйти, сравнив косинусные расстояния. Такой подход, когда мы текст делим на слова и считаем каждое слово называется bag-of-words или мешок слов. На python это делается довольно просто: Проблема подхода bag-of-words в том, что, например, «Кошку» и «Кошка» это два разных слова и при подсчете будут засчитаны двум разным словам. Если внимательнее присмотреться, то мы заметим, что эти слова различаются только на одну букву. А что, если мы вырежем все окончания и суффиксы? На самом деле такой процесс называется Стемминг. Этот подход работает довольно быстро и послепредобработки bag-of-words будет засчитывать такие слова, как «Кошку» и «Кошка» за одно.ЛемматизацияРассмотренный выше подход так же не лишен недостатков. Представим ситуацию, когда у нас есть два слова, но удаление суффиксов и окончаний не приведет к одному и тому же слову. Например, слова «шел» и «идти». Тут нам на помощь приходят другие инструменты – морфологические анализаторы. В python два самых популярных: pymorphy и pymystem. На вход подаем слово, а на выходе получаем его в нормализованном виде. Такой подход называется Лемматизация. ОрфографияИ снова поднимаем вопрос предобработки данных. Иногда бывает так, что в тексте могут встретится орфографические ошибки и было бы не плохо о них знать, а в идеале еще и исправить их. Расстояние ЛевенштейнаВычисление метрики Расстояния Левенштейна помогает при решении задач, в которых необходимо ответить насколько слова или тексты похожи друг на друга. Как это работает? У нас есть два слова и если они одинаковы, то метрика равно нулю, а если для достижения «одинаковости» требуется произвести, к примеру, перестановку букв, то мы штрафуем и прибавляем единицу. Таким образом значение метрики увеличивается, и чем больше значение мы получаем, тем меньшей степенью похожести обладают наши слова. Однако, не во всех случаях Расстояние Левенштейна одинаково эффективно. Например, если мы посчитаем метрику у слов «Светильник» — «Лампа» — «Кипятильник», то скорее всего окажется, что «Светильник» больше похож на «Кипятильник», чем на «Лампа».Word2VecВопрос со светильником, лампой и кипятильником остается открытым. Преодолеть данную проблему можно проанализировав контекст употребления слов, и в этом нам поможет инструмент Word2Vec. Как он работает? Он берет различные контексты и если слова встречаются в одинаковых контекстах, то считается что они похожи. Другими словами, каждому слову представлен некоторый вектор и если слова близко, то они синонимы. Обучить Word2Vec можно в несколько строчек: На вход подается массив из массивов слов, т.е. предложения для обучения еще делим на слова. На деле для обучения предложений должно быть, естественно, побольше. Имеет смысл при обучении использовать от 10 тыс. предложений.Тематическое моделированиеПредставим, что у нас есть набор книг и нам нужно поделить их по жанрам, например книги про бизнес, книги про IT, экономику и т.д. Здесь на помощь нам приходит тематическое моделирование. Как это работает? Каждому тексту присваивается метка и благодаря этой метке он (инструмент) относит текст к одной из «кучек». Далее мы садимся разбирать эти «кучки» и если «кучка» состоит из миллиона текстов, а десять из них про кулинарные рецепты, то следовательно, мы делаем вывод, что все тексты в этой кучке являются кулинарными рецептами. Кроме того, инструмент pyLDAvis обладает мощной визуализацией, что сейчас очень актуально.Синтаксический анализМетоды синтаксического анализа применяются, когда нужно удалить часть предложения. Например, если из текста нужно сделать небольшую аннотацию. Для этого разбираем предложение по составу и убираем ненужные слова. С такой задачей легко справится udpipe. И посмотрим, как работает этот инструмент на примере мема, который ходит среди лингвистов: «Глокая куздра штеко будланула бокра и курдячит бокрёнка». Это предложение, в котором у нормальных слов корни заменили на набор звуков, но при этом все еще понятно кто и кого «будланул». Как мы видим, udpipe справился и построил граф зависимостей даже на таком, очевидно, бредовом предложении.Несмотря на то, что все инструменты рассматривались на простых примерах, у NLP широкий спектр решаемых задач: классификация обращений сотрудников, оценка отзывов клиентов, анализ сообщений из чат-бота. Таким образом в наших руках появилось еще несколько инструментов. =========== Источник: habr.com =========== Похожие новости:
Машинное обучение ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 19:29
Часовой пояс: UTC + 5