Natural language processing что это
Перейти к содержимому

Natural language processing что это

  • автор:

Natural language processing что это

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

Освойте профессию «Data Scientist»

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

Процесс машинного понимания с применением алгоритмов обработки естественного языка может выглядеть так:

  1. Речь человека записывается аудио-устройством.
  2. Машина преобразует слова из аудио в письменный текст.
  3. Система NLP разбирает текст на составляющие, понимает контекст беседы и цели человека.
  4. С учетом результатов работы NLP машина определяет команду, которая должна быть выполнена.

Дата-сайентисты решают поистине амбициозные задачи. Научитесь создавать искусственный интеллект, обучать нейронные сети, менять мир и при этом хорошо зарабатывать. Программа рассчитана на новичков и плавно введет вас в Data Science.

Group 1321314349 (1)

Кто использует NLP

Приложения NLP окружают нас повсюду. Это поиск в Google или Яндексе, машинный перевод, чат-боты, виртуальные ассистенты вроде Siri, Алисы, Салюта от Сбера и пр. NLP применяется в digital-рекламе, сфере безопасности и многих других.

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

Как устроена обработка языков

Раньше алгоритмам прописывали набор реакций на определенные слова и фразы, а для поиска использовалось сравнение. Это не распознавание и понимание текста, а реагирование на введенный набор символов. Такой алгоритм не смог бы увидеть разницы между столовой ложкой и школьной столовой.

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

Курс для новичков «IT-специалист
с нуля» – разберемся, какая профессия вам подходит, и поможем вам ее освоить

Задачи NLP

Распознавание речи. Этим занимаются голосовые помощники приложений и операционных систем, «умные» колонки и другие подобные устройства. Также распознавание речи используется в чат-ботах, сервисах автоматического заказа, при автоматической генерации субтитров для видеороликов, голосовом вводе, управлении «умным» домом. Компьютер распознает, что сказал ему человек, и выполняет в соответствии с этим нужные действия.

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

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

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

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

Станьте аналитиком данных и получите востребованную специальность

Генерация текста и речи. Противоположная распознаванию задача — генерация, или синтез. Алгоритм должен отреагировать на текст или речь пользователя. Это может быть ответ на вопрос, полезная информация или забавная фраза, но реплика должна быть по заданной теме. В системах распознавания речи предложения разбиваются на части. Далее, чтобы произнести определенную фразу, компьютер сохраняет их, преобразовывает и воспроизводит. Конечно, на границах «сшивки» могут возникать искажения, из-за чего голос часто звучит неестественно.

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

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

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

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

Как обрабатывается текст

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

Очистка. Из текста удаляются бесполезные для машины данные. Это большинство знаков пунктуации, особые символы, скобки, теги и пр. Некоторые символы могут быть значимыми в конкретных случаях. Например, в тексте про экономику знаки валют несут смысл.

Препроцессинг. Дальше наступает большой этап предварительной обработки — препроцессинга. Это приведение информации к виду, в котором она более понятна алгоритму. Популярные методы препроцессинга:

  • приведение символов к одному регистру, чтобы все слова были написаны с маленькой буквы;
  • токенизация — разбиение текста на токены. Так называют отдельные компоненты — слова, предложения или фразы;
  • тегирование частей речи — определение частей речи в каждом предложении для применения грамматических правил;
  • лемматизация и стемминг — приведение слов к единой форме. Стемминг более грубый, он обрезает суффиксы и оставляет корни. Лемматизация — приведение слов к изначальным словоформам, часто с учетом контекста;
  • удаление стоп-слов — артиклей, междометий и пр.;
  • спелл-чекинг — автокоррекция слов, которые написаны неправильно.

Методы выбирают согласно задаче.

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

Популярные варианты векторизации — «мешок слов» и «мешок N-грамм». В «мешке слов» слова кодируются в цифры. Учитывается только количество слова в тексте, а не их расположение и контекст. N-граммы — это группы из N слов. Алгоритм наполняет «мешок» не отдельными словами с их частотой, а группами по несколько слов, и это помогает определить контекст.

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

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

Аналитики влияют на рост бизнеса. Они выясняют, какой товар и в какое время больше покупают. Считают юнит-экономику. Оценивают окупаемость рекламной кампании. Поэтому компании ищут и переманивают таких специалистов.

Ваш путеводитель по миру NLP (обработке естественного языка)

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

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

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

Обработка естественного языка или NLP (Natural Language Processing) — это область искусственного интеллекта, которая фокусируется на возможности машин читать, понимать и извлекать смысл из человеческих языков.

Это дисциплина, которая нацелена на разработку и применение современных подходов из data science к человеческому языку и находит свое практическое применение во все большем количестве различных отраслей. И действительно, сегодня NLP переживает настоящий бум. Мы должны быть благодарны за это значительным улучшениям в доступе к данным и увеличению вычислительной мощности, которые позволяют специалистам в этой области достигать вполне осязаемых результатов в таких областях, как здравоохранение, СМИ, финансы и управление кадрами, не говоря о великом множестве других применений.

Примеры использования NLP

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

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

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

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

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

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

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

Alexa от Amazon и Siri от Apple являются яркими примерами интеллектуальных голосовых интерфейсов. Они используют NLP, чтобы реагировать на голосовые команды и выполнять на их основе целый ряд задач, например, находить конкретный магазин, сообщать нам прогноз погоды, предлагать лучший маршрут до офиса или включать свет дома.

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

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

Компания LegalMation разработала платформу для автоматизации рутинных судебных задач на основе технологии NLP IBM Watson, которая помогает юридическим отделам экономить время, сокращать расходы и сдвигать с этого свой стратегический фокус.

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

Количество публикаций, содержащих предложение “natural language processing” в PubMed за период 1978–2018 гг. По состоянию на 2018 год в PubMed содержится более 29 миллионов ссылок на биомедицинскую литературу.

Количество публикаций, содержащих предложение “natural language processing” в PubMed за период 1978–2018 гг. По состоянию на 2018 год в PubMed содержится более 29 миллионов ссылок на биомедицинскую литературу.

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

Тем не менее, вокруг этой темы идут все еще идут серьезные споры. Пару лет назад Microsoft продемонстрировала, что, анализируя большие выборки поисковых запросов, они могли идентифицировать интернет-пользователей, страдающих раком поджелудочной железы, еще до того, как им был поставлен диагноз этого заболевания. Но как пользователи отреагируют на такой диагноз? И что произойдет, если ваш тест окажется ложноположительным? (то есть, что у вас может быть диагностировано заболевание, а в реальности у вас его нет). Это напоминает случай с Google Flu Trends, который в 2009 году был объявлен как способный предсказывать вспышки гриппа, но позже исчез из-за его низкой точности и несоответствия прогнозируемым показателям.

NLP может стать ключом к эффективной клинической поддержке в будущем, но перед тем, как это станет реальностью, предстоит решить еще не одну проблему.

Основы NLP (знанием которых вы сможете пощеголять перед вашими не сведущими в NLP друзьями)

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

“Мешок слов” (Bag of Words)

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

В качестве простого примера я взял первое предложение из песни “Across the Universe” от The Beatles:

Words are flowing out like endless rain into a paper cup,

They slither while they pass, they slip away across the universe

Теперь давайте подсчитаем слова:

Этот подход имеет несколько недостатков, таких как отсутствие семантического значения и контекста, а также то, что игнорируемые в иных методах слова (например, “the” или “a”) добавляют нежелательный шум в анализ, и некоторые слова имеют не совсем адекватные веса (вес слова “universe” меньше веса слова “they”).

Один из подходов, нацеленных сгладить эту проблему, состоит в том, чтобы перемасштабировать частоту слов по частоте их появления во всех текстах (а не только в том, который мы в данный момент анализируем), чтобы веса часто встречающихся слов, таких как “the”, также часто встречаются и в других текстах, получали определенный штраф. Этот подход к подсчету весов, который улучшает мешок слов, называется “Частота терминов — обратная частота документа” (“Term Frequency — Inverse Document Frequency” или TFIDF). С помощью TFIDF слова, которые часто встречаются в тексте, “вознаграждаются” (например, слово “they” в нашем примере), но они также “штрафуются” на основе того, насколько часто они встречаются в других текстах, которые мы также учитываем в алгоритме. И наоборот, этот метод выделяет и “вознаграждает” уникальные или редкие, с учетом всех текстов, слова. Тем не менее, этот подход по-прежнему не имеет ни контекста, ни семантики.

Токенизация (Tokenization)

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

Довольно просто, не так ли? Что ж, хотя в этом случае, а также в таких языках, как английский, которые разделяют слова пробелом (так называемые сегментированные языки), этот процесс может показаться довольно простым. Но не все языки устроены одинаково, и если вдуматься, одних только пробелов недостаточно, чтобы выполнить правильную токенизацию даже для английского языка. Разбиение на пробелы может привести к тому, что то, что следует рассматривать как один токен, может быть разбито на два, как в случае с некоторыми именами собственными (например, Сан-Франциско или Нью-Йорк) или заимствованными иностранными фразами (например, laissez faire).

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

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

Более подробный разбор токенизации вы можете найти в этой отличной статье.

Удаление шумовых слов (Stop Words Removal)

включает избавление от общеупотребительных артиклей, местоимений и предлогов, таких как “and”, “the” или “to” в английском языке. В этом процессе некоторые очень распространенные слова, которые очевидно не представляют большой ценности для целей NLP, фильтруются и исключаются из обрабатываемого текста. Таким образом удаляются широко распространенные и часто встречающиеся слова, которые не несут информации о тексте.

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

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

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

Стемминг (Stemming)

— это процесс обрезания конца или начала слов с целью удаления аффиксов (лексических дополнений к корню слова).

Аффиксы, которые присоединяются к началу слова, называются префиксами (например, “astro” в слове “astrobiology”), а те, которые присоединяются к концу слова, называются суффиксами (например, “ful” в слове “helpful”).

Проблема в том, что аффиксы могут создавать или расширять новые формы одного и того же слова (так называемые формообразующие аффиксы) или даже сами создавать новые слова (так называемые словообразовательные аффиксы). В английском языке префиксы всегда являются словообразовательными (аффикс создает новое слово, как в примере с префиксом “eco” в слове “ecosystem”), а вот суффиксы могут быть словообразовательными (суффикс “ist” в слове “guitarist”) или формообразующими (аффикс образует новую форму слова, как в примере с суффиксом “er” в слове “faster”).

Так как нам определить разницу и отрезать то, что нужно?

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

Итак, если стемминг имеет серьезные ограничения, почему мы его используем? Прежде всего, его можно использовать для исправления орфографических ошибок в токенах. Стеммеры просты в использовании и работают очень быстро (они выполняют простые строковые операции), и если скорость и производительность имеют значение для вашей NLP-модели, то стеммеры, безусловно, являются хорошим выбором. Помните, мы используем их с целью улучшения нашей работы, а не в качестве упражнения по грамматике.

Лемматизация (Lemmatization)

призвана привести слово к его базовой форме и сгруппировать разные формы одного и того же слова. Например, глаголы в прошедшем времени заменяются на настоящее (например, “went” заменяется на “go”), а синонимы унифицируются (например, “best” заменяется на “good”), тем самым стандартизируя слова со значением, аналогичным их корню. Хотя лемматизация кажется тесно связанной с процессом стемминга, она использует другой подход для получения корневых форм слов.

Лемматизация преобразует слова в их словарную форму (известную как “лемма”), для чего требуются подробные словари, которые алгоритм может просматривать и связывать слова с соответствующими им леммами.

Например, слова “running”, “runs” и “ran” являются формами слова “run”, поэтому “run” — это лемма всех предыдущих слов.

Лемматизация также принимает во внимание контекст слова для решения других проблем, таких как устранение неоднозначности, что означает, что она может различать идентичные слова, которые имеют разные значения в зависимости от конкретного контекста. Вспомните такие слова, как “bat” (которое может соответствовать животному или металлической/деревянной бите, используемой в бейсболе) или “bank” (соответствующее финансовому учреждению или участку земли рядом с водоемом). Предоставляя параметр части речи слову (будь то существительное, глагол и т. д.), можно определить роль этого слова в предложении и устранить неоднозначность.

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

Тематическое моделирование (Topic Modeling)

– это метод выявления скрытых структур в наборах текстов или документов. По сути, он группирует тексты для обнаружения скрытых тем на основе их содержания, обрабатывая отдельные слова и присваивая им значения на основе их распределения. Этот метод основан на предположении, что каждый документ состоит из комбинации тем и что каждая тема (topic) состоит из набора слов, а это означает, что если мы сможем обнаружить эти скрытые темы, мы сможем раскрыть смысл наших текстов.

Из всего множества методов тематического моделирования Латентное/Скрытое размещение Дирихле (Latent Dirichlet Allocation или LDA), вероятно, является наиболее часто используемым. Этот относительно новый алгоритм (придуманный менее 20 лет назад) работает как метод обучения без учителя, который обнаруживает различные темы, лежащие в основе набора документов. В методах обучения без учителя, подобных этому, нет выходной переменной, которая бы направляла процесс обучения — данные исследуются алгоритмами для поиска закономерностей. Если быть более конкретным, LDA находит группы связанных слов следующим образом:

Присваивая каждое слово случайной теме, где пользователь определяет количество тем, которые он хочет раскрыть. Вы не определяете сами темы (вы определяете только количество тем), и алгоритм сопоставляет все документы с темами таким образом, что слова в каждом документе в основном захватываются этими мнимыми темами.

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

В отличие от других алгоритмов кластеризации, таких как метод K-средних, которые выполняют жесткую кластеризацию (где темы не пересекаются), LDA присваивает каждому документу комбинацию тем, что означает, что каждый документ может быть описан одной или несколькими темами (например, Документ 1 описывается 70% темы A, 20% темы B и 10% темы C) и отражают более реалистичные результаты.

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

Что можно сказать о будущем NLP?

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

В марте 2016 года Microsoft запустила Tay, чат-бота на основе искусственного интеллекта, в качестве эксперимента выпущенного на просторы Твиттера. Идея заключалась в том, что чем больше пользователей будет общаться с Tay’ем, тем умнее он будет становиться. Что ж, в результате через 16 часов Tay’а пришлось удалить из-за его расистских и оскорбительных комментариев:

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

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

Что такое обработка текстов на естественном языке (NLP)?

Определение обработки текстов на естественном языке (NLP)

Обработка текстов на естественном языке (NLP) — это одно из направлений использования искусственного интеллекта (ИИ), которое позволяет компьютерам понимать, порождать и обрабатывать тексты на естественных языках. Обработка текстов на естественном языке позволяет использовать для запросов к данным тексты или устные высказывания на естественном языке. Этот подход также называют «язык на входе». Многие потребители наверняка пользовались NLP, сами того не осознавая. Например, NLP — это основная технология, на которой основана работа виртуальных помощников, таких как Oracle Digital Assistant (ODA), Siri, Cortana или Alexa. Когда мы задаем вопросы таким помощникам, именно NLP позволяет им не только понимать запрос, но и отвечать на него на естественном языке. NLP применяется как к письменным текстам, так и к устной речи, и может работать со всеми естественными языками на земле. Среди других примеров инструментов, основанных на NLP, можно назвать веб-поиск, фильтрацию спама в электронной почте, автоматический перевод текстов и речи, аннотирование документов, анализ тональности текста и проверку грамматики и орфографии. Например, программа электронной почты может автоматически предлагать подходящий вариант ответа на основе содержания полученного письма. Такие программы используют NLP для чтения, анализа и подготовки ответа на письмо.

Есть еще несколько терминов, которые примерно синонимичны понятию NLP. Понимание естественного языка (NLU) и порождение естественного языка (NLG) означают использование компьютеров для понимания и порождения человеческих языков. NLG позволяет создавать словесные описания того, что произошло. Этот подход также называют «язык на выходе»: значимая информация обобщается и подается в виде текста благодаря использованию понятия «грамматика графики».

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

Исследования в сфере NLP начались вскоре после создания компьютеров в 1950-х годах. NLP использует достижения лингвистики и искусственного интеллекта. Однако большинство достижений последних лет основаны на использовании машинного обучения, которое является одним из направлений ИИ и позволяет создавать обучающиеся и строящие обобщения на основе данных системы.Глубокое обучение — это разновидность машинного обучения, которая может осваивать довольно сложные модели на основе больших объемов данных. Это значит, что глубинное обучение идеально подходит для изучения сложностей естественного языка на основе наборов данных, полученных из Интернета.

Применение обработки текстов на естественном языке

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

Улучшенный поиск. В случае поиска по документам и часто задаваемым вопросам NLP может усовершенствовать поиск по ключевым словам за счет снятия неоднозначности слов на основе контекста (например, слово «носитель» имеет разное значение в медицине и промышленности), сопоставления синонимов (например, отбирать документы, содержащие слово «машина», если в поиске введено слово «автомобиль») и учета морфологических вариантов (что важно для запросов на языках, отличных от английского). Эффективный поиск по научным данным, основанный на технологиях NLP, может значительно упростить доступ к новейшим исследованиям для врачей, юристов и других специалистов.

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

Анализ и упорядочивание больших коллекций документов. Методы NLP, такие, как кластеризация документов и тематическое моделирование, упрощают задачу понимания разнообразных материалов в больших коллекциях документов, таких как отчеты компании, новые статьи или научные документы. Эти методы часто применяются для раскрытия информации по запросу.

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

Анализ рынка. Если использовать NLP для анализа языка клиентов компании, можно лучше понять, что они хотят и как с ними взаимодействовать. Аспектно-ориентированный анализ тональности текста определяет тональность высказываний, связанных с определенными аспектами или продуктами, в социальных сетях (например: «клавиатура отличная, а экран слишком тусклый») и предоставляет информацию, на основе которой можно сразу вносить изменения в дизайн продуктов или рекламные кампании.

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

Отрасли, использующие обработку текстов на естественном языке

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

  • Здравоохранение. Системы здравоохранения по всему миру переходят к использованию электронных медицинских записей и сталкиваются с необходимостью обрабатывать огромные объемы неструктурированных данных. Для анализа медицинских записей и получения статистических данных можно использовать NLP.
  • Юриспруденция. Чтобы подготовиться к суду, юристам порой приходится часами разбирать документы в поисках материалов, относящихся к делу. Технология NLP может автоматизировать процедуру раскрытия информации по запросу, отфильтровывая многочисленные документы, что позволит сэкономить время и избежать ошибок, обусловленных человеческим фактором.
  • Финансы. Финансовая сфера развивается очень быстро, поэтому крайне важно иметь конкурентное преимущество. Трейдеры используют технологию NLP для автоматического поиска информации в корпоративных документах и новых публикациях, чтобы получить именно те данные, которые актуальны для их портфолио или для принятия решений о покупке или продаже.
  • Обслуживание клиентов. Многие крупные компании используют виртуальных помощников или чат-боты, чтобы они отвечали на простые вопросы клиентов (такие, как часто задаваемые вопросы) или перенаправляли клиентов к специалистам в случае сложных вопросов.
  • Страхование. Крупные страховые компании используют NLP, чтобы отфильтровывать документы и отчеты по страховым искам и таким образом оптимизировать работу.

Обзор технологий NLP

Модели машинного обучения для NLP. Как мы уже говорили, современные технологии NLP в значительной степени основаны на одном из направлений ИИ, которое называется машинное обучение. Машинное обучение строит прогнозы на основе обобщения примеров из набора данных. Этот набор данных называется обучающей выборкой, и алгоритмы машинного обучения учатся на этих данных, чтобы создать модель машинного обучения, которая выполнит поставленную задачу.

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

Другой вид модели используется для распознавания и классификации объектов в документах. Для каждого слова в документе модель предсказывает, относится ли оно к одному из указанных типов объектов, и если да, то к какому. Например, в предложении «Акции корпорации XYZ продавались вчера по 28 долларов» слова «корпорация XYZ» — это компания, «28 долларов» — сумма в валюте, а «вчера» — дата. Обучающей выборкой для распознавания объектов является коллекция текстов, в которых каждое слово имеет метку, указывающую тип объекта. Такая модель, которая на выходе возвращает метку для каждого слова, называется моделью маркировки последовательности.

Модели «последовательность-в-последовательность» сравнительно недавно пополнили семейство моделей, которые используются в NLP. Модель «последовательность-в-последовательность» (sequence to sequence или seq2seq) принимает на входе целое предложение или документ (так же, как классификатор документов), но на выходе возвращает предложение или другую последовательность (например. компьютерную программу). (Классификатор документов возвращает на выходе один символ.) Среди примеров использования моделей seq2seq можно назвать машинный перевод, который получает на входе, например, предложение на английском, а возвращает на выходе предложение на французском языке; аннотирование документов (когда на выходе возвращается краткая аннотация поступившего на вход текста) и семантический анализ (когда на входе поступает запрос на английском языке, а на выходе возвращается компьютерная программа, реализующая этот запрос).

Глубокое обучение, предварительно обученные модели и обучение с переносом. Глубокое обучение — это самый распространенный вид машинного обучения в NLP. В 1980-х годах исследователи создали нейронные сети, в которых множество примитивных моделей машинного обучения объединяются в одну общую сеть. По аналогии с человеческим мозгом такие простые модели машинного обучения иногда называют нейронами. Эти нейроны распределяются по уровням, и глубокая нейронная сеть — это сеть с большим количеством уровней. Глубокое обучение — это машинное обучение, которое использует модели глубокой нейронной сети.

Из-за высокой сложности глубоких нейронных сетей для их обучения обычно требуются большие объемы данных, значительные вычислительные мощности и много времени. Современные модели глубоких нейронных сетей в NLP обучаются на массиве разнообразных источников, таких как Википедия и данные, отобранные из Интернета. Объем обучающей выборки может составлять 10 ГБ или больше, и высокопроизводительному вычислительному кластеру может потребоваться не менее недели, чтобы обучить глубокую нейронную сеть. (Исследователи считают, что обучение еще более глубоких моделей на еще больших объемах данных обеспечивает более высокую производительность, поэтому сейчас все стараются обучать огромные модели на все больших наборах данных.)

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

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

Пример методов предварительной обработки в NLP

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

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

Удаление стоп-слов. Стоп-слово — это токен, который не учитывается при дальнейшей обработке. Обычно это короткие, часто встречающиеся слова, такие как «и», «а» или «в». Мешки слов и поисковые системы часто игнорируют стоп-слова, чтобы сократить время обработки и объем хранилища в базе данных. Глубокие нейронные сети обычно учитывают порядок слов (то есть они не являются мешками слов) и не удаляют стоп-слова, потому что они могут передавать тонкие оттенки значений (например, выражения «смотреть в окно» и «смотреть на окно» различаются по значению, но после удаления стоп-слов они будут выглядеть одинаково).

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

Частеречная разметка и синтаксический анализ. Частеречная разметка (PoS-тегирование) маркирует каждое слово, указывая его часть речи (например, существительное, глагол, прилагательное и т. д.). Синтаксический анализ определяет, как слова объединяются в словосочетания, простые и сложные предложения. Частеречная разметка — это задача по маркировке последовательности, синтаксический анализ — это усложненная разновидность задачи по маркировке последовательности, а глубокие нейросети — это новейшая технология, способная решать как задачи частеречной разметки, так и задачи синтаксического анализа. До появления глубокого обучения частеречная разметка и синтаксический анализ были важными этапами для понимания предложения. Однако для современных моделей глубокого обучения в NLP частеречная разметка и синтаксическая информация не дают особых преимуществ, поэтому эти задачи редко используют в рамках глубокого обучения для NLP.

Языки программирования для NLP

Python

В языке программирования Python предусмотрены библиотеки и наборы инструментов для NLP, поэтому на данный момент большинство проектов по NLP разрабатываются именно на языке Python. Интерактивная среда разработки Python упрощает разработку и тестирование новых программ.

Java и C++

Для обработки больших объемов данных часто предпочитают языки программирования C++ и Java, потому что они позволяют создавать более эффективный программный код.

Библиотеки и среды разработки NLP

Вот несколько примеров популярных библиотек NLP:

TensorFlow и PyTorch. Это два самых популярных инструментария для глубокого обучения. Они легко доступны для исследовательских и коммерческих целей. Хотя они поддерживают несколько языков, основным для них является язык Python. В обоих инструментариях есть большие библиотеки и встроенные компоненты, так что даже для самых сложных моделей глубокого обучения в NLP зачастую достаточно подключения к этим компонентам. Они также поддерживают инфраструктуру высокопроизводительных вычислений, такую как кластеры машин с ускорителями графических процессоров. Для них созданы прекрасные учебные материалы и другие документы.

AllenNLP. Это библиотека компонентов верхнего уровня для NLP (например, простых чат-ботов), применяемых в PyTorch и Python. Для нее также есть превосходная документация.

HuggingFace. Эта компания распространяет сотни различных предварительно обученных моделей глубокого обучения для NLP, а также готовые к работе комплекты инструментов ПО в TensorFlow PyTorch, что позволяет разработчикам быстро оценивать, насколько хорошо различные предварительно обученные модели справляются с интересующими их задачами.

Spark NLP. Spark NLP — это библиотека обработки текстов с открытым исходным кодом для выполнения сложных задач NLP на языках программирования Python, Java и Scala. Она предназначена для того, чтобы предоставить прикладной программный интерфейс (API) для обработки текстов на естественных языках. Она предлагает предварительно обученные модели нейросетей, конвейеры и встраивания, а также поддержку обучения пользовательских моделей.

SpaCy NLP. SpaCy — это бесплатная библиотека с открытым исходным кодом для выполнения сложных задач NLP на языке Python. Она специально была создана для того, чтобы помочь в создании приложений, способных обрабатывать и понимать большие объемы текстов. Библиотека SpaCy интуитивно понятна и справляется с многими задачами, необходимыми для стандартных проектов NLP.

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

Natural Language Processing Explained

Ethan Koch

Co-authored by a NLP dream team: Stella Liu (AI Product Manager), David Kearns (Product Manager in Data and AI), Nadine Handal (Data Scientist), Shubham Agarwal (AI Research Scientist), Michael Flores (AI Architect) and me (Machine Learning Developer)

Introduction

While AI has sometimes become synonymous with chatbots like Siri and Facebook Discovery bots, this is only scratching the surface of what the underlying technology — natural language processing (NLP) — can do for your product or your organization.

Google “natural language processing” though and you’ll get high level messaging on how ubiquitous it is or deep technical details on its implementation — co-reference resolution, neural network dependency parser and entity recognizer… anyone?

We (a data scientist, NLP consultant, NLP research scientist and AI product manager with a collective 50+ years of experience in this technology) decided that this is not helpful for people to grasp the potential of this technology and understand how to get started.

We collectively wrote this article for you — a tech-savvy but non-technical reader — to get the inside scoop on what this technology is, common success patterns that the team has seen that work in real-world situations, questions you can ask yourself to vet its relevance to the problem you’re facing and a few links so you can pursue deeper research on your own.

Our goal is to de-mystify NLP and provide a way for you to get started. Let us know if we succeeded in the comments.

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

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