Что такое НЛП и как оно делает машины умнее в общении?

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

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

С самого начала общение, подобное человеку, рассматривалось как проверка интеллекта в системах искусственных вычислений.

С самого начала способность компьютерной системы понимать и разговаривать на человеческом языке очаровывала многих людей. На заре истории, когда начала формироваться концепция искусственного интеллекта, британский математик Алан Тьюринг, который, кстати, работал над взломом кода ENGIMA во время Второй мировой войны, опубликовал одну из самых ранних статей по искусственному интеллекту. В этой статье он выдвинул идею имитационной игры, которая впоследствии стала широко известна как тест Тьюринга. В этой игре система ИИ будет общаться с судьей-человеком, используя текстовый интерфейс. Если такая система способна обмануть судью, заставив думать, что она на самом деле человек, то ее можно считать разумной. Таким образом, с самого начала общение с человеком, как у людей, рассматривалось как проверка интеллекта в системах искусственных вычислений.

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

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

Вызовы

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

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

Большинство задач, явно или неявно, обрабатывают язык на следующих уровнях. Эти уровни взяты из области лингвистики - науки о человеческих языках.

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

Уровень 2: Морфология. Следующий уровень касается слов. Они могут быть напечатаны или произнесены. Как только слова идентифицированы, они разбиваются на морфемы. Морфемы - это наименьшие единицы, из которых состоят слова. Например, слово «забронировано» можно разделить на «книга» и «-ed». Слово «книга» здесь является глаголом, а не существительным. Часть ‘-ed’ указывает, что это время прошло в прошлом. Этот вид анализа упрощает обработку и помогает компьютеру обрабатывать варианты слова (например, время, род, число). Это также позволяет системе понять значение слова (например, «книга», существительное отличается от глагола «книга»).

Уровень 3: Синтаксис. Анализ синтаксиса - это когда слова группируются в понятные фразы. Затем фразы вкладываются в придаточные предложения, а предложения - под предложения. Это создает представление в виде дерева. Синтаксический анализ находится на одном уровне от понимания смысла предложения. Однако он закладывает основу для определения ключевого действия (т. Е. Глагола) и связанных действующих лиц (т. Е. Существительных), а также атрибутов действия, а также действующих лиц (например, наречий, артиклей и прилагательных).

Уровень 4: семантика - семантика - это то место, где мы пытаемся понять значение предложения. Результатом семантического анализа является представление входного текста. Значение может быть представлено во многих форматах. Для этой цели было разработано множество формализмов - логика предикатов, структуры представления дискурса и т. Д. Но в последнее время наиболее популярным способом представления значения высказывания в разговорном ИИ является использование намерений и сущностей.

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

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

Задания

На один уровень ниже вызовов находятся задачи.

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

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

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

Распознавание именованных объектов - эта задача принимает в качестве входных данных последовательность слов и определяет в них именованные объекты, такие как имена людей, названия городов, названия организаций и т. д.

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

Классификация намерений. Эта задача связана с определением основного положения высказывания. Высказывания классифицируются по семантическим категориям. Например, такие высказывания, как «Я хочу забронировать билет», «Могу я получить билеты на..» И т. Д., Будут сопоставлены с намерением request_book_ticket потому что они имеют в виду одну и ту же идею. Это широко используется в модулях понимания естественного языка (NLU), таких как IBM Watson Assistant, Google DialogFlow и т. Д., Чтобы предоставить чат-ботам возможность понимать, что говорит пользователь.

Моделирование языка. Эта задача заключается в создании модели языка с использованием набора данных. Популярный подход называется моделью n-грамм. Эти модели кодируют информацию о том, насколько вероятны последовательности n-слов в языке. Если бы я попросил вас заполнить следующее предложение - «Как дела __?», вы бы сказали «делаю». Именно это и сделала бы модель n-грамм. Его также можно использовать для вычисления вероятности появления последовательности слов в языке. Например, в модели сказано, что «Как дела?» менее вероятно, чем «Как дела?». Существуют и другие варианты (например, skip-gram, CBOW и т. Д.), Которые используются для аналогичных задач. Как правило, языковые модели используются для улучшения языковых знаний системы.

Инструменты

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

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

Токенизация. Токенизация - это задача создания списка токенов из входной строки. Жетоны включают слова и знаки препинания.

Удаление запрещенных слов. Стоп-слова - это список слов на языке, которые не имеют большого смысла в содержании предложения. Такие слова, как 'a', 'an', 'the', 'я', 'ты', и т.д. очень часто встречаются в любом тексте. Таким образом, они удаляются в качестве первого шага при обработке текста для таких задач, как поиск информации. Поскольку все слова имеют одинаковый вес, не имеет смысла одинаково взвешивать такие слова, как «вы», и такие содержательные слова, как «язык».

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

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

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

Как вы понимаете, эти инструменты используются в нескольких задачах языковой обработки. Существует несколько наборов инструментов, реализующих эти инструменты - NLTK, Spacy, CoreNLP и др.

Эволюция НЛП

Как развивалась область НЛП?

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

НЛП 1.0 - Это самый ранний этап эволюции НЛП. В то время задачи НЛП в основном основывались на тщательно подобранных базах лингвистических знаний и составленных вручную правил. Ранние системы НЛП, такие как SHRDLU и Eliza, были построены с использованием таких подходов. Поскольку создание правил и онтологий требует огромных усилий вручную, эти системы работали в ограниченных игрушечных доменах, которые назывались блочными мирами. В дополнение к правилам были созданы огромные базы знаний, такие как Cyc, WordNet, которые использовались для предоставления семантических и здравых знаний в системы НЛП.

НЛП 2.0 - С середины 80-х годов прошлого века машинное обучение и статистические подходы были внедрены для поддержки большинства задач НЛП. Вместо написания правил и создания баз лингвистических знаний данные использовались для обучения алгоритмов машинного обучения автоматическому изучению правил. Такие алгоритмы, как скрытые марковские модели (HMM), использовались для задач маркировки последовательностей, таких как маркировка PoS, распознавание именованных сущностей и т. Д. Классификаторы, такие как модели максимальной энтропии, байесовские сети, логистическая регрессия и т. Д., Использовались для классификации документов по категориям. Статистические модели были использованы для создания синтаксических и семантических деревьев синтаксического анализа для входных предложений. Такие задачи, как машинный перевод, начали использовать такие подходы, как максимизация ожиданий, чтобы научиться согласовывать слова и фразы между языками. На этапе 2 происходил устойчивый переход от решений, основанных исключительно на правилах и знаниях, к решениям машинного обучения, основанным на данных.

NLP 3.0 - Развитие технологий глубокого обучения подняло задачи машинного обучения на новый уровень. Глубокое обучение относится к новым многоуровневым архитектурам нейронных сетей, которые могут изучать иерархические представления мира из данных. Первым уровнем глубокого обучения для задач НЛП часто является уровень встраивания слов. Слой внедрения слов - это нейронная сеть, которая кодирует данные входные данные в терминах вектора распределения. Применяемый здесь принцип называется распределительной гипотезой - слова с похожими значениями, как правило, встречаются в схожих контекстах. Это означает, что слово «встраивание» для семантически похожих слов, таких как «создатель», «писатель» и «автор», будет ближе друг к другу, чем несвязанные слова, например, «спортсмен». Эта кодировка представляет входные данные более богатым образом, чем более ранние подходы к кодированию, такие как одноразовое кодирование. Эти векторы затем используются для передачи на дополнительные уровни, которые либо классифицируют их (например, классификация тем, анализ настроений), либо генерируют выходную последовательность (например, PoS, NER или перевод).

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

Заключение

Итак, поехали! Обзор обработки естественного языка (НЛП) - проблемы, задачи и инструменты, а также краткий обзор того, как эта область развивалась с течением времени. Недавно Google представила своего чат-бота под названием Meena, использующего нейронную диалоговую модель, которая может взаимодействовать с пользователями в разговорах в открытой предметной области, как это делают люди. Чуть позже Amazon представила одну из них, которая была посвящена разговорам об обслуживании клиентов. Впереди еще много всего, и область НЛП сейчас более горячая, чем когда-либо. Будьте на связи.