Что такое nlp в искусственном интеллекте
Плавное введение в Natural Language Processing (NLP)
Введение в NLP с Sentiment Analysis в текстовых данных.
Люди общаются с помощью каких-либо форм языка и пользуются либо текстом, либо речью. Сейчас для взаимодействия компьютеров с людьми, компьютерам необходимо понимать естественный язык, на котором говорят люди. Natural language processing занимается как раз тем, чтобы научить компьютеры понимать, обрабатывать и пользоваться естественными языками.
В этой статье мы рассмотрим некоторые частые методики, применяющиеся в задачах NLP. И создадим простую модель сентимент-анализа на примере обзоров на фильмы, чтобы предсказать положительную или отрицательную оценку.
Что такое Natural Language Processing (NLP)?
NLP — одно из направлений искуственного интеллекта, которое работает с анализом, пониманем и генерацией живых языков, для того, чтобы взаимодействовать с компьютерами и устно, и письменно, используя естественные языки вместо компьютерных.
Применение NLP
Очистка данных (Data Cleaning):
При Data Cleaning мы удаляем из исходных данных особые знаки, символы, пунктуацию, тэги html <> и т.п., которые не содержат никакой полезной для модели информации и только добавляют шум в данные.
Код на Python: Data cleaning
Предварительная обработка данных (Preprocessing of Data)
Preprocessing of Data это этап Data Mining, который включает в себя трансформацию исходных данных в доступный для понимания формат.
Изменение регистра:
Одна из простейших форм предварительной обработки текста — перевод всех символов текста в нижний регистр.
Источник изображения
Код на Python: перевод в нижний регистр
Токенизация:
Токенизация — процесс разбиения текстового документа на отдельные слова, которые называются токенами.
Код на Python: Токенизация
Как можно видеть выше, предложение разбито на слова (токены).
Natural language toolkit (библиотека NLTK) — популярный открытый пакет библиотек, используемых для разного рода задач NLP. В этой статье мы будем использовать библиотеку NLTK для всех этапов Text Preprocessing.
Вы можете скачать библиотеку NLTK с помощью pip:
Удаление стоп-слов:
Стоп-слова — это часто используемые слова, которые не вносят никакой дополнительной информации в текст. Слова типа «the», «is», «a» не несут никакой ценности и только добавляют шум в данные.
В билиотеке NLTK есть встроенный список стоп-слов, который можно использовать, чтобы удалить стоп-слова из текста. Однако это не универсальный список стоп-слов для любой задачи, мы также можем создать свой собствпнный набор стоп-слов в зависимости от сферы.
Код на Python: Удаление стоп-слов
В библиотеке NLTK есть заранее заданный список стоп-слов. Мы можем добавитьили удалить стоп-слова из этого списка или использовать его в зависимости от конкретной задачи.
Стеммизация:
Стеммизация — процесс приведения слова к его корню/основе.
Он приводит различные вариации слова (например, «help», «helping», «helped», «helpful») к его начальной форме (например, «help»), удаляет все придатки слов (приставка, суффикс, окончание) и оставляет только основу слова.
Источник изображения
Код на Python: Стеммизация
Корень слова может быть существующим в языке словом, а может и не быть им. Например, «mov» корень слова «movie», «emot» корень слова «emotion».
Лемматизация:
Лемматизация похожа на стеммизацию в том, что она приводит слово к его начальной форме, но с одним отличием: в данном случае корень слова будет существующим в языке словом. Например, слово «caring» прекратится в «care», а не «car», как в стеммизаци.
Код на Python: Лемматизация
WordNet — это база существующих в английском языке слов. Лемматизатор из NLTK WordNetLemmatizer() использует слова из WordNet.
N-граммы:
Источник изображения
N-граммы — это комбинации из нескольких слов, использующихся вместе, N-граммы, где N=1 называются униграммами (unigrams). Подобным же образом, биграммы (N=2), триграммы (N=3) и дальше можно продолдать аналогичным способом.
N-граммы могут использоваться, когда нам нужно сохранить какую-то последовательность данных, например, какое слово чаще следует за заданным словом. Униграммы не содержат никкой последовательности данных, так как каждое слово берется индивидуально.
Векторизация текстовых данных (Text Data Vectorization):
Процесс конвертации текста в числа называется векторизацией. Теперь после Text Preprocessing, нам нужно представить текст в числовом виде, то есть закодировать текстовые данные в виде чисел, которые в дальнейшем могут использоваться в алгоритмах.
«Мешок слов» (Bag of words (BOW)):
Это одна из самых простых методик векторизации текста. В логике BOW два предложения могут называться одинаковыми, если содержат один и тот же набор слов.
Рассмотрим два предложения:
Источник изображения
В задачах NLP, каждое текстовое предложение называется документом, а несколько таких документов называют корпусом текстов.
BOW создает словарь уникальных d слов в корпусе (собрание всех токенов в данных). Например, корпус на изображении выше состоит из всех слов предложений S1 и S2.
Теперь мы можем создать таблицу, где столбцы соответствуют входящим в корпус уникальным d словам, а строки предложениям (документам). Мы устанавливаем значение 1, если слово в предложении есть, и 0, если его там нет.
Источник изображения
Это позволит создать dxn матрицу, где d это общее число уникальных токенов в корпусе и n равно числу документов. В примере выше матрица будет иметь форму 11×2.
TF-IDF:
Источник изображения
Это расшифровывается как 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
Источник изображения
Краткая информация
Набор данных содержит коллекцию из 50 000 рецензий на сайте IMDb, с равным количеством положительных и отрицательных рецензий. Задача — предсказать полярность (положительную или отрицательную) данных отзывов (тексты).
1. Загрузка и исследование данных
Набор данных IMDB можно скачать здесь.
Обзор набора данных:
Положительные рецензии отмечены 1, а отрицательные 0.
Пример положительной рецензии:
Пример отрицательной рецензии:
2. Data Preprocessing
На этом этапе мы совершаем все шаги очистки и предварительной обработки данных тем методом, который был описан выше. Мы используем лемматизацию, а не стеммизацию, потому что в процессе тестирования результатов обоих случаев лемматизация дает лучшие результаты, чем стеммизация.
Использовать ли стеммизацию или лемматизацию или и то, и другое — зависит от поставленной задачи, так что нам стоит попробовать и решить, какой способ сработает лучше для данной задачи.
Добавляем новую колонку preprocessed_review в dataframe, применяя data_preprocessing() ко всем рецензиям.
3. Vectorizing Text (рецензии)
Разделяем набор данных на train и test (70–30):
Используем train_test_split из sklearn, чтобы разделить данные на train и test. Здесь используем параметр stratify,чтобы иметь равную пропорцию классов в train и test.
BOW
Здесь мы использовали min_df=10, так как нам нужны были только те слова, которые появляются как минимум 10 раз во всем корпусе.
TF-IDF
4. Создание классификаторов ML
Наивный байесовский классификатор (Naive Bayes) с рецензиями, закодированными BOW
Naive Bayes c BOW выдает точность 84.6%. Попробуем с TF-IDF.
Наивный байесовский классификатор (Naive Bayes) с рецензиями, закодированными TF-IDF
TF-IDF выдает результат немного лучше (85.3%), чем BOW. Теперь давайте попробуем TF-IDF с простой линеарной моделью, Logistic Regression.
Logistic Regression с рецензиями, закодированными TF-IDF
Logistic Regression с рецензиями, закодированными TF-IDF, выдает результат лучше, чем наивный байемовский — точность 88.0%.
Построение матрицы неточностей даст нам информацию о том, сколько точек данных верны и сколько неверны, классифицированную с помощью модели.
Из 7500 отрицательных рецензий 6515 были верно классифицированы как отрицательные и 985 были неверно классифицированы как положительные. Из 7500 положительных рацензий 6696 были верно классифицированы как положительные, и 804 неверно классифицированы как отрицательные.
Итоги
Мы узнали основные задачи NLP и создали простые модели ML для сентимент-анализа рецензий на фильмы. В дальнейшем усоверешенствований можно добиться с помощью Word Embedding с моделями Deep Learning.
Благодарю за внимание! Полный код смотрите здесь.
NLP для людей. Часть 1
NLP (Natural Language Processing) — направление области искусственного интеллекта, которое занимается обработкой естественного, в том числе неструктурированного языка. NLP состоит в применении методов машинного обучения для анализа текста и речи.
Возможности NLP
Для NLP можно использовать любые наборы текстовых документов. В зависимости от поставленной задачи их источник может быть самым разным: например, массив новостных сообщений СМИ по определенной тематике (а-ля «коронавирус, 2020»), список комментариев популярного ролика YouTube или записанное тематическое интервью эксперта.
Применяя методы 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-грамм.
Метод тематического моделирования применяется в задачах корпусного уровня, например, для информационного поиска или автоматической разметки текстов по темам.