Компьютерная лингвистика. Как машины учатся понимать людей

Компьютерная лингвистика. Как машины учатся понимать людей

Конспект подкаста «Запуск завтра»

Подкаст о технологиях «Запуск завтра» выходит при поддержке «Яндекс Практикума». Мы тоже выходим при их поддержке, поэтому вот вам коллаб мечты: конспект подкаста для тех, кому некогда слушать.

О герое

Герой выпуска — Иван Ямщиков, руководитель лаборатории естественного языка, созданной Яндексом совместно с Высшей школой экономики в Санкт-Петербурге. Популяризатор науки и автор подкастов «Проветримся!» и «Лабибэй».

Чем занимаются компьютерные лингвисты

Мы занимаемся NLP (Natural Language Processing) — это «естественный язык» в программировании, который используется в поисковой строке. Вводишь текст, и алгоритм понимает, что тебе показать на твой запрос. 

Важно понимать, что современный поиск Яндекса может искать по довольно странным вещам: «Фильм про супергероя, где он поцеловался с девочкой, вися вверх тормашками». Ответ: «Человек-паук 1». 

Любая автозамена или автоматическое дополнение слов, тот же Т9, — пример компьютерной лингвистики. Или когда ты на телефоне вводишь первое слово, а потом нажимаешь на то, что посередине из предложенных, — это называется «языковая модель». Это алгоритм, который по предыдущим словам или буквам пытается предсказать, что будет дальше.

Что такое токен

В обработке естественного языка используется термин «токен» — какие-то последовательности букв. Одна из интересных проблем, которой мы в лаборатории занимаемся, — это вопрос, как текст нарезать на эти самые куски, или токены.

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

Зачем нарезать текст на токены

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

Чтобы машина предсказала всё правильно, нужно понять, для каких задач и как нарезать эти последовательности.

Как научить компьютер узнавать слова в разных формах

Есть два подхода. Один называется «лемматизация» — когда мы говорим, что разбиваем слова на некоторые леммы. Другой называется «стемминг» — когда мы ищем корни и отделяем их от остальной части, то есть исходим из того, что в слове есть морфологическая и смысловая части. Морфологическая меняется, чтобы слово вписывалось в повествование, а окончания согласовываются по смыслу.

На самом деле не так уж и важно учить компьютер определению и выявлению конкретных суффиксов и приставок. Ребёнок учит язык без знания, что такое приставка или суффикс. Ты можешь быть носителем русского языка и не уметь разбирать слово по составу, но при этом ты правильно употребляешь, склоняешь и видоизменяешь слова.

Человека можно научить говорить на другом языке, поместив его в языковую среду. Я выучил немецкий, когда переехал в Германию. Я до сих пор не знаю немецкой грамматики, а говорить могу и писать могу. Люди могут выучить язык даже без понимания верхнеуровневых правил, просто на основании обратной связи и какого-то объёма данных, который они обрабатывают по жизни.

Компьютерные модели тоже так могут. Вопрос: «Почему у модели не получается так хорошо, как у людей?» — он на самом деле основной и до сих пор сложный. Сейчас, конечно, модели справляются с языковыми задачами намного лучше, чем 10 лет назад, но всё ещё не так хорошо, как люди.

Как из токенов составляется словарь NLP

Мы используем алгоритм, который называется Byte Pair Encoding. Например, в алфавите 30 букв. Считаем, какие две буквы встречаются чаще всего. К примеру, в русском языке довольно часто могут встречаться вместе буквы «б» и «а» — слог «ба». Находим самый частый слог из двух букв и делаем из него новый токен. Переобозначаем все пары этих двух букв как новую букву, у нас теперь получается не 30, а 31 буква в словаре. 

Затем находим следующую пару букв по частоте использования. К примеру, у нас была «ба», к ней мы добавили «ом». А может оказаться, что самый частотный вариант — три буквы подряд «бам». Тогда обозначаем этот слог как новую букву. Таким образом наращиваем наш словарь, в котором содержатся обычные буквы и частотные буквосочетания.

Токеном может стать даже целое слово. Например, местоимение «Я» встречается часто — полезно зарезервировать под него отдельный токен, чтобы модель понимала, как эту штуку использовать в разных местах. Все местоимения попадут в отдельные токены: я, ты, мы, вы, они. Простые глаголы тоже могут стать токенами: быть, был.

Так постепенно появляется словарь, в котором под все частотные слова зарезервирован один специальный токен. Дальше туда отправятся куски слов, приставки, суффиксы и окончания, которые часто встречаются. А всё, что туда не попадёт, можно будет собрать по буквам.

Как машины различают омонимы и понимают новые слова

Машины учатся различать омонимы и новые слова так же, как и человек — по контексту. Допустим, я скажу: «Налей мне, пожалуйста, бокал красностопа». По контексту понятно, что это какой-то напиток. Если в тексте написано, что мясо отлично сочетается с эндемическим красностопом Краснодарского края, — из контекста станет понятно, что это, скорее всего, сорт красного винограда. 

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

Почему машина не может выучить язык до конца

Существует феномен, который называется «закон Ципфа». Он заключается в том, что в языке частотность слов устроена специфическим образом. Есть небольшое количество слов, которые встречаются часто, и есть тяжёлый хвост — много слов, которые встречаются довольно редко. 

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

У закона Ципфа есть обратная сторона, которая является проблемой и для людей, и для машин. Многие люди выучивают иностранный язык до уровня В2, а потом резко перестают его учить. Кажется, что ты знаешь грамматику, можешь говорить, но сколько бы ты ни бился, нет ощущения, что куда-то продвигаешься. Это означает, что ты наткнулся на длинный хвост из закона Ципфа, когда у тебя много неизученных слов, которые встречаются только один раз. Машинное обучение пока не может решить эту проблему.

Может ли машина пройти тест Тьюринга

Машина может выдать себя за человека при определённых условиях, связанных с нюансами языка и понимания. Однажды чат-бот, созданный ребятами из Одессы, успешно прошёл тест Тьюринга. Чат-бот представлялся четырнадцатилетним подростком из Одессы и говорил по-английски. Все думали, что это человек, который просто плохо говорит по-английски, и списывали лаконичные ответы на незнание языка.

Про такого чат-бота нельзя сказать, что он хорошо понимает собеседника или что он вообще его понимает. Просто так получилось, что у собеседника есть некоторая модель мира, в которую этот чат-бот удачно вписывается. Тест Тьюринга на самом деле — так себе способ для проверки искусственного интеллекта.

Почему «Алиса» не понимает собеседника

Здесь может быть много проблем проблем, например:

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

А ещё бывает так, что «Алиса» не может выполнить то, что хочет человек. Например, ты думал, что голосовой интерфейс может заказать цветы онлайн, а он не может. В этих моментах можно самому открыть поиск и набрать нужное вручную.

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

У подобного общения есть проблема — ей сложно поддерживать длительный и осмысленный разговор. «Алиса» не помнит того, что ей сказали час назад. Чтобы это стало возможным, ей надо как-то выбирать из потока текста что-то важное и неважное и где-то это хранить. Есть целое направление, где люди бьются над созданием искусственных нейронных сетей, обладающих памятью, — но пока безрезультатно.

Сможет ли компьютер обрести авторский стиль

Сможет. 

У Лёши Тихонова вышла бумажная книга Paranoid Transformer — дневник сошедшей с ума искусственной нейронной сети. Про эту книгу есть даже научная статья. Эти дневниковые записи обладают ни на что не похожим стилем цифрового криптоанархиста. Всё дело в том, что нейросеть была обучена на всяких криптоманифестах и на научной фантастике. 

Интересно ещё то, что книга написана как бы рукописным почерком, который сгенерировала другая нейронная сеть. Когда текст более эмоциональный, шрифт становится неаккуратным, как будто дрожит рука автора. Это такая отсылка к произведению Николая Васильевича Гоголя «Дневник сумасшедшего».

Какие языковые задачи машина решать не может

Машина не умеет рассказывать интересные истории и плохо понимает культурный контекст и информацию за пределами контекста. 

А ещё модель может поставить в тупик использование метафоры. Говоришь машине, что на улице горят костры рябин, и задаёшь модели вопрос: «Что происходит на улице?» Даёшь варианты ответа: «На улице пожар» или «На улице третье сентября». Модель не сможет правильно ответить, в отличие от человека.

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Начать карьеру в ИТ
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Еще по теме
Что такое прошивка
Что такое прошивка

Заглядываем внутрь простой электроники

easy
Лучшие языки программирования для старта в 2022 году
Лучшие языки программирования для старта в 2022 году

Можно работать удалённо

easy
130 тысяч рублей за работу бэкенд-разработчика. Что это значит?
130 тысяч рублей за работу бэкенд-разработчика. Что это значит?

Что нужно делать, чтобы получать столько же.

easy
Мальчик заливает на FTP, мужчина поднимает Git

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

hard
Всё на костылях, но мы видим, что это работает

Разговор с Ильёй Красильщиком о первых запусках «Лавки».

hard
Что такое стек
Что такое стек

И почему так страшен стек-оверфлоу.

medium
Как устроена и кому нужна стажировка в Яндексе
Как устроена и кому нужна стажировка в Яндексе

Как туда попасть и что там делают.

easy
Убери руку с мышки!
Убери руку с мышки!

Как работать в три — пять раз быстрее с помощью горячих клавиш.

easy
Как устроена радиосвязь
Как устроена радиосвязь

Wi-Fi, 4G, 5G и другие приключения электромагнитного поля

medium
Как установить Вордпресс на свой сайт

Совсем взрослый стал, сайты свои делает, молодец.

hard
easy