Привет, Хабр! Сегодня мы хотим поговорить о зеленом купечестве и воздухонепроницаемом тринадцатом веке. Нашей задачей будет разделить арахисовый угол, являющийся краеугольным знанием будущего века. Но, не боясь этого затмения, мы сегодня прикоснемся к безопасному, неугасающему артефакту задач….всё, хватит. Генерировать подобный бред не составляет ничего сложного для нейросети, но при этом оказывается непростой задачей для человека. В этом посте мы как раз обсудим, почему так происходит, чем отличается естественная речь, почему технологии NLP становятся все более полезными с каждым днём, а главное — какие препятствия приходится преодолевать, чтобы машина поняла нас и смогла “сказать” что-то действительное осмысленное.
Работа с естественным языком — одно из важнейших направлений развития искусственного интеллекта, и если до 2013 года больших прорывов в этой сфере не было, то сейчас технологии развиваются прямо-таки стремительно, и одна революция следует за другой. Мы тоже вовлечены в этот процесс, поскольку занимаемся разработкой голосового ассистента, и в этом посте хотели бы поговорить о том, почему так важно научить компьютеры понимать человеческую речь как можно точнее. Сегодня речь пойдет на взаимное влияние культур и языка, об интересных фактах в компьютерной лингвистике и про основные проблемы NLP в целом.
Человеческая речь — довольно сложная штука, потому что появлялась она не как утилитарное средство для коммуникаций, а формировалась в процессе становления культуры. Этим объясняется совершенно различная структура речи у разных народов, а также влияние самой речи на становление культуры. В этих условиях не удивительно, что компьютеру сложно понять, что мы имеем в виду.
При этом любопытно, что первая важная задача, для решения которой людям захотелось научить машины понимать естественный язык, появилась еще в середине прошлого века — это машинный перевод большого количества текстов с русского языка (Холодная Война заставляла противников СССР шевелить мозгами), а также с китайского. И до недавнего времени для нее не было достойного решения, но при этом попытки автоматизировать интерпретацию чужого языка происходили непрерывно. Например, в одном из докладов в 1949 году была высказана очень интересная мысль: “Кажется весьма заманчивым объявить книгу, написанную на китайском языке, просто книгой на английском, закодированной китайским кодом.” (1949)
Впрочем, как раз эти задачи решает такой раздел искусственного интеллекта, как Natural Language Processing. В его состав входят методы, посвященные методам обработки и генерации естественного языка.
По данным Google Books Ngram Viewer — поискового онлайн-сервиса Google, который строит графики частоты упоминания языковых единиц на основе огромного количества печатных источников, популярность и интерес к NLP стремительно растет последние 20 лет.
Это показано на графике — всплески 1980-х учитывать не стоит, потому что в те времена под НЛП понимали такой подход к межличностному общению, как нейролингвистическое программирование.
Сфера NLP — человеческий язык
Чем же занимается NLP? Что такое “естественный” язык, и зачем все эти сложности нужны для перевода? Ответ на этот вопрос кроется в глубине особенностей общения.
Существуют проекты, которые изучают звуковые сигналы, которыми обмениваются дельфины...или крысы. То есть, если говорить по хорошему, то определенный язык имеется у многих живых существ. Например, исследования показали, что в “обезьяньем” языке существуют звуки, которые сигнализируют о появлении тигра и орла. В первом случае животные, услышав знакомый сигнал, забирались на дерево, а в другом — пригибали голову и прятались.
Искусственный интеллект может легко вычленить подобные сигналы — распознать и повторить их. Но на формирование такого устойчивого маркера уходят сотни лет. Точно также по нашей речи компьютерные системы сегодня почти безошибочно определяют эмоциональную окраску. Однако чем точнее мы пытаемся научить компьютер понимать речь, чем глубже погружаемся в детали, тем больше сложностей появляется.
Хорошо это или плохо, но в случае с человеком вопрос уже состоит не в том, “лев или орел” хочет нас слопать. Тут нужно уметь говорить об инвестициях, о профессиях, о материях, которые невозможно пощупать или увидеть. Поэтому компьютерное “понимание” языка — задача действительно сложная.
Практические плоскости для NLP
Термин NLP достаточно емкий. В отличие от компьютерной лингвистики, которая остается теоретической дисциплиной, NLP занимается разработкой методов и алгоритмы, которые помогают решать реальные задачи. Так, с помощью NLP можно успешно разбирать по косточкам “текстовые пузыри” и выделять из потока неструктурированной информации действительно значимые данные — например, фамилию пациента и диагноз из электронных медицинских карт. NLP позволяет проводить автоматическую транскрипцию записей разговоров, находить нужные метки, вычислять метрики (тот же скоринг - доволен ли клиент, изменилось ли его эмоциональное состояние в процессе разговора), проверять факты использования рекомендованных и нерекомендованных выражений, и так далее. NLP позволяет понимать, что имел в виду человек, и даже генерировать мысли, похожие на человеческие.
Проблема мировоззрения
Почему же для качественного перевода нужен NLP? Дело в том, что язык намного теснее связан с мировосприятием человека, чем мы привыкли думать. На самом деле как культура человека влияет на язык, так и наоборот. Из числа наиболее показательных примеров — племя Химба. Язык этого народа не содержит такого слова, как “бирюзовый”. Вероятно, это происходит потому, что в ближайшей округе нет ничего подобного цвета, и не было никогда. В результате Химба, пожалуй, единственная группа людей на земле, ни один из которых не может ответить на вопрос: “Какой квадратик на картинке отличается от других”.
Если вы нашли бирюзовый квадрат — значит вы точно не Химба. )
Другой пример — появление целого спектра мировоззрения для народа из-за языка.
В истории современности есть такая народность как Босави, проживающая в Новой Гвинее. При переводе библии им пришлось расширить свой язык, потому что их речь не подходила для описания божественного. Дело в том, что у Босави глаголы выражают не только время и падеж, но также источник знаний. То есть они каждый раз говорят что-то типа “я услышал”, “я увидел”. Однако чтобы приобщиться к библии, им пришлось привнести такое действие, как “подумал”, и фактически появилось понятие “тайной мысли”. Таким образом, язык не только отражает свойства, но и развивает.
Кроме этого, языки помогают найти родственные отношения между странами. Взять, например, слово “кот”. Во многих странах оно звучит и пишется очень похоже.
А еще язык показывает разницу в мышлении людей. Одно интересное исследование было посвящено восприятию цветов. Женщин и мужчин попросили придумать названия для новых оттенков, и результаты оказались очень интересными. Искусственному интеллекту было бы очень сложно понять, почему люди выбрали именно такие ассоциации, и почему они так отличаются между “мужским” и “женским” взглядом.
Бред, полный бред
“Мы запускаем наши телеги абсолютно вперед. Арахисовое масло генерирует большой потенциал медной горы для крокодила. Последний остается достоин лучшего прыжка в подземный каталог рыб для детей”.
Согласитесь, это связные, лексически правильные предложения, но имеют ли они какой-то смысл? Человек может легко сказать, что это не так, но искусственному интеллекту подобное дается сложно. И это одно из важнейших направлений в NLP — работа со смыслами, которые скрывает в себе текст. Надо сказать, что для этого требуется гораздо более серьезная работа, чем простое сопоставление разных терминов и понятий.
А вот человеку генерировать бред достаточно сложно. Дело в том, что в нашем мозгу сложились устойчивые связи и ассоциации, и начиная произносить слова, мы неизбежно “вытаскиваем” из памяти что-то связное. Попробуйте — бредогенерация требует определенного умственного напряжения!
Проблема синонимов и омонимов
Но даже если мы находим способ (а мы его находим!) научить ИИ работать со смыслами, машина неизбежно сталкивается с проблемами омонимов. Например, фраза Pen in the Box является показательной для этой проблемы: ведь pen — это ручка или ферма, box — пенал или загон. И в результате мы можем интерпретировать эту фразу 4 способами:
Ферма в загоне
Ферма в пенале
Ручка в загоне
Ручка в пенале
Откуда мы знаем, что четвертый вариант — верный? Дело в том, что мы понимаем смысл. Нам его подсказывает жизненный опыт и знания о мире, в котором мы живем. Такой пример показывает, что перевод — это не просто сопоставление одних слов другим, это интерпретация, опирающаяся на знания, которыми владеет человек.
Кстати, если попробовать “забить” эту фразу в Google или Yandex, они прекрасно справляются с задачей интерпретации. Переводчики даже не предлагают альтернативных вариантов.
Именно поэтому сегодня для работы с естественным языком декомпозиция применяется достаточно редко. Чтобы правильно понять и интерпретировать сказанное, нужны достаточно длинные фрагменты речи, чтобы рассматривать слова в контексте. Поэтому искусственному интеллекту сначала нужно “прочитать” огромное количество текстов, из которых можно почерпнуть контекст.
Основные тенденции в сфере NLP
На сегодняшний день перед NLP стоит две крупных задачи — NLU (Natural Language Understanding) и NLG (Natural Language Generation). Генерация текстов — очень полезная функция, которая помогает создавать, например, описания стандартных товаров для сайтов интернет-магазинов. И сегодня ИИ уже может писать целые тексты, которые порой выглядят как вполне человеческие. Если погуглить, можно найти удивительные примеры этого явления.
А понимание естественного языка необходимо для того, чтобы получать команды и запросы от человека в той форме, в которой ему удобно (кстати, именно эту часть NLP мы используем в своей работе для развития виртуального ассистента ViTalk), а также сортировать информацию, выделять главное, проводить анализ содержания текста, его эмоциональной окраски и так далее. Также сегодня в тренде умение распознавать, что “не получается распознать”. Это тоже серьезная задача, ведь гораздо лучше, если ИИ вернется с вопросом, чем выдаст бредовый ответ.
Сегодня люди ждут от виртуальных собеседников не просто функций вопрос/ответ, но и своего рода Conversational Intelligence. Речь идет об интеллекте, который может поддерживать беседу, отвечать разными фразами, и не просто открывать справку или передавать запрос оператору в случае новых вариантов обращения, но стараться найти правильную реакцию самостоятельно.
Чтобы решить все эти задачи, используются достаточно интересные и нетривиальные приемы и технические подходы, включая революционные методы кодирования смыслов, использования эмбедингов и статистики, о которых я подробнее расскажу в следующем посте. Так что подписывайтесь на обновления нашего блога, чтобы не пропустить продолжение истории. Делитесь в комментариях, приходилось ли вам сталкиваться с трудностями применения NLP, а также удается ли вам генерировать бред без напряжения?