Мы узнаем значение незнакомых слов по тому, как они используются в языке. Если бы мы не понимали, что значит «береза», но видели бы, что оно используется примерно в тех же сочетаниях и контекстах, как «сосна», мы бы поняли, что «береза» — это, скорей всего, дерево. Нейросеть найдет, что береза и сосна растут, что есть березовые и сосновые поленья и так далее. Береза и сосна близки по значению. Но вот, допустим, волк не растет, волчьих поленьев тоже нет, поэтому значение слова «волк» далеко от «березы».
Алгоритмы, которые подсчитывают частоту употребления слова в тех или иных сочетаниях и находят в них закономерности, позволяют создать шаблоны словосочетаний, которые потом можно применить для создания предложений. Именно эта модель, кстати, используется для автоматической подсказки, когда вы пишете сообщение в смартфоне. Этот подход сейчас господствует и он развивается. Например, некоторые исследователи работают не со словами, а с последовательностями символов, и их модели могут запоминать сокращения, сленг и все то, что не отражено в словарях. Этот подход позволяет работать и с языками, в которых между словами нет четких границ.
Модели, основанные на принципе статистической семантики, строят предложения по ассоциациям, а не по смыслу, поэтому приложение их для понимания ограничено. Однако с их помощью легче достичь результата, если иметь очень много данных —и с этими данными просто работать, ведь их не нужно предварительно обрабатывать или размечать.
Но все же конечная цель NLP — это понимание речи, поэтому все чаще применяются другие подходы.
Например, в семантике фреймов алгоритмы разбирают предложения по кирпичикам, выделяя слова, которые отвечают на вопросы кто, что, где, когда, а также существительные и глаголы. Например, если попросить Алексу: «Найди грузинское кафе в центре на завтра», алгоритм разобьет фразу на части: действие —что сделать (найти), что (грузинское кафе), когда (в пятницу) и где (в центре). Алгоритм различает простейшие фрагменты информации, что позволяет модели отвечать на простые вопросы или запросы. Это можно использовать для создания чатботов и голосовых помощников.
Фреймовые модели могут обрабатывать простые предложения и, таким образом, показывают элементы понимания текста, на котором учатся. Впрочем, они не улавливают нюансы, лишены гибкости и для обучения им нужны большие массивы данных под каждый конкретный запрос.
Третий подход называется теоретико-модальная семантика. Основана она на идее, что человеческие знания можно закодировать в виде логических правил. Если модель знает, что птицы могут летать, а орлы — это птицы, то она сама делает вывод, что орлы летают. Когда-то, на заре машинного обучения, за таким методом видели большое будущее, но вскоре убедились, что язык не так логичен, как кажется, и из каждого правила есть много исключений. Например, курица хоть и птица, но с полетами у нее проблемы, а летают, кроме птиц, самолеты и даже люди — космонавты.
Сейчас модели, основанные на этом подходе, используются для работы с базами данных, где информация уже упорядочена. Тогда модель может разбить предложение на части и дать ответ, исходя из логических правил, применимых к каждой из частей. Если взять вопрос «В какой стране мира было меньше всего убийств по неосторожности на душу населения в прошлом году?», алгоритм разделит его на серию отдельных запросов: «Какие есть страны мира?», «Какие бывают виды убийств?», «Сколько убийств по неосторожности было в таком-то году по странам?» и так далее. Алгоритм последовательно задает вопросы, обращаясь к базам данных, пока не получит окончательный ответ.
Такой метод позволяет отвечать на сложные запросы, хотя требует серьезной подготовки с представлением знаний. Если вопрос сформулирован неточно или выходит за рамки имеющихся данных, модель не работает.
Самый перспективный подход в машинной обработке естественных языков — это низкоуровневая семантика. Обучение нейросети идет так же, как человек учится языку в течение своей жизни: с нуля. Через разговор и наблюдение за действием модель учится подбирать слова и правильно их использовать. Это напоминает популярную игру в крокодила, когда участники должны по движениям догадаться, что перед ними изображают. Например, компьютеру дают команду: «Переместить красный куб влево», а затем показывают, что имеется в виду. Со временем машина поймет значение слов в этой команде и научится выполнять ее самостоятельно.
Исследователи считают, что именно так, через действие и взаимодействие, человек создает и меняет язык, вводя туда новые слова и понятия. Истинное понимание языка невозможно без понимания целей, которых нужно достичь, поэтому этот алгоритм очень близок к нашему восприятию мира.