Мы хотим поделиться с сообществом собранной нами базой ассоциаций к словам и выражениям русского языка. Этот набор данных лишён недостатков методов дистрибутивной семантики. Ассоциации хорошо сохраняют эмоциональную полярность и они по своей природе асимметричны. Подробнее расскажем в статье.
Почему дистрибутивная семантика «не видит» часть картины мира?
Письменный язык — это очень сильно сжатая информация. Чтобы распаковать её и понять суть мы подключаем дополнительные ресурсы — здравый смысл, наши знания о мире, культурный контекст. Если часть такой информации вам недоступна, например вы попали в новую компанию или погружаетесь в новую предметную область, вы будете вынуждены восполнять пробелы в знаниях, задавая вопросы или изучая дополнительные источники.
Компьютер лишён (пока) такой возможности учиться. Поэтому NLP-разработчику важно понимать, что части полезной информации о мире в тексте нет и быть не может. Её нужно собирать и подключать дополнительно.
Что такое ассоциации?
Все в детстве играли в игру, когда один человек называет слово, сосед предлагает свою ассоциацию. Потом придумается ассоциация к ассоциации и т.д. Часто интересно не только услышать ассоциацию другого человека, но и понять ход его мыслей, как он пришёл к тому или иному слову. Это позволяет немного заглянуть в то, как мы мыслим.
Можно посмотреть на это и по-другому. Живые люди обладают наиболее актуальной и несжатой информацией о мире и о языке. С этим связана наша изумительная способность разрешать языковые неоднозначности. Любая модель языка будет срезом этой информации с неизбежными потерями. Дистрибутивные модели дают один срез, ассоциации позволяют взглянуть под другим углом. Возможно путь к чуть более объёмной языковой картинке лежит в использовании обеих моделей.
TL;DR или дайте ссылку на датасет
Собственно датасет, которым мы хотим поделиться с сообществом, представляет собой базу таких ассоциаций. Ниже мы расскажем об особенностях данных, но если вам не терпится — смело листайте вниз и переходите на Гитхаб, чтобы скачать базу.
Несимметричность матрицы ассоциаций
Ещё одной досадной особенностью дистрибутивных моделей является их симметричность. Т.е. СТУЛ и МЕБЕЛЬ окажутся похожими, но как понять отношение слов друг к другу? Немного помогает кластеризация поверх векторов, но в исходной модели этой информации нет.
Ассоциации несимметричны. Так, например, к слову ЛАЙМ будет сильная ассоциация ФРУКТ. Но обратное неверно — ЛАЙМ если и ассоциируется со словом ФРУКТ, то далеко не в первую очередь. Это связано как с обобщающей ролью слова ФРУКТ в языке, так и с актуальным культурным контекстом жителей России.
Соответственно зеркальность и её количественное выражение являются интересными атрибутами ассоциаций, выгодно отличающих их от чисто статистических инструментов, таких как дистрибутивные модели.
Что можно сделать с датасетом
Мы видим конечную цель всех исследований языка в том, чтобы научить компьютер понимать язык на уровне человека. Это не обязательно предполагает умение машины мыслить (что бы мы не вкладывали в это понятие), достаточно умело эмулировать то, как человек работает с языком.
Хочется надеяться, что дополнительные источники информации, которых для русского не так много, помогут учёным и исследователям продвинуться на этом пути. Ниже мы предложим несколько направлений исследований, которые показались нам достаточно интересными:
- Реализовать алгоритм assoc2vec, взяв за основу идеи из GloVe и заменив контекстную совстречаемость ассоциативной.
- Кластеризовать ассоциации в рамках каждого отдельного головного слова или датасета в целом, например чтобы выделить кластера отдельных значений слова.
- Исследовать возможность автоматического построения тезауруса русского языка. (Наблюдение: в отличие от контекстов матрица ассоциаций асимметрична.)
- Использовать срезы ассоциаций по гендеру для проведения социологического исследования.
- Сделать интересную визуализацию самих ассоциаций и связей внутри датасета. (Например карту всевозможных путей между ассоциациями.)
- Исследовать природу симметричности/асимметричности относительных частот зеркальных ассоциаций.
Это лишь несколько идей, в реальности их может быть гораздо больше. Придумывайте свои эксперименты и обязательно делитесь результатами на Хабре или даже в научных журналах.
Ссылка на скачивание и лицензия
Датасет: ассоциации к словам и выражениям русского языка
Датасет распространяется по лицензии CC BY-NC-SA 4.0.
Комментарии (13)
RomanL
01.11.2017 10:11Мне видится что вы не очень понимаете принципы использование датасетов в самообучающихся системах. Потому что если ваши «гипотезы», читай «веса синонимов» не будут находить подтверждение (а это, скорее всего так, потому что после 5-10 нормальных ассоциаций у вас идет, извините, бред, который приходится выдумывать) в реальном диалоге или текстах, то они вылетят из модели и останется только наиболее частотная «голова», которая не сильно отличается от того что дает word2vec.
И я не понимаю как эти данные могут автоматически помочь в сентимент-анализе без разметки и в автоматическим составление тезауруса под новую предметную область.
Не подумайте что я наезжаю, просто действительно, проделан большой объем работы, но кроме предположений из той статьи, на которую вы ссылаетесь, что бот запутается в эмоциях если делать его через word2vec я не увидел никаких проверок неадекватности существующих моделей и улучшений на вашем датасете. Что-то есть в вашей идее, но, боюсь, глобально и усреднено — нейронные сети лучше разберутся что к чему )))
PS Кстати, о Glove. У меня сложилось впечатление что эта модель работает хуже чем word2vec. По крайней мере в моих тестах мне так показалось.kdenisk Автор
01.11.2017 10:57По второму вопросу. Здесь мы говорим о нашей работе в целом. Сейчас делаем эмоциональную разметку русского языка и assoc2vec может быть альтернативой дистрибутивным моделям при работе с эмоциями и тональностью, т.к. ассоциации хорошо сохраняют эмоциональную поляризацию.
Что касается тезауруса, то в силу асимметричности матрицы ассоциаций, в ней можно проследить гиперонимические и гипонимические связи. Для новых предметных областей — скорее цель на будущее.
kdenisk Автор
01.11.2017 11:03GloVe и у меня в реальных задачах показывал себя хуже. К тому же он медленнее обучается. Мне кажется это связано с тем, что он работает со сжатой информацией. Допустим слово A встречается с X и Y 50 раз, а также с U и V 75 раз. Но со словами U/V и X/Y — никогда. Матрица совстречаемости, как мне кажется, такие закономерности не увидит.
В случае с ассоциациями альтернативы нет — исходные данные уже представляют собой матрицу совстречаемости. К тому же GloVe лучше работает с редкими словами и здесь это может пригодиться.
kdenisk Автор
01.11.2017 10:52По первому вопросу. Надо экспериментировать и проверять. Учитывайте и тот момент, что в наборе приведены сырые данные, т.e. не аналог результата работы word2vec, а "мысленные контексты" на которых он обучился. Не исключено, что придётся заранее кластеризовать, ведь ассоциации идут к разным значениям слова.
kdenisk Автор
01.11.2017 14:06Справедливости ради расскажем где мы будем применять всё это на практике у себя. Мы занимаемся автоматическим составлением словарей-тезаурусов (Карта слов) и одной из интересных практических задач является машинный поиск синонимов и сходных по смыслу выражений. Дистрибутивные модели отлично справляются с поиском вариантов, но они всё сваливают в кучу — материальные предметы, события, свойства, процессы и т.д. Плюс ранее упомянутая проблема с эмоциональной полярностью, что для словарей оказывается критичным. По-умному это кластеризовать в рамках word2vec-подхода не получается — не хватает как раз той самой информации о мире, которой обладают люди.
Если промаркировать язык с точки зрения семантики (проект Научи бота!), то появится возможность дообучаться для новых слов в учётом их контекстов, синтаксической позиции и т.д. Затем можно использовать дистрибутивные модели для поиска вариантов, а семантические модели для кластеризации и соотнесения полученных связанных слов между собой. Это уже и для практического применения в боевых системах обработки текста, где нет или мало размеченных данных, выглядит супер-секси.RomanL
01.11.2017 15:28А как вы составляете «Каким бывает «счастье»»? Тоже вручную? Или анализируете словосочетания по правилам с ключевым словом?
kdenisk Автор
01.11.2017 15:41Здесь всё совсем просто. Берём биграммы, находим в них согласованные по роду-падежу-числу ADJ_NOUN пары, приводим их к базовой форме, считаем частоту и получаем результат. Чистая статистика совсем без магии.
Есть задача распространить это на другие типы контекстов помимо AN, но руки всё не доходят.
reinvent
01.11.2017 14:17Все в детстве играли в игру, когда один человек называет слово, сосед предлагает свою ассоциацию. Потом придумается ассоциация к ассоциации и т.д. Часто интересно не только услышать ассоциацию другого человека, но и понять ход его мыслей, как он пришёл к тому или иному слову. Это позволяет немного заглянуть в то, как мы мыслим.
Возможно, это позволяет заглянуть в то, как мыслит конкретный человек. Да, культура накладывает свой отпечаток на ассоциации, но насколько? Есть игра по ТВ, называется 100 к 1, полностью на ассоциации. Больше 45 % не получается.
RomanL
Это все прекрасно, но как вы сформировали этот датасет? Ничего не сказано же об этом. Из того что я вижу в assoc.csv — ну те же слова, выведенные через distance из тулчейна word2vec.
Может быть вы как то использовали ранговую корреляцию в прямом ( изба -> дом, крыльцо, ...) и обратном ( дом->изба, крыльцо->изба, ...->изба) вычислении вектора наиболее похожих слов и это назвали «ассоциацией»? Или что? Где описание алгоритма?
kdenisk Автор
Явно упустили этот момент, потому что все спрашивают как собирали. Данные собирали краудсорсингом, построенном на базе игровой механики. Ассоциации называют живые пользователи по примеру игры, описанной в статье (смотрите реализацию здесь: Игра в ассоциации на Карте Слов).
Т.е. это не вариация word2vec от слова совсем. Это скорее попытка получить дополнительные данные о языке, которых в дистрибутивных моделях не хватает.
RomanL
В таком случае могу только восхищаться объемом проделанной работы, но не могу избавиться от двух извечных вопросов «зачем и нафига».
Какую задачу вы решали? Чем ваш датасет может помочь лучше чем предварительно морфологизированный word2vec на приличном исходном множестве текстов?
kdenisk Автор
Отличный вопрос вы спрашиваете! Отвечаем.
word2vec это невероятно хороший, дешёвый и эффективный подход, который будет занимать весомое место в мире NLP ещё долгое время. Но слабость дистрибутивных моделей в том, что они заведомо работают со сжатым источником информации — письменным текстом. И это означает, что в данной парадигме часть задач по обработке языка мы никогда не решим.
Например мы не сможем сделать анализ тональности, если у нас не будет заранее размеченного по сентименту датасета. Или мы не сможем автоматически составить тезаурус для новой предметной области. Даже задача поиска синонимов в рамках дистрибутивных моделей сталкивается с непреодолимыми трудностями.
Возвращаясь к исходному вопросу. На практике имеет смысл использовать то, что уже себя зарекомендовало и хорошо работает. Например word2vec. Но хочется двигаться и к более глобальной цели — научить компьютер «думать» и, главное, научить его учиться как человек, задавая вопросы и накапливая знания. Нам видится, что этот датасет и набор по семантике (см. Научи бота! — разметка эмоций и семантики русского языка) помогут продвинуться в этом направлении. А там и практические применения подтянутся, но до этого нужно провести большую исследовательскую работу.