Обработка естественного языка

Вы когда-нибудь задумывались, как клавиатура Google может знать правильное написание слова, которое вы печатаете, или даже предсказывать, что вы, скорее всего, наберете после этого слова? Вы когда-нибудь задумывались о том, как приложения в наших мобильных телефонах могут читать ту же фразу, которую мы произносим в микрофон?

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

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

Эта статья поможет вам понять, что нужно для общения с машинами с помощью человеческих языков, и докажет, почему НЛП является одним из прорывов человечества.

Что такое обработка естественного языка?

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

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

Основное взаимодействие между машиной и человеком выглядит следующим образом:

  • Человек разговаривает с машиной
  • Машина читает звук
  • Преобразование аудио в текст происходит
  • Текстовые данные обрабатываются
  • Преобразование текста в аудио происходит
  • Машина воспроизводит аудиофайл в ответ на человеческое

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

Основной конвейер НЛП

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

Конвейер НЛП включает следующие этапы:

  1. Сбор данных
  2. Очистка данных
  3. Формирование общего словарного запаса.
  4. Векторизация документов
  5. Выполнение классификации или кластеризации

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

Сбор данных:

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

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

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

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

Очистка данных:

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

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

Удаление стоп-слов — это процесс удаления из предложений определенных слов, которые не влияют на смысл предложения. Некоторые слова, такие как «a», «the», «might», «could», «because», «but», «and» и т. д. не придают смыслу предложению. Смысл предложений не изменится даже после удаления этих стоп-слов. В библиотеке nltk есть список стоп-слов для английского, французского и других языков. Это позволяет легко удалить эти стоп-слова. Удаление стоп-слова является важным шагом, потому что уменьшает длину предложений, увеличивая наше внимание на более важных словах.

Стемминг — это процесс преобразования определенных слов (глаголов, множественного числа) в их радикальные формы. Это важно, потому что выделение корней сохраняет семантику предложения без увеличения количества уникальных токенов. Например, если в предложении есть слова jumps, jumping, jumped, определение основы сократит эти слова до jump, а значит, уменьшит количество уникальных токенов в предложении. Существует несколько парадигматических модулей, таких как параметр портера или параметр снежного кома, которые помогают нам анализировать наши данные.

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

Формирование общего словарного запаса:

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

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

Назначение общего словаря:

  • Помогает в предварительной обработке текста
  • Служит местом хранения обработанных данных
  • Собирает и хранит метаданные
  • Позволяет предварительно изучить и поэкспериментировать

Векторизация документов:

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

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

Каждое слово в общеупотребительном словаре интерпретируется как 0, если оно отсутствует в данном предложении, и 1, если оно присутствует в этом предложении. Таким образом мы преобразуем весь документ в векторы.

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

Tf-Idf используется во многих задачах НЛП, таких как анализ текста, поисковые запросы и суммирование.

Выполнение классификации или кластеризации:

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

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

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

Помимо наивного байесовского классификатора, в НЛП могут использоваться и другие задачи машинного обучения, такие как деревья решений, машины опорных векторов (SVM), регрессия и т. д. Алгоритмы глубокого обучения, такие как рекуррентные нейронные сети (RNN) и долговременная кратковременная память (LSTM), также могут использоваться достаточно эффективно.

Почему НЛП сложно?

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

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

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

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

Подведение итогов

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

Будущее НЛП

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

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

Автор: -

Сартак Гупта