В предыдущем материале мы узнали, как подружиться с питоном, если вы гуманитарий. Now, we need to go deeper: разбираемся, является ли естественный язык своеобразным кодом, который можно скормить машине и с чего начать NLP, если у вас лапки.

Шаг 1. Выяснить, что такое NLP.

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

Где используется

Во множестве приложений и инструментов, от роботов в колл-центрах, электронных консультантов на сайтах, таргетированной рекламы и Google Translate, до проверки грамматики в Microsoft Word и Grammarly. Не забудем о голосовых помощниках вроде Siri, Алисы и Алексы.

Как работает

Основная задача и идея NLP (и NLU, Natural Language Understanding) — превратить неструктурированные (сырые) языковые данные в форму, понятную компьютеру.

В чем сложности

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

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

Шаг 2. Познакомиться с арсеналом методов

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

Подходы, основанные на правилах:

(1) Определяем набор языковых правил, который описывает поведение данных (например, языковые законы формирования множественного числа у существительных в немецком)
(2) Задаем порядок применения правил к данным.
(3) Применяем.

С помощью правил можно решить такие задачи как:

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

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

Классическое машинное обучение

классический ML делится на обучение с учителем (supervised ML) и без учителя (unsupervised ML). Идея классической ML-модели: с помощью размеченных данных обучить модель, как реагировать на новые данные. Потестить на других данных, которые не использовались при обучении.

Так как мы тренируем математическую модель, наши данные должны быть представлены как цифровые. (Например, капитализацию слов можно представить как 1.0 and 0.0). Данные обычно представлены как вектора фиксированной длины (например, слова, по отношению к другим словам — см. векторную семантику). ML-модели имеют бòльшую полноту по сравнению с методами на правилах. К минусам можно отнести необходимость иметь размеченные данные, они не всегда доступны.

Типичные алгоритмы классического ML, используемые в NLP — это:

  • Support Vector Machines
  • Bayesian Networks
  • Maximum Entropy
  • Conditional Random Field

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

Но есть ещё один вариант.

Глубинное машинное обучение.

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

Выход есть: глубокое обучение при помощи нейронных сетей. Для глубокого обучения не требуется сложный feature-engineering, задача примерно такая же: представить текст как вектор. Однако теперь нейросеть самостоятельно выберет самые главные признаки. DL-методы дают высокую точность, однако среди недостатков — они медленнее правиловых методов и классического ML, а кроме того, требуют больших вычислительных мощностей и высокого качество входных данных.

Шаг 3. Осознать поле типичных NLP-задач

Их много:
автоматическое распознавание речи, машинный перевод,классификация текстов и тематическое моделирование, снятие многозначности, NER, извлечение информации (именованных сущностей, ключевых слов и тд), автоматическая частеречная разметка,
парсинг непосредственных составляющих, разрешение кореференции, dependency parsing, исправление опечаток(спелл-чекинг), извлечение отношений, semantic role labeling, парсинг(синтаксический, семантический, и др), вопросно-ответные системы, создание баз и графов знаний, диалоговые системы, анализ тональности, дистрибутивная семантика, автореферирование текста, языковые модели и генерация текста и тд.

Шаг 4. Найти полезные Ресурсы

Чтение:

Датасеты:

Онлайн-курсы

Сайты и блоги

Готово: теперь вы можете выбрать задачу, метод(ы) и начать воплощать задуманное!

PS: методы можно комбинировать

Источники