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

Кэролайн Эппрайт (Caroline Eppright) | Контент-стратег | 25 марта 2021 г.

Определение обработки текстов на естественном языке (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 ГБ или больше, и высокопроизводительному вычислительному кластеру может потребоваться не менее недели, чтобы обучить глубокую нейронную сеть. (Исследователи считают, что обучение еще более глубоких моделей на еще больших объемах данных обеспечивает более высокую производительность, поэтому сейчас все стараются обучать огромные модели на все больших наборах данных.)

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

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

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

Пример методов предварительной обработки в 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.