Научи бота! — разметка эмоций и семантики русского языка +15

- такой же как Forbes, только лучше.

Со всех сторон на нас сыпятся перспективы светлого роботического будущего. Или не очень светлого, в духе Матрицы и Терминатора. В самом деле — машины уже уверено справляются с переводами, не хуже и намного быстрее людей распознают лица и предметы окружающего мира, учатся понимать и синтезировать речь. Круто? Не то слово!

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

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

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

Не хочу читать, покажите результат!


Можно сразу попробовать обучить бота по ссылке: Научи бота!

Если понравится отвечать — создайте свою Карту и результат будет запоминаться.

Ограничения дистрибутивной семантики


мем про дистрибутивную семантику, word2vec, робот, кофе

В чём, собственно, проблема понимания компьютером текстов, ведь машина может изучить всё текстовое культурное наследие и научиться всему оттуда? Лучше слов расскажет результат работы word2vec.

Для лексемы «мужчина»:
женщина 0.650
замужний 0.594
немолодой 0.542
антимужчина 0.538

беременный 0.519
нерожавший 0.516
девушка 0.498
...

Или для слова «горячий»:
теплый 0.510

холодный 0.498
остыть 0.486
жаркое 0.467
...

А для сильноположительной эмоции «восторг»:
восхищение 0.715

негодование 0.609
ярость 0.597
ужас 0.586
отчаяние 0.584

трепет 0.531
смятение 0.523
недоумение 0.522

бешенство 0.472
...

Или для широкого понятия «техника»:

технология 0.569
искусство 0.451
мастерство 0.410

самолётостроение 0.393
индустрия 0.392
медицина 0.379
ремесло 0.375

промышленность 0.370

знание 0.360
наука 0.358
...

Собственно эти примеры ярко показывают, сколько информации даёт контекст. Достаточно много, но явно недостаточно, чтобы разводить антонимы, часть-целое, общее-частное, делать различие между вертикальными и горизонтальными связями.

Поэтому, вполне разумно, что многие исследователи наряду с подходами дистрибутивной семантики (читай: word2vec) используют тезаурусы. Для английского языка таким ресурсом является WordNet, для русского — РуТез, Викисловарь.

Очевидное не так очевидно


мем про семантику, Король Лев

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

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

Эмоции, чувства, переживания


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

Сложность с фиксацией таких тонких характеристик слов в том, что они предельно субъективны и плохо формализуемы. Скажем, слово стратегия — оно положительное или нейтральное? Согласиться можно лишь с тем, что не отрицательное.

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



Что делать?


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

Хорошие новости! мы живём в 2017-ом году и нам доступны такие замечательные технологии, как Интернет и краудсорсинг. Последний позволяет одновременно справляться как с проблемой трудоёмкости, так и c субъективностью оценок. Конечно это рождает эффект «среднего по больнице», но для первого приближения мы позволим себе закрыть глаза на неровности такого рода.

Научи бота! — разметка эмоций и семантики русского языка


Идея реализована на языковой платформе Карта слов. Работа будет вестись по нескольким направлениям:

  • Оценочная разметка. Задача — разметить слова и выражения русского языка по критериям положительное/нейтральное/отрицательное и силе выраженности признака.
  • Эмоциональная разметка. Задача — разметить эмоционально окрашенные слова и выражения по поляризации и силе эмоционального фона.
  • Разметка тезауруса. Задача — разметить вертикальные и горизонтальные связи между словами, проставить семантические теги для слов и выражений.
  • Экспериментальная разметка отношений по теории „Смысл ? Текст“, предложенной И. А. Мельчуком: MAGN(кофе) = крепкий кофе, MAGN(чувство) = сильное чувство и т.д.

Чтобы использовать человеческий труд с максимальной пользой и сделать задания интересными для отвечающих, применяются подходы дистрибутивной семантики и машинное обучение. За основу системы семантических категорий мы взяли классификацию, используемую для НКРЯ.

Как принять участие?




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

Вы можете помочь проекту следующими способами:

  • Участвовать в обучении бота. Это легко и увлекательно, а также позволяет прокачивать своё языковое сознание и подмечать интересные особенности русского языка.
  • Лайк, шер, Алишер! Делитесь ссылками на проект в социальных сетях, расскажите о нём в своём блоге или на сайте.
  • Конструктивная критика помогает развиваться и не погружаться в болото собственных иллюзий. Обсуждение очень важно, чтобы вовремя корректировать курс и создавать действительно полезный ресурс. Единственное пожелание: критикуете — предлагайте.
  • Семантика и когнитивная лингвистика. Мы стараемся прокачать своё понимание современных подходов к семантике и созданию такого рода ресурсов. Будем рады совету или рекомендации, что почитать, что изучить, с кем посоветоваться.
  • Распространение информации. Нам пригодится ваш совет о том, где ещё можно рассказать о проекте — это может быть ваш любимый техноблог, онлайн-журнал о технологиях, группа во ВКонтакте/Слаке/Телеграме или что-то другое.

Открытые данные


Агрегированные результаты разметки будут открыты для скачивания и доступны по лицензии CC BY-NC 4.0.

Получить и опубликовать первые результаты мы рассчитываем к середине/концу июля — всё будет зависеть от активности отвечающих. Чтобы ничего не пропустить, ставьте звёздочки и подписывайтесь на наш гитхаб:

Открытые данные на Карте слов

Где деньги, Зин?


Здорово попробовать совместить в одном проекте краудсорсинг и краудфандинг, что мы и сделали, запустив кампанию по сбору средств на Планете.ру:

Научить компьютер понимать наш мир и эмоции



Важно. Проект мы уже делаем и доведём до результата своими силами и имеющимися ресурсами. Собранные данные, как и обещали, будут открытыми и доступными всем желающим. Вопрос лишь в сроках и объёме разметки. Сейчас мы рассчитываем получить базовый результат (10.000 самых частотных слов) за три месяца, разметка полного объёма займёт около двух лет.

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

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

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

И помните...
Выбор всегда за вами.

image

Корпорейт спонсоршип


Вы представляете устоявшийся бизнес и вам интересно развитие открытых лингвистических данных в России? Становитесь корпоративным спонсором проекта! Вы получаете вечную графическую ссылку со страницы проекта, дополнительную рекламу на многотысячную аудиторию и неземной респект от сообщества.

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

Коммерческое использование


По вопросам коммерческого использования или бизнес-специфичной разметки пишите на kartaslov@mail.ru или в ЛС автору статьи.

Благодарности


Большую благодарность хочется выразить организаторам и участникам Диалога-2017 — 23-ей международной конференции по компьютерной лингвистике и интеллектуальным технологиям.

Именно в кулуарных обсуждениях мероприятия стала понятна необходимость такого рода разметки, а также собрана группа единомышленников для обсуждения экспериментальной разметки отношений по теории „Смысл ? Текст“. Хочется надеяться, что в следующем году, основываясь на собранных данных, можно будет запустить новое интересное соревнование в рамках Dialogue Evaluation.

Ссылки


  1. Научи бота! на Карте слов
  2. RusVectores: готовые word2vec модели для русского языка
  3. Тезаурус русского языка РуТез (RuWordNet)
  4. Викисловарь
  5. О лексико-семантической информации в НКРЯ


Комментарии (10):

  1. Samouvazhektra
    /#10289064 / +2

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

    хорошая погода (солнышко, безоблачное небо) или плохая погода (дождь, слякоть, буря)
    — большие сомнения к чему это относить.
    стоять на своём — это что-то положительное, отрицательное или нейтральное?

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

    • kdenisk
      /#10289090

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

      С погодой интересное замечание, я даже заводил эту тему на форуме. Мне лично кажется, что жара плохой погодой называться не может. Но примеры указывают на обратное — Где проходит граница между хорошей и плохой погодой?

      Стоять на своём. Таких выражений много, они не имеют ярко выраженного эмоционального или оценочного окраса. Скорее всего разметка это и покажет.

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

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

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

  2. HaZeR
    /#10289874 / +2

    Тема интересная, сам в эту сторону думал. ИМХО Я бы добавил к ответам опцию "в одном из значений", "близко к этому" т.к. попадались где такое напрашивалось из-за возможных разных значений слова\выражения.
    Местами не совсем понятно, зачем оценочное суждение? Кое-что просто факт и в оценке не нуждается.
    Штормовые волны — это хорошая погода? По идее плохая, но я от такого тащусь и для меня хорошая. Это личные предпочтения. Нет ни хорошей, ни плохой погоды, есть отношение к ней конкретного человека. Незачем тащить в бота личное отношение.
    «Знакомец» и «Изменник» — это физический объект? В принципе их таки можно пощупать, но это характеристика другого физического объекта.

  3. kdenisk
    /#10290114 / -1

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

    Всё верно. По науке стоило взять толковый словарь, обозначить конкретное значение слова и размечать уже его. Как сделано, например, в оригинальном WordNet'е. Но это усложняет весь процесс — нужно вчитываться в трактовки, нужно размечать больше значений. Мы пошли на компромисс и не стали так делать в версии #1.

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

    И самый главный аргумент. Даже если мы разведём значения, как в тексте понять где какое? Автоматика умеет это делать, но не всегда хорошо.

    В общем придерживаемся принципа keep it simple, особенно в ранних версиях.

    Местами не совсем понятно, зачем оценочное суждение? Кое-что просто факт и в оценке не нуждается.

    Это нормально, значит нет оценки. Бот никак не может определить, есть ли даже смысл задавать вопрос об оценке. Льёт всё подряд. Когда он понимает, что оценочность применима, он спускается на следующий уровень и спрашивает силу выраженности признака.

    Штормовые волны — это хорошая погода? По идее плохая, но я от такого тащусь и для меня хорошая. Это личные предпочтения. Нет ни хорошей, ни плохой погоды, есть отношение к ней конкретного человека. Незачем тащить в бота личное отношение.

    В среднем — это плохая погода. Кто-то скажет, что хорошая, но статистика это мнение перебьёт. Если будет 50/50 — перед нами интересный случай. Задача собрать как раз субъективные (!) оценки. Делать по ним выводы — задача самого бота и исследователей.

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

    У нас сейчас не стоит задачи создать идеальную разметку. Для этого в принципе недостаточно информации. Цель другая — сдвинуться с мёртвой точки, под неё заточена вся механика.

    «Знакомец» и «Изменник» — это физический объект? В принципе их таки можно пощупать, но это характеристика другого физического объекта.

    Нет в языке абсолютных понятий. Подавляющее большинство слов по семантике — микс из атомарных смыслов, эмоций и оценок. Например:

    На лице полковника мелькнула лёгкая улыбка.

    Здесь полковник — это человек. Но не просто человек, а уточнённый — имеющий звание полковника армии. Поэтому полковник является, безусловно, физическим объектом.

    Что касается изменника — я бы ответил, что не является физическим объектом, т.к. это и в самом деле характеристика. Но возвращаясь к сказанному выше — на том уровне аппроксимации языка, который мы делаем, это неважно. В том смысле, что каждый отвечает на этот вопрос как ему кажется.

    • HaZeR
      /#10290358 / +1

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

      • kdenisk
        /#10290376

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

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

    • HaZeR
      /#10290386

      Счаз еще подумал, в вопросе про физический объект, по моему, стоит добавить ответ «процесс». Так бот быстрее сможет формализовать слово.

      • kdenisk
        /#10290508 / -1

        Есть такой соблазн. Вообще изначально было задание распределить существительное по 11 основным классам, где был как раз процесс, но идея с громким треском провалилась. Поэтому было решено дихотомизировать дерево вопросов.

        Возможно немного укрупнить всё-таки стоит. Спасибо за наблюдение!

  4. michael_vostrikov
    /#10292870 / +1

    А можно пример, как это будет использоваться?

    • kdenisk
      /#10293122

      Отличный вопрос, ответить можно было бы целой статьёй. Но постараюсь кратко.

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

      Второй возможный подход — использовать семантический анализ, но для этого машина должна понимать, какие слова несут положительный заряд, а какие отрицательный. Для этого нужен тональный словарь, где каждому слову сопоставлена оценка.

      Более сложная задача — разметить выражения, т.к. в комбинации некоторые слова могут менять оценку. Это тоже делаем.

      Автоматическое составление словарей. Это то, чем мы собственно и занимается, создавая Карту слов. Огромное количество полезной информации о языке позволяет извлекать правильно приготовленный word2vec в сочетании с алгоритмами кластеризации. То, что уже удаётся неплохо делать: разбивать мешок слов на синсеты — список синонимов, определяющих некий атомарный смысл. Но здесь есть одно большое но: для подходов дистрибутивной семантики слова восторг и ужас очень похожи, т.к. у них контекстные поля довольно сильно пересекаются:

      Пересечение контекстных полей для слов УЖАС и ВОСТОРГ
      пришел в <УЖАС/ВОСТОРГ> 11207
      в <УЖАС/ВОСТОРГ> от 10314
      в <УЖАС/ВОСТОРГ>е от 9606
      от <УЖАС/ВОСТОРГ>а и 8632
      пришла в <УЖАС/ВОСТОРГ> 7830
      была в <УЖАС/ВОСТОРГ>е 5715
      и с <УЖАС/ВОСТОРГ>ом 5711
      с <УЖАС/ВОСТОРГ>ом и 5432
      был в <УЖАС/ВОСТОРГ>е 4987
      Я в <УЖАС/ВОСТОРГ>е 4839
      в <УЖАС/ВОСТОРГ> и 4421
      пришли в <УЖАС/ВОСТОРГ> 4139
      я в <УЖАС/ВОСТОРГ>е 3977
      в <УЖАС/ВОСТОРГ>е и 3760
      его в <УЖАС/ВОСТОРГ> 3478
      себя от <УЖАС/ВОСТОРГ>а 3059
      меня в <УЖАС/ВОСТОРГ> 3044
      <УЖАС/ВОСТОРГ>е от того 3005
      с таким <УЖАС/ВОСТОРГ>ом 2573
      бы в <УЖАС/ВОСТОРГ> 2346
      в такой <УЖАС/ВОСТОРГ> 2205
      он с <УЖАС/ВОСТОРГ>ом 2205
      ее в <УЖАС/ВОСТОРГ> 2105
      он в <УЖАС/ВОСТОРГ>е 2066
      были в <УЖАС/ВОСТОРГ>е 1936
      и в <УЖАС/ВОСТОРГ>е 1847
      <УЖАС/ВОСТОРГ> от того 1816
      просто в <УЖАС/ВОСТОРГ>е 1790
      я с <УЖАС/ВОСТОРГ>ом 1698
      она с <УЖАС/ВОСТОРГ>ом 1459
      в неописуемый <УЖАС/ВОСТОРГ> 1378
      приходил в <УЖАС/ВОСТОРГ> 1372
      с нескрываемым <УЖАС/ВОСТОРГ>ом 1267
      приводит в <УЖАС/ВОСТОРГ> 1202
      она в <УЖАС/ВОСТОРГ>е 1198
      приходит в <УЖАС/ВОСТОРГ> 1120
      <УЖАС/ВОСТОРГ> при виде 1112
      придет в <УЖАС/ВОСТОРГ> 1097
      от <УЖАС/ВОСТОРГ>а при 1093
      Он с <УЖАС/ВОСТОРГ>ом 1076
      <УЖАС/ВОСТОРГ>а при виде 1052