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

Честное руководство по машинному обучению - это глубокое погружение в технологии машинного обучения - математика не требуется.

Часть 1 нашего честного руководства по машинному обучению
Часть 2 нашего честного руководства по машинному обучению

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

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

Чтобы понять, что такое обработка естественного языка (NLP), нам нужно знать, что такое естественный язык. Мы используем этот термин, чтобы отличать человеческие языки от компьютерных языков, таких как C ++ или Python. Возможно, вы не поверите, но сегодня в мире говорят более чем на 6 500 языках. Из этого числа только 2000 имеют менее 1000 говорящих; язык, на котором больше всего говорящих на китайском, на котором говорят более миллиона человек. Поэтому, когда мы говорим об обработке естественного языка, мы имеем в виду человеческий текст.

НЛП бывает двух форм: порождение и понимание. В то время как большинство исследователей сосредотачиваются на одном или другом (и сегодняшняя статья в основном сосредоточена на понимании), есть некоторые исследователи, которые считают ошибкой разделение области на два отдельных лагеря. Они думают, что модель, которая будет делать и то, и другое, возможна и более сильна для нее - в таком случае, вместо этого, разделение основывается на применении. Некоторые возможные приложения включают машинный перевод (с человеческого языка A на человеческий язык B), ответы на вопросы (Siri, IBM Watson) и поиск информации.

В некотором смысле разговор об обработке естественного языка похож на разговор о машинном обучении - все сводится к вводу и способу его обработки. Итак, начнем с логичного места.

Вход

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

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

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

Типы обработки

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

Мешок слов

Анализировать структуру предложения может быть невероятно сложно. К счастью, это не всегда необходимо. Бывают случаи, когда самая простая формула - полностью игнорировать структуру, сосредотачиваясь исключительно на отдельных токенах. Это создает метафорический мешок слов - каждое слово рассматривается по отношению к другим словам в сумке, делая выводы и извлекая уроки из их сходства. Пример применения: Тематическое моделирование часто использует Bag of Words. При тематическом моделировании программистам необходимо понимать тему блока текста. Они создают набор слов для каждой статьи или фрагмента текста, а затем выбирают слова из этого пакета и определяют тему на основе того, как эти слова связаны между собой. Например, если вы видели повторяющиеся слова, такие как глубокий, обучение, искусственный интеллект и исследование, вы бы знали, что текст был о машинном обучении.

Добавление тегов

Возможно, вам не нужна полная структура предложения, но вы действительно заботитесь о последовательности лексем. Поскольку в этом случае "Пакет слов" не сработает, вам нужно будет использовать теги для обработки вашего ввода. Маркировка напрямую связана с задачей машинного обучения, которая называется маркировка последовательностей (структурированная классификация). При маркировке исследователи присваивают метку каждому токену на основе наблюдений за их последовательностью. Затем они наблюдают за предыдущими токенами и маркируют следующий на основе этой последовательности. Если бы у вас было предложение Я шел по, вы бы знали, что следующим словом будет существительное. Два известных типа тегов - это тегирование речи и тегирование именованных объектов. Часть речевых тегов маркирует токены с использованием 36 классов (таких как CD - Кардинальное число и NNP - Имя собственное), и они используются для создания деревьев синтаксического анализа (см. Ниже). В тегах именованных сущностей используются классы меньшего размера, которые варьируются в зависимости от каждого отдельного использования. Самый известный из них - Три класса, который делится на Личность, Организация и Местоположение. Пример применения: Если вам нужно вычислить вероятность следующего слова в существующей последовательности текста, вы должны использовать теги. Это используется на телефонах, чтобы предсказать, какое слово вы можете использовать следующим при отправке текстовых сообщений.

Синтаксическая обработка

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

Разделение

Один из видов синтаксического анализа называется разбиением на части. Разделение на части позволяет группировать последовательности токенов вместе в форме пирамиды, создавая все более и более высокий уровень информации. Возьмите фразу: «Вчера я шел из штаб-квартиры Axiom Zen в Морской музей в Ванкувере». «Axiom Zen» - это единый кусок, а «Axiom Zen’s штаб-квартира» - это существительное; Построив Axiom Zen в качестве первого фрагмента, а «штаб-квартиру Axiom Zen» - в качестве второго, вы сможете начать понимать, как словосочетания существительных связаны друг с другом. Представьте, что вы строите стену, кладя кирпичи друг на друга. Начиная с самых маленьких кусков, вы можете наращивать до тех пор, пока не получите всю стену - все предложение в целом.

Анализ группы интересов

Следующий этап эволюции обработки не полностью заменил фрагменты, но часто рассматривается как более мощный инструмент. Вместо блоков, накладываемых друг на друга, синтаксический анализ округа применяет к НЛП контекстно-свободную грамматику. Вспомните наш предыдущий пример: Вчера я шел из штаб-квартиры Axiom Zen. В отличие от структуры фрагментов, дерево допускает свободное перемещение жетонов, поэтому предложение можно понимать во многих формах: Вчера я шел из штаб-квартиры Axiom Zen. Это помогает при заказе и понимании различных заказов. Так откуда же берутся эти общепринятые правила? Их создают люди, но они также могут быть автоматически изучены компьютером. Пример применения: Wall Street Journal был использован для создания Penn Tree Bank, одного из первых открытых источников для НЛП.

Анализ зависимостей

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

Анализ зависимостей основан на DAG. Каждое слово, встречающееся в предложении, зависит от предыдущего токена, но каждый токен также может иметь особых зависимостей. Оно всегда начинается с корня, который почти всегда является глаголом. Если мы воспользуемся нашим старым верным предложением, этот корень будет «ходил». Даже если «гулял» было единственным словом в предложении, оно содержит основное значение. С другой стороны, если мы начнем с «я», у нас нет контекста для формы предложения, и нам придется ждать действия, прежде чем мы сможем вывести значение. Итак, в «Я шел», я зависит от того, как ходил, как и «вчера». Разница между этим и упорядочением состоит в том, что если вы хотите предсказать следующее слово после Axiom Zen, вы не сравниваете его с Axiom Zen, чтобы увидеть, как оно соотносится; вы все еще сравниваете это с «ходьбой».

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

Семантическая обработка

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

Устранение смысловой неоднозначности

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

Ссылка на объект

Другая ветвь семантического понимания называется «связывание сущностей» или «устранение неоднозначности сущностей». Цель связывания сущностей - связать сущность со многими возможными способами выражения этой сущности. Итак, если бы вы увидели слово «Дональд», ваша цель состояла бы в том, чтобы понять, связано ли оно с Дональдом Трампом или Дональдом Даком.

Основная справочная резолюция

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

Семантика композиции

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

Другие процессы

Существует множество других форм семантической обработки, из которых лишь несколько: Фреймы используются для поиска взаимосвязей между токенами. Чтобы обучить фрейм, исследователи создают ресурсы, называемые сетками фреймов, которые представляют собой фреймы, построенные поверх текста (так же, как база данных была создана для деревьев); Извлечение открытых доменов похоже на фреймы, но метки не обязательно должны быть глаголами; Логические формы рассматривают отношения между токенами. Предложение может быть отображено в логической форме, например, для выражения SQL-запросов к базе данных. Чат-боты могут понимать естественный язык, а затем переводить его в запросы SQL, чтобы человек мог «разговаривать» напрямую с компьютером.

Прагматика

Прагматики сосредоточены на отношениях между смыслом и контекстом. Рассмотрим это на примере. Пэт и Крис знакомятся друг с другом на первом свидании. В конце вечера Крис говорит Пэт: Ты мне очень нравишься. Скорее всего, Пэт будет довольна ситуацией. Но представьте, что Пэт и Крис встречаются уже несколько недель, и Пэт спрашивает: Ты меня любишь? Теперь, если Крис скажет: Ты мне очень нравишься, реакция, скорее всего, будет совсем другой! Одно и то же предложение в разных контекстах может иметь совершенно разные смысловые значения. Прагматика находится на очень ранних стадиях исследования, и очень немногие исследователи или компании изучают ее. (Если вы собираетесь получить докторскую степень в области НЛП, это было бы отличным выбором!)

Проблемы НЛП

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

Двусмысленность

Язык очень неоднозначен - даже люди часто не понимают значения предложений. Если вы рассматриваете синтаксические деревья, для одного предложения может быть три или четыре разных дерева синтаксического анализа. Например: «Я ел торт вилкой». Вы съели торт вилкой или съели торт, а потом съели вилку? Ответ очевиден для человека, но очень сложен для компьютера. (Именно из-за неоднозначности мы начали использовать вероятностные модели машинного обучения для НЛП.)

Много способов выразить одно и то же

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

Разреженность

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

Такая ручная работа очень дорога и требует много времени - такие базы данных, как Brown Cluster, необходимо постоянно обновлять. Всегда создаются новые слова и слова с новым значением, а также сленговые версии существующих слов, такие как 2morrow. Глубокое обучение позволяет группировать слова и находить расстояние между ними (соседние слова) без необходимости обновления базы данных человеком. Например, мы можем сказать, что Барак Обама и Хиллари Клинтон связаны, потому что они оба упоминают Соединенные Штаты, президентство и демократов.

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

Многоязычность

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

Дикция и диалект

Тип данных, которые у нас есть, обычно относится к определенной области, жанру или уровню формальности. Если мы обучаем и разрабатываем методы и модели с определенной дикцией, эти модели становятся бесполезными в других ситуациях. Язык Wall Street Journal как набор данных не поможет вам обрабатывать твиты или тексты, потому что язык Twitter, по сути, отличается от официального английского.

Заключение

Хотя эти проблемы значительны, у нас уже есть много успешных приложений, использующих NLP. IBM Watson выиграла ту знаменитую игру Jeopardy, снова открыв глаза общественности на искусственный интеллект; Google Inbox может писать вам надоедливые ответы по электронной почте; а Siri, Google Assistant и Amazon от Amazon с каждым годом становятся только лучше. Мы считаем, что это начальные шаги к созданию точных многоязычных инструментов для семантического и прагматического понимания.

Часть 1 нашего честного руководства по машинному обучению
Часть 2 нашего честного руководства по машинному обучению

Авторы Рамтин Серадж и Рен Хэндман.

Хотите больше, чем читать об искусственном интеллекте и машинном обучении?
Axiom Zen всегда нанимает!