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

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

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

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

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

Как работает

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

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

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

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

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

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

Подходы, основанные на правилах (rule-based):

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

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

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

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

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

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

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

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

  • Support Vector Machine
  • Linear regression
  • Logistic regression
  • K Nearest Neighbours
  • Decision trees

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

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

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

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

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

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

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

Чтение:

Датасеты:

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

Сайты и блоги

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

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

Источники