Pull to refresh

Comments 14

Это все прекрасно, но как вы сформировали этот датасет? Ничего не сказано же об этом. Из того что я вижу в assoc.csv — ну те же слова, выведенные через distance из тулчейна word2vec.

Может быть вы как то использовали ранговую корреляцию в прямом ( изба -> дом, крыльцо, ...) и обратном ( дом->изба, крыльцо->изба, ...->изба) вычислении вектора наиболее похожих слов и это назвали «ассоциацией»? Или что? Где описание алгоритма?

Явно упустили этот момент, потому что все спрашивают как собирали. Данные собирали краудсорсингом, построенном на базе игровой механики. Ассоциации называют живые пользователи по примеру игры, описанной в статье (смотрите реализацию здесь: Игра в ассоциации на Карте Слов).

Т.е. это не вариация word2vec от слова совсем. Это скорее попытка получить дополнительные данные о языке, которых в дистрибутивных моделях не хватает.
В таком случае могу только восхищаться объемом проделанной работы, но не могу избавиться от двух извечных вопросов «зачем и нафига».

Какую задачу вы решали? Чем ваш датасет может помочь лучше чем предварительно морфологизированный word2vec на приличном исходном множестве текстов?
Отличный вопрос вы спрашиваете! Отвечаем.

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

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

Возвращаясь к исходному вопросу. На практике имеет смысл использовать то, что уже себя зарекомендовало и хорошо работает. Например word2vec. Но хочется двигаться и к более глобальной цели — научить компьютер «думать» и, главное, научить его учиться как человек, задавая вопросы и накапливая знания. Нам видится, что этот датасет и набор по семантике (см. Научи бота! — разметка эмоций и семантики русского языка) помогут продвинуться в этом направлении. А там и практические применения подтянутся, но до этого нужно провести большую исследовательскую работу.
Работу с языком обсуждаем
1. «Отличный вопрос вы спрашиваете!»->«Отличный вопрос вы задаете! „
2. “Т.е. это не вариация word2vec от слова совсем.» — т.е. нельзя было написать без банального тупого оборота, эдак завернуто… тогда уж «от слова 'совсем'».
Мне видится что вы не очень понимаете принципы использование датасетов в самообучающихся системах. Потому что если ваши «гипотезы», читай «веса синонимов» не будут находить подтверждение (а это, скорее всего так, потому что после 5-10 нормальных ассоциаций у вас идет, извините, бред, который приходится выдумывать) в реальном диалоге или текстах, то они вылетят из модели и останется только наиболее частотная «голова», которая не сильно отличается от того что дает word2vec.

И я не понимаю как эти данные могут автоматически помочь в сентимент-анализе без разметки и в автоматическим составление тезауруса под новую предметную область.

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

PS Кстати, о Glove. У меня сложилось впечатление что эта модель работает хуже чем word2vec. По крайней мере в моих тестах мне так показалось.

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


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

GloVe и у меня в реальных задачах показывал себя хуже. К тому же он медленнее обучается. Мне кажется это связано с тем, что он работает со сжатой информацией. Допустим слово A встречается с X и Y 50 раз, а также с U и V 75 раз. Но со словами U/V и X/Y — никогда. Матрица совстречаемости, как мне кажется, такие закономерности не увидит.


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

По первому вопросу. Надо экспериментировать и проверять. Учитывайте и тот момент, что в наборе приведены сырые данные, т.e. не аналог результата работы word2vec, а "мысленные контексты" на которых он обучился. Не исключено, что придётся заранее кластеризовать, ведь ассоциации идут к разным значениям слова.

Справедливости ради расскажем где мы будем применять всё это на практике у себя. Мы занимаемся автоматическим составлением словарей-тезаурусов (Карта слов) и одной из интересных практических задач является машинный поиск синонимов и сходных по смыслу выражений. Дистрибутивные модели отлично справляются с поиском вариантов, но они всё сваливают в кучу — материальные предметы, события, свойства, процессы и т.д. Плюс ранее упомянутая проблема с эмоциональной полярностью, что для словарей оказывается критичным. По-умному это кластеризовать в рамках word2vec-подхода не получается — не хватает как раз той самой информации о мире, которой обладают люди.

Если промаркировать язык с точки зрения семантики (проект Научи бота!), то появится возможность дообучаться для новых слов в учётом их контекстов, синтаксической позиции и т.д. Затем можно использовать дистрибутивные модели для поиска вариантов, а семантические модели для кластеризации и соотнесения полученных связанных слов между собой. Это уже и для практического применения в боевых системах обработки текста, где нет или мало размеченных данных, выглядит супер-секси.
А как вы составляете «Каким бывает «счастье»»? Тоже вручную? Или анализируете словосочетания по правилам с ключевым словом?
Здесь всё совсем просто. Берём биграммы, находим в них согласованные по роду-падежу-числу ADJ_NOUN пары, приводим их к базовой форме, считаем частоту и получаем результат. Чистая статистика совсем без магии.

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

Возможно, это позволяет заглянуть в то, как мыслит конкретный человек. Да, культура накладывает свой отпечаток на ассоциации, но насколько? Есть игра по ТВ, называется 100 к 1, полностью на ассоциации. Больше 45 % не получается.
Sign up to leave a comment.

Articles