Nlp что это такое в программировании

NLP-разработчик: кто такой и чем занимается?

Are you ready for pain?

Nlp что это такое в программировании. Смотреть фото Nlp что это такое в программировании. Смотреть картинку Nlp что это такое в программировании. Картинка про Nlp что это такое в программировании. Фото Nlp что это такое в программировании

Ингредиенты

Указания

Кто такой NLP-разработчик?

Не путайте с НЛП головного мозга

У многих людей срабатывает неправильный триггер на аббревиатуру NLP (НЛП) — спам и шарлатанство. Действительно, такое направление как нейролингвистическое программирование существует, но никакого отношения к нашей теме не имеет. НЛП в этом понимании — это техника влияние на подсознание человека, изменение процессов на подкорке, чтобы яснее мыслить, прокачать коммуникабельность и контролировать перепады в настроении и вообще горя не знать.

Базовые скиллы

В первую очередь потребуется хорошая математическая база : если ты прогуливал в ВУЗе матанализ, линейную алгебру и теорию вероятностей, придётся всё навёрстывать, т.к. потребуются хорошие (мы бы сказали фундаментальные) знания в математической статистике, формуле Байеса и принципов максимума правдоподобия. Далее по порядку

Программирование

Нужен опыт разработки от года или двух, скорее всего, это будет Python — основа основ для Data Science, здесь тоже понадобиться в полном объеме на уровне хорошего мидла. Так же потребуется экспириенс работы с библиотеками numpy (числовые массивы), scipy (инжиниринг), matplotlib (визуализация данных)

Nlp что это такое в программировании. Смотреть фото Nlp что это такое в программировании. Смотреть картинку Nlp что это такое в программировании. Картинка про Nlp что это такое в программировании. Фото Nlp что это такое в программировании

Плюс работа с фреймворками Flask или Django Rest Framework

Машинное обучение

Теория и практика в области машинного обучения: сбор данных, постановка задач и понимание алгоритмов ( логистическая регрессия, boosting, random forest ). Для этого используют библиотеки scikit-learn и LGBM

Nlp что это такое в программировании. Смотреть фото Nlp что это такое в программировании. Смотреть картинку Nlp что это такое в программировании. Картинка про Nlp что это такое в программировании. Фото Nlp что это такое в программировании

Основы NLP

Базы данных

Nlp что это такое в программировании. Смотреть фото Nlp что это такое в программировании. Смотреть картинку Nlp что это такое в программировании. Картинка про Nlp что это такое в программировании. Фото Nlp что это такое в программировании

Если ты целишь на сеньора, то стоит основательно подготовится — просьба убрать детей от экрана.

Продвинутый NLP

Умение работать с долгой краткосрочной памятью LSTM (Long short-term memory) — архитектура рекуррентных нейронных сетей, BERT (Bidirectional Encoder Representations from Transformers) — техника машинного обучения для предварительного обучения обработке естественного языка, разработанная Google, GPT-2 — нейросеть для генерации связного текста, word2vec или glove — модели для получения и распределения векторных представлений слов

Nlp что это такое в программировании. Смотреть фото Nlp что это такое в программировании. Смотреть картинку Nlp что это такое в программировании. Картинка про Nlp что это такое в программировании. Фото Nlp что это такое в программировании

Пригодятся навыки работы с библиотеками nltk (Natural Language Toolkit) — символьная и статистическая обработка естественного языка, StanfordNLP — токенизация, лемматизация, gensim — неконтролируемого моделирования тем и обработки естественного языка, bigartm — тематическое моделирование, fasttext — классификация текста

Продвинутый ML / Deep Learning

Nlp что это такое в программировании. Смотреть фото Nlp что это такое в программировании. Смотреть картинку Nlp что это такое в программировании. Картинка про Nlp что это такое в программировании. Фото Nlp что это такое в программировании

Знание и умение пользоваться такими инструментами, как yargy (извлечение фактов и сущностей), pymorphy (морфологический анализ)

Дополнительно может пригодится

Если умеешь с этим работать, то это будет твоим преимуществом:

Что может входить в обязанности?

На данный момент одно из перспективных направлений в NLP — интерактивные голосовые сервисы и помощники. По итогу вышеперечисленных навыков в твой воркфлоу может входить следующее:

Где искать вакансии NLP-разработчика?

Хороший NLP-разработчик сейчас на вес золота. Советуем чекать такие ресурсы, как: Хабр.Карьера и яразработчик.рф. Так же можно пропарсить такие социальные сети как Linkedin и Twitter — там частенько идёт рекрутинг разработчиков разного калибра

Источник

Что такое NLP: расшифровываем термин простыми словами для чайников

Nlp что это такое в программировании. Смотреть фото Nlp что это такое в программировании. Смотреть картинку Nlp что это такое в программировании. Картинка про Nlp что это такое в программировании. Фото Nlp что это такое в программировании

Однако у NLP есть 2 сущности:

Neuro-Linguistic Processing — принадлежит области психологии.

Natural Language Processing — принадлежит области программирования.

NLP в программировании — что это такое

улучшение бизнес-показателей при помощи искусственного интеллекта;

составление прогнозов и разработка математических моделей в различных сферах;

улучшение распознавания текста, речи и изображений;

улучшение взаимодействия голосовых помощников с владельцами устройств;

NLP — это работа с большими данными, как и Data Science, однако DS работает с различными видами данных из разных сфер, а NLP работает в основном с текстом и семантикой.

NLP на практике

В практическом применении NLP-разработка в основном занимается работой с текстовыми данными для лучшего их понимания искусственным интеллектом. Вот несколько задач, которые выполняет NLP в программировании:

Самая основная задача NLP — это перевод текстов с одних языков на другие силами искусственного интеллекта. На сегодняшний день перевод высокого качества недоступен, поэтому тут для NLP есть поле для деятельности.

Качественная работа голосовых помощников. То есть, задавая какой-либо вопрос голосовому помощнику, мы ожидаем 100%-е понимание, что не всегда происходит. Но как раз этим и занимается NLP — делает так, чтобы роботы-помощники лучше понимали людей.

Почему NLP в разработке выделяют в отдельное направление

Пока NLP не вы деляют в отдельное направление, но все к этому идет. В первую очередь это обуславливается сложностью процесса обучения «машин» взаимодействовать с текстом.

Полисемия — это многозначные слова, которые имеют одинаковый исходный смысл. Например: стол (какое-то учреждение или предмет), крыса (животное или человек), молоток (предмет или человек), остановка (процесс или объект) и т. д.

Омонимия — одинаковые слова, но с разными смыслами. Например: замок, печь, ключ и т. д.

Подобных языковых трудностей в каждом языке пруд пруди — от этого и возникает сложность во взаимодействи и с текстовой информацией.

Заключение

Мы будем очень благодарны

если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

Источник

NLP для людей. Часть 1

Nlp что это такое в программировании. Смотреть фото Nlp что это такое в программировании. Смотреть картинку Nlp что это такое в программировании. Картинка про Nlp что это такое в программировании. Фото Nlp что это такое в программировании

NLP (Natural Language Processing) — направление области искусственного интеллекта, которое занимается обработкой естественного, в том числе неструктурированного языка. NLP состоит в применении методов машинного обучения для анализа текста и речи.

Возможности NLP

Для NLP можно использовать любые наборы текстовых документов. В зависимости от поставленной задачи их источник может быть самым разным: например, массив новостных сообщений СМИ по определенной тематике (а-ля «коронавирус, 2020»), список комментариев популярного ролика YouTube или записанное тематическое интервью эксперта.

Nlp что это такое в программировании. Смотреть фото Nlp что это такое в программировании. Смотреть картинку Nlp что это такое в программировании. Картинка про Nlp что это такое в программировании. Фото Nlp что это такое в программировании

Применяя методы NLP, исследователь может решить или поспособствовать решению широкому спектру задач. Задачи можно поделить на несколько типов или уровней.

Уровень сигналов: распознавание текста, распознавание речи, синтез речи, синхронный перевод.

На уровне сигнала NLP работает как с изображениями текста, например, с отсканированными дневниками с рукописными записями, так и со свойствами речевых сигналов: их смысловой нагрузкой, эмоциональной нагрузкой, а также со звуко-акустическими характеристиками. Одной из основных задач этого уровня является проблема распознавания текста (text recognition), распознавание речи (speech recognition) и обратная ей — синтез речи (speech synthesis).

Уровень слов и словосочетаний: морфологический анализ слова, лемматизация, исправление грамматических ошибок, выявление отношений между словами, распознавание именованных сущностей.

Для обработки отдельно взятых слов выделяют задачи морфологического анализа слова, исправление допущенных оператором ошибок, поиск леммы (основной формы) слова. При работе со словосочетаниями используют так называемые n-граммы — словосочетания, состоящие из n слов. При обработке n-грамм ставят задачи синтаксического разбора и выявления отношений между составляющими n-грамм. Отдельной задачей ставится проблема распознавания именованных сущностей (named-entity recognition, или NER). В ходе NER решают вопросы принадлежности слова или словосочетания к имени собственному, например: локации ( Санкт-Петербург), имени персонажа ( Шерлок Холмс) или названию компании ( Uber).

Уровень предложений: синтаксический разбор предложений, генерация предложений, распознавание именованных сущностей, распознавание именных групп, анализ тональности.

Обработка предложений методами NLP состоит в задаче синтаксического разбора предложений или их смысловой генерации, например, для автоматизации автоматических ответов умного чат-бота. Также на уровне предложений выделяют задачи выделения именованных сущностей (вышеупомянутый NER) и именных групп (Noun Phrase Extraction). Кроме того, при анализе предложений можно выделить характер входящих в него слов, указывающих на настроение текста, его позитивный или негативный контекст. Этот метод называют анализом тональности или анализом эмоциональной окраски текста (sentiment analysis).

Уровень документов: выявление ключевых слов, суммаризация текста, выделение заголовка, перевод текста, анализ тематики.

Документ — это набор текста, состоящий из нескольких связанных между собой предложений. Например, монолог персонажа или публикация в СМИ. На уровне текстовых документов решают задачи содержательного описания и используют такие методы, как: выделение ключевых слов (keywords extraction), автоматическое аннотирование текста (text summarization), автоматическое заглавие текста, перевод с одного языка на другой, а также метод тематического моделирования — определение причастности документа к одной из тем (topic modeling).

Уровень корпусов: устранение дубликатов, антиплагиат, информационный поиск.

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

Стоит отметить, что каждый следующий уровень включает в себя все предыдущие. Например, уровень документов позволяет работать с предложениями по отдельности, затем перейти на словосочетания, слова и т.д.

Где взять данные?

Обобщенным объектом исследования в NLP является текст, поэтому одним из основных вопросов в рамках анализа ставится выбор релевантных источников текстовых материалов. В зависимости от поставленных задач, источниками данных могут быть электронные базы СМИ, данные социальных сетей, открытые языковые корпусы и другие.

Электронные базы СМИ

Для формирования текстовой выборки существуют специальные коммерческие ресурсы, такие как «Интегрум», «Медиалогия» и «Public.ru». Они содержат миллионы новостных публикаций и записей из социальных сетей. Электронная база СМИ представляет из себя платформу для поиска и анализа данных по введенному оператором запросу. Стоимость доступа к таким базам начинается от 20 000 рублей в месяц.

Данные СМИ позволяют анализировать социальные тренды и информационные повестки в обществе. Данные из социальных сетей позволяют проводить маркетинговый анализ компаниям и корпорациям.

API популярных социальных сервисов

Сформировать текстовый корпус возможно используя инструменты API социальных сетей, например Vk API или YouTube API. В этом случае для анализа доступны такие данные, как записи и ответы на стенах, комментарии под фотографиями и видео, описания профилей пользователей, описания сообществ и другие. Как правило, такие API имеют открытый, но ограниченный доступ: например, не более 500 запросов в сутки.

Данные социальных сетей позволяют выявить поведенческие характеристики пользователей и проверить гипотезы их социального взаимодействия.

Открытые языковые корпусы

Существуют проекты открытых размеченных текстовых корпусов на различных языках. Для русского языка наиболее популярные это: Национальный корпус русского языка и Opencorpora.org. Такие проекты активно развиваются за счет участия сообщества.

Открытые языковые корпусы направлены, главным образом, на языковые исследования и проверку лингвистических феноменов и гипотез.

Пример исследовательской задачи

Методы NLP применяются при решении социологических задач. В ходе исследования беспилотных автомобилей команда Центра STS поставила ряд вопросов, направленных на выявление различных устройств технических дизайнов беспилотных автомобилей, а также описание основных трендов этих дизайнов.

В ходе работы был собран корпус текстовых документов, состоящий из 4500 записей, среди которых оказались научные публикации по теме беспилотных автомобилей, а также набор новостных сообщений СМИ. Последний был получен в процессе работы с электронной базой СМИ «Public.ru» по запросу «беспилотный автомобиль». Текстовый корпус, помимо тела публикации, содержит: заголовок, дату публикации, источник, тип записи, а также ряд мета-параметров, служащих для более детального представления библиографической ссылки на материал.

Для анализа собранных данных наиболее эффективно использовать методы уровня предложений, документов и корпусов.

Методы NLP на пальцах

Далее будет приведен обзор базовых подходов NLP без освещения технической составляющей. Для демонстрации примеров возьмем предложение следующее предложение:

Эксперты Saxo Bank твердят, что беспилотное будущее уже практически наступило: вот-вот автомобили пятого уровня выйдут на дороги и мир изменится навсегда.

Лемматизация и стемминг текста

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

Не вдаваясь в технические подробности процесса, рассмотрим результат нормализации каждого из примеров.

эксперт saxo bank твердить что беспилотный будущий уже практически наступил : вот вот автомобиль пятый уровень выйти на дорога и мир измениться навсегда

эксперт sax bank тверд что беспилотн будущ уж практическ наступ : вот вот автомобил пят уровен выйт на дорог и мир измен навсегд

Конечно, при итоговой интерпретации использовать результаты лемматизации более удобно, однако процесс нормализации в этом случае требует больших вычислительных мощностей.

Использование стоп-слов

Следующий уровень нормализации состоит в использовании фильтров, направленных на выявление и очистку встречаемых стоп-слов. Базовый набор таких слов в русском языке включает в себя предлоги, частицы, местоимения и междометия, например: « я», «он», «как», «что», «уже», «вот» и другие. Часто при анализе узкоспециализированных текстов очищают самые встречаемые слова. Например, отчеты компании Яндекс будут содержать много упоминаний на собственный бренд, в связи с этим такие названия могут войти в список стоп-слов наравне с предлогами и другими.

Применяя фильтр для ранее нормализованного предложения, получим:

эксперт saxo bank твердить беспилотный будущий наступил автомобиль пятый уровень выйти дорога мир измениться навсегда

Использование n-грамм

N-грамма в NLP — это комбинация одного (монограмма или monogram) или нескольких, например, двух (биграмма или bigram), трех (триграмма или trigram) слов, которые встречаются в тексте. N-граммы являются ключевыми объектами анализа при обработке естественного языка и составляют основу многим другим методам, в числе которых извлечение именных групп, идентификация языка и другие.

Выделим n-граммы из упрощенного предложения выше:

эксперт saxo; saxo bank; bank твердить; твердить беспилотный; беспилотное будущее

эксперт saxo bank; saxo bank твердить; bank твердить беспилотный; твердить беспилотный будущий

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

Как видно из примера выше, наиболее содержательным оказались биграммы. Такие словосочетания, как «эксперт saxo», «saxo bank», «беспилотное будущее», говорят о предложении больше, чем другие n‑граммы. Часто биграмы указывают на характер существительного. Например: « беспилотный автомобиль».

Определение языковой принадлежности документа

Анализ текстовых документов унифицирован даже на уровне стилистики текста на одном языке, не говоря о разных. Поэтому при наличии набора текстов на разных языках их необходимо разметить.

В подходах NLP для решения этой проблемы используют методы идентификации языка или language identification. Один из классических способов для автоматического определения языка — распределение языковых коэффициентов n-грамм и подсчет результирующей суммы.

Тематическое моделирование и мешок слов

Тематическое моделирование корпуса документов представляет собой набор тем, характеризующих содержание данных документов. Для описания темы используется тематическая модель, которая содержит связи между словами и документами, представленная в виде векторных распределений. Тематическая модель является средством обобщения и систематизации содержания документов корпусов.

Одним из наиболее распространенных подходов в тематическом моделировании является метод латентного размещения Дирихле или Latent Dirichlet Allocation (LDA). LDA состоит в составлении так называемого мешка слов (bag-of-words) для каждой темы на основе частотных характеристик входящих в него n-грамм.

Nlp что это такое в программировании. Смотреть фото Nlp что это такое в программировании. Смотреть картинку Nlp что это такое в программировании. Картинка про Nlp что это такое в программировании. Фото Nlp что это такое в программировании

Метод тематического моделирования применяется в задачах корпусного уровня, например, для информационного поиска или автоматической разметки текстов по темам.

Источник

Плавное введение в Natural Language Processing (NLP)

Введение в NLP с Sentiment Analysis в текстовых данных.

Люди общаются с помощью каких-либо форм языка и пользуются либо текстом, либо речью. Сейчас для взаимодействия компьютеров с людьми, компьютерам необходимо понимать естественный язык, на котором говорят люди. Natural language processing занимается как раз тем, чтобы научить компьютеры понимать, обрабатывать и пользоваться естественными языками.

В этой статье мы рассмотрим некоторые частые методики, применяющиеся в задачах NLP. И создадим простую модель сентимент-анализа на примере обзоров на фильмы, чтобы предсказать положительную или отрицательную оценку.

Что такое Natural Language Processing (NLP)?

NLP — одно из направлений искуственного интеллекта, которое работает с анализом, пониманем и генерацией живых языков, для того, чтобы взаимодействовать с компьютерами и устно, и письменно, используя естественные языки вместо компьютерных.

Применение NLP

Очистка данных (Data Cleaning):

При Data Cleaning мы удаляем из исходных данных особые знаки, символы, пунктуацию, тэги html <> и т.п., которые не содержат никакой полезной для модели информации и только добавляют шум в данные.

Nlp что это такое в программировании. Смотреть фото Nlp что это такое в программировании. Смотреть картинку Nlp что это такое в программировании. Картинка про Nlp что это такое в программировании. Фото Nlp что это такое в программировании Код на Python: Data cleaning

Предварительная обработка данных (Preprocessing of Data)

Preprocessing of Data это этап Data Mining, который включает в себя трансформацию исходных данных в доступный для понимания формат.

Изменение регистра:

Одна из простейших форм предварительной обработки текста — перевод всех символов текста в нижний регистр.

Nlp что это такое в программировании. Смотреть фото Nlp что это такое в программировании. Смотреть картинку Nlp что это такое в программировании. Картинка про Nlp что это такое в программировании. Фото Nlp что это такое в программировании Источник изображения

Nlp что это такое в программировании. Смотреть фото Nlp что это такое в программировании. Смотреть картинку Nlp что это такое в программировании. Картинка про Nlp что это такое в программировании. Фото Nlp что это такое в программировании Код на Python: перевод в нижний регистр

Токенизация:

Токенизация — процесс разбиения текстового документа на отдельные слова, которые называются токенами.

Nlp что это такое в программировании. Смотреть фото Nlp что это такое в программировании. Смотреть картинку Nlp что это такое в программировании. Картинка про Nlp что это такое в программировании. Фото Nlp что это такое в программировании Код на Python: Токенизация

Как можно видеть выше, предложение разбито на слова (токены).

Natural language toolkit (библиотека NLTK) — популярный открытый пакет библиотек, используемых для разного рода задач NLP. В этой статье мы будем использовать библиотеку NLTK для всех этапов Text Preprocessing.

Вы можете скачать библиотеку NLTK с помощью pip:

Удаление стоп-слов:

Стоп-слова — это часто используемые слова, которые не вносят никакой дополнительной информации в текст. Слова типа «the», «is», «a» не несут никакой ценности и только добавляют шум в данные.

В билиотеке NLTK есть встроенный список стоп-слов, который можно использовать, чтобы удалить стоп-слова из текста. Однако это не универсальный список стоп-слов для любой задачи, мы также можем создать свой собствпнный набор стоп-слов в зависимости от сферы.

Nlp что это такое в программировании. Смотреть фото Nlp что это такое в программировании. Смотреть картинку Nlp что это такое в программировании. Картинка про Nlp что это такое в программировании. Фото Nlp что это такое в программировании Код на Python: Удаление стоп-слов

В библиотеке NLTK есть заранее заданный список стоп-слов. Мы можем добавитьили удалить стоп-слова из этого списка или использовать его в зависимости от конкретной задачи.

Стеммизация:

Стеммизация — процесс приведения слова к его корню/основе.

Он приводит различные вариации слова (например, «help», «helping», «helped», «helpful») к его начальной форме (например, «help»), удаляет все придатки слов (приставка, суффикс, окончание) и оставляет только основу слова.

Nlp что это такое в программировании. Смотреть фото Nlp что это такое в программировании. Смотреть картинку Nlp что это такое в программировании. Картинка про Nlp что это такое в программировании. Фото Nlp что это такое в программировании Источник изображения

Nlp что это такое в программировании. Смотреть фото Nlp что это такое в программировании. Смотреть картинку Nlp что это такое в программировании. Картинка про Nlp что это такое в программировании. Фото Nlp что это такое в программировании Код на Python: Стеммизация

Корень слова может быть существующим в языке словом, а может и не быть им. Например, «mov» корень слова «movie», «emot» корень слова «emotion».

Лемматизация:

Лемматизация похожа на стеммизацию в том, что она приводит слово к его начальной форме, но с одним отличием: в данном случае корень слова будет существующим в языке словом. Например, слово «caring» прекратится в «care», а не «car», как в стеммизаци.

Nlp что это такое в программировании. Смотреть фото Nlp что это такое в программировании. Смотреть картинку Nlp что это такое в программировании. Картинка про Nlp что это такое в программировании. Фото Nlp что это такое в программировании Код на Python: Лемматизация

WordNet — это база существующих в английском языке слов. Лемматизатор из NLTK WordNetLemmatizer() использует слова из WordNet.

N-граммы:

Nlp что это такое в программировании. Смотреть фото Nlp что это такое в программировании. Смотреть картинку Nlp что это такое в программировании. Картинка про Nlp что это такое в программировании. Фото Nlp что это такое в программировании Источник изображения

N-граммы — это комбинации из нескольких слов, использующихся вместе, N-граммы, где N=1 называются униграммами (unigrams). Подобным же образом, биграммы (N=2), триграммы (N=3) и дальше можно продолдать аналогичным способом.

N-граммы могут использоваться, когда нам нужно сохранить какую-то последовательность данных, например, какое слово чаще следует за заданным словом. Униграммы не содержат никкой последовательности данных, так как каждое слово берется индивидуально.

Векторизация текстовых данных (Text Data Vectorization):

Процесс конвертации текста в числа называется векторизацией. Теперь после Text Preprocessing, нам нужно представить текст в числовом виде, то есть закодировать текстовые данные в виде чисел, которые в дальнейшем могут использоваться в алгоритмах.

«Мешок слов» (Bag of words (BOW)):

Это одна из самых простых методик векторизации текста. В логике BOW два предложения могут называться одинаковыми, если содержат один и тот же набор слов.

Рассмотрим два предложения:

Nlp что это такое в программировании. Смотреть фото Nlp что это такое в программировании. Смотреть картинку Nlp что это такое в программировании. Картинка про Nlp что это такое в программировании. Фото Nlp что это такое в программировании Источник изображения

В задачах NLP, каждое текстовое предложение называется документом, а несколько таких документов называют корпусом текстов.

BOW создает словарь уникальных d слов в корпусе (собрание всех токенов в данных). Например, корпус на изображении выше состоит из всех слов предложений S1 и S2.

Теперь мы можем создать таблицу, где столбцы соответствуют входящим в корпус уникальным d словам, а строки предложениям (документам). Мы устанавливаем значение 1, если слово в предложении есть, и 0, если его там нет.

Nlp что это такое в программировании. Смотреть фото Nlp что это такое в программировании. Смотреть картинку Nlp что это такое в программировании. Картинка про Nlp что это такое в программировании. Фото Nlp что это такое в программировании Источник изображения

Это позволит создать dxn матрицу, где d это общее число уникальных токенов в корпусе и n равно числу документов. В примере выше матрица будет иметь форму 11×2.

TF-IDF:

Nlp что это такое в программировании. Смотреть фото Nlp что это такое в программировании. Смотреть картинку Nlp что это такое в программировании. Картинка про Nlp что это такое в программировании. Фото Nlp что это такое в программировании Источник изображения

Это расшифровывается как Term Frequency (TF)-Inverse Document Frequency (IDF).

Частота слова (Term Frequency):

Term Frequency высчитывает вероятность найти какое-то слово в документе. Ну, например, мы хотим узнать, какова вероятрность найти слово wi в документе dj.

Term Frequency (wi, dj) =

Количество раз, которое wi встречается в dj / Общее число слов в dj

Обратная частота документа (Inverse Document Frequency):

В логике IDF, если слово встречается во всех документах, оно не очень полезно. Так определяется, насколько уникально слово во всем корпусе.

Здесь Dc = Все документы в корпусе,

N = Общее число документов,

ni = документы, которые содержат слово (wi).

Если wi встречается в корпусе часто, значение IDF снижается.

Если wi используется не часто, то ni снижается и вследствие этого значение IDF возрастает.

TF-IDF — умножение значений TF и IDF. Больший вес получат слова, которые встречаются в документе чаще, чем во всем остальном корпусе.

Sentiment Analysis: Обзоры фильмов на IMDb

Nlp что это такое в программировании. Смотреть фото Nlp что это такое в программировании. Смотреть картинку Nlp что это такое в программировании. Картинка про Nlp что это такое в программировании. Фото Nlp что это такое в программировании Источник изображения

Краткая информация

Набор данных содержит коллекцию из 50 000 рецензий на сайте IMDb, с равным количеством положительных и отрицательных рецензий. Задача — предсказать полярность (положительную или отрицательную) данных отзывов (тексты).

1. Загрузка и исследование данных

Набор данных IMDB можно скачать здесь.

Обзор набора данных:

Nlp что это такое в программировании. Смотреть фото Nlp что это такое в программировании. Смотреть картинку Nlp что это такое в программировании. Картинка про Nlp что это такое в программировании. Фото Nlp что это такое в программированииПоложительные рецензии отмечены 1, а отрицательные 0.

Пример положительной рецензии:

Nlp что это такое в программировании. Смотреть фото Nlp что это такое в программировании. Смотреть картинку Nlp что это такое в программировании. Картинка про Nlp что это такое в программировании. Фото Nlp что это такое в программировании

Пример отрицательной рецензии:

Nlp что это такое в программировании. Смотреть фото Nlp что это такое в программировании. Смотреть картинку Nlp что это такое в программировании. Картинка про Nlp что это такое в программировании. Фото Nlp что это такое в программировании

2. Data Preprocessing

Nlp что это такое в программировании. Смотреть фото Nlp что это такое в программировании. Смотреть картинку Nlp что это такое в программировании. Картинка про Nlp что это такое в программировании. Фото Nlp что это такое в программированииНа этом этапе мы совершаем все шаги очистки и предварительной обработки данных тем методом, который был описан выше. Мы используем лемматизацию, а не стеммизацию, потому что в процессе тестирования результатов обоих случаев лемматизация дает лучшие результаты, чем стеммизация.

Использовать ли стеммизацию или лемматизацию или и то, и другое — зависит от поставленной задачи, так что нам стоит попробовать и решить, какой способ сработает лучше для данной задачи.

Nlp что это такое в программировании. Смотреть фото Nlp что это такое в программировании. Смотреть картинку Nlp что это такое в программировании. Картинка про Nlp что это такое в программировании. Фото Nlp что это такое в программировании

Добавляем новую колонку preprocessed_review в dataframe, применяя data_preprocessing() ко всем рецензиям.

3. Vectorizing Text (рецензии)

Разделяем набор данных на train и test (70–30):

Nlp что это такое в программировании. Смотреть фото Nlp что это такое в программировании. Смотреть картинку Nlp что это такое в программировании. Картинка про Nlp что это такое в программировании. Фото Nlp что это такое в программировании

Используем train_test_split из sklearn, чтобы разделить данные на train и test. Здесь используем параметр stratify,чтобы иметь равную пропорцию классов в train и test.

BOW

Nlp что это такое в программировании. Смотреть фото Nlp что это такое в программировании. Смотреть картинку Nlp что это такое в программировании. Картинка про Nlp что это такое в программировании. Фото Nlp что это такое в программировании

Здесь мы использовали min_df=10, так как нам нужны были только те слова, которые появляются как минимум 10 раз во всем корпусе.

TF-IDF

Nlp что это такое в программировании. Смотреть фото Nlp что это такое в программировании. Смотреть картинку Nlp что это такое в программировании. Картинка про Nlp что это такое в программировании. Фото Nlp что это такое в программировании

4. Создание классификаторов ML

Наивный байесовский классификатор (Naive Bayes) с рецензиями, закодированными BOW

Nlp что это такое в программировании. Смотреть фото Nlp что это такое в программировании. Смотреть картинку Nlp что это такое в программировании. Картинка про Nlp что это такое в программировании. Фото Nlp что это такое в программировании

Naive Bayes c BOW выдает точность 84.6%. Попробуем с TF-IDF.

Наивный байесовский классификатор (Naive Bayes) с рецензиями, закодированными TF-IDF

Nlp что это такое в программировании. Смотреть фото Nlp что это такое в программировании. Смотреть картинку Nlp что это такое в программировании. Картинка про Nlp что это такое в программировании. Фото Nlp что это такое в программировании

TF-IDF выдает результат немного лучше (85.3%), чем BOW. Теперь давайте попробуем TF-IDF с простой линеарной моделью, Logistic Regression.

Logistic Regression с рецензиями, закодированными TF-IDF

Nlp что это такое в программировании. Смотреть фото Nlp что это такое в программировании. Смотреть картинку Nlp что это такое в программировании. Картинка про Nlp что это такое в программировании. Фото Nlp что это такое в программировании

Logistic Regression с рецензиями, закодированными TF-IDF, выдает результат лучше, чем наивный байемовский — точность 88.0%.

Nlp что это такое в программировании. Смотреть фото Nlp что это такое в программировании. Смотреть картинку Nlp что это такое в программировании. Картинка про Nlp что это такое в программировании. Фото Nlp что это такое в программированииПостроение матрицы неточностей даст нам информацию о том, сколько точек данных верны и сколько неверны, классифицированную с помощью модели.

Из 7500 отрицательных рецензий 6515 были верно классифицированы как отрицательные и 985 были неверно классифицированы как положительные. Из 7500 положительных рацензий 6696 были верно классифицированы как положительные, и 804 неверно классифицированы как отрицательные.

Итоги

Мы узнали основные задачи NLP и создали простые модели ML для сентимент-анализа рецензий на фильмы. В дальнейшем усоверешенствований можно добиться с помощью Word Embedding с моделями Deep Learning.

Благодарю за внимание! Полный код смотрите здесь.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *