Научно-технический вебинар "Автоматическое определение профиля авторов в социальных сетях"
24 ноября 2020, 18:00 МСК

О ВЕБИНАРЕ

Спикер
Григорий Сидоров, Научный сотрудник, Лаборатория обработки естественного языка, Центр вычислительных исследований, НПИ, г. Мехико
Тема
Научно-технический вебинар "Автоматическое определение профиля авторов в социальных сетях"
Подробнее про вебинар

Спикер о предстоящем вебинаре: 

Обсудим преимущества и недостатки использования социальных сетей. Кратко опишем модель векторного пространства. Представим идеи мягкого косинусного cходства и синтаксических n-грамм. Обсудим применение методов машинного обучения к анализу текстов в социальных сетях. Опишем как профиль автора (пол, возраст) может быть автоматически определен на основе текстов в социальных сетях. Представим экспериментальные данные на различных текстовых данных.

Спикер также рассказал о стипендиальных программах Национального Политехнического института г. Мехико и пригласил подавать заявки.

Запись прошедшего вебинара: https://youtu.be/L1BquAAOkH8

Презентация: https://drive.google.com/drive/u/1/folders/1mSowl84BsDgqLdaIQK2-D1IaI-s94ngU

[00:00:00] [Начало записи]

Модератор: Сегодня с нами Григорий Сидоров. Прямая трансляция из Мехико-Сити. И Григорий Сидоров будет рассказывать нам об автоматическом профилировании авторов в соцсетях. Те вещи, которые мне больше всего интересны – это разного рода метрики, который Григорий и его команда вводили на пространствах авторов, как я понимаю. Мы послушаем и узнаем, что там такое на самом деле.

Григорий, может быть, пока не началось, вы начнете с рассказа о том, что у вас за группа по вычислительной лингвистике в Политехническом университете Мехико. 

Григорий Сидоров: Добрый день, наверное, добрый вечер! У нас еще утро. По поводу нашей группы. Про центр я чуть-чуть попозже, наверное, расскажу. Наша группа состоит из трех сотрудников. Все трое из России: я, Александр Феликсович Гельбух, который является начальником нашей лаборатории. И Ильдар Батыршин. Не знаю, слышали ли вы про такого. Он из Казани. 

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

Вот такая у нас небольшая группа. У нас сейчас довольно много студентов разных уровней: мастерские студенты, докторские студенты. Большинство из Мексики, но есть из других стран. Человек шесть-семь у нас сейчас из Пакистана. Из России приглашаем, но народ не очень откликается. 

Хотя есть такие возможности. Правительство Мексики, как это ни странно, платит стипендию иностранцам за то, чтобы они здесь учились. Где-то на мастерском уровне это 500 долларов в месяц, а на докторском уровне – 750 долларов в месяц. Конечно, не очень большие деньги, но прожить здесь вполне можно. 

И большой плюс нашей лаборатории в том, что вы можете заниматься теми темами, которые вас интересуют. Не то, что у нас есть один проект, и обязательно в этом проекте делать какой-нибудь винтик. Что для студентов хорошо, что практически нет... Все, что связано с обработкой языка – добро пожаловать. Не знаю, есть ли интересующиеся. Можете с нами связаться. 

Модератор: Я подозреваю, что бо́льшая часть участников сейчас существенно в постстуденческом возрасте. Я думаю, все уже собрались. И я еще раз представляю Григория Сидорова и передаю ему слово. Он будет рассказывать про автоматическое профилирование авторов в соцсетях, то бишь про _____ (00:04:04) лингвистику. Пожалуйста, Григорий. Как вам правильнее задавать вопросы: после того, как вы расскажете, в ходе?

Григорий Сидоров: Можно и в ходе. Народу немного.

Модератор: Я думаю, текстовым образом можно задавать вопросы прямо в ходе презентации. У нас для этого есть чат. У нас есть для этого пункт Q&A, «Вопросы и ответы». А если хочется задать человечьим голосом, то можно поднять руку. И в тот момент, когда...

Григорий Сидоров: Правда, когда я показываю презентацию, я вопросов, наверное, не вижу. Не знаю.

Модератор: Я буду пытаться ворваться и вежливо добавить вопросы в текущий разговор. 

Григорий Сидоров: Да.

Модератор: Хорошо. Тогда я полностью передаю бразды. Григорий, ваше слово.

(00:05:03)

Григорий Сидоров: Я уже начал. У меня был такой план немножко рассказать о своей лаборатории. В этом смысле, если у вас есть молодые сотрудники, вы можете их к нам присылать. Они могут работать над вашими темами, получая здесь стипендию. Это такая возможность.

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

Потом я расскажу еще о паре идей, связанных с синтаксическими n-граммами (00:06:05) и с мерой мягкого косинусного сходства. Потом немножко поговорю о профиле авторов в социальных сетях. Представлю экспериментальные результаты. У меня есть много таблиц. Наверное, я покажу какие-то таблицы, чтобы мы имели представление о том, что там происходит. 

Все-таки еще раз о нашем центре. Это здание нашего центра. Это довольно крупный центр. Там около 50 научных сотрудников, 12 лабораторий. Покрывается все computer science, то есть hardware, software. Если кто-то надумает, то можете распространять эту информацию в университетах. Мы заинтересованы в студентах, особенно в хороших студентах. Чем больше кандидатов, тем нам лучше. Тогда не буду особо больше говорить про наши программы, мастерские и докторские. Если кто интересуете, можете мне написать.

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

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

Модератор: Григорий, можно вас попросить? У вас все время видно первый слайд. 

Григорий Сидоров: Тогда еще раз. Видно сейчас, лучше?

Модератор: Да. 

Григорий Сидоров: Вы просто не забывайте сдвигаться на следующий слайд.

Модератор: Я не забываю. Просто у меня была какая-то презенташка, но это был, наверное, другой способ представление. Хорошо. Вот о чем мы будем говорить. Вот это наш центр, про который я так много говорил. 50 сотрудников, все области computer science.

Модератор: По-прежнему стоит сайт с agenda. 

(00:09:20-00:10:27)

Григорий Сидоров: Про социальные сети. Естественно, оттуда интерес фирм. Даже какие-нибудь медицинские фирмы вполне могут проверять эффекты, дополнительные эффекты своих лекарств, просто читая в социальных сетях, что вот я выпил ваше лекарство, а у меня потом болела голова. Это можно пытаться вытащить из социальных сетей. 

Поэтому это для нас как исследователей совершенно неоценимый источник информации. А для нас как пользователей это, конечно, тоже что-то очень полезное.  Но, к сожалению, это что-то, что у нас отнимает очень большое количество времени. Это очень популярная вещь, все ей пользуются. Есть некоторые исследования, сто студенты, школьники проводят где-то 8 часов в день в социальных сетях, то есть это full-time работа. И конечно, это может сильно отвлекать.

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

И в этом есть какая-то психологическая реальность. У меня есть знакомый, он все время пишет длинные, тщательно продуманные письма. В день может написать пять-шесть писем. А потом жалуется, что у него 100 тысяч непрочитанных сообщений. К сожалению, да. Я ему всегда говорю: «Возьми трубку и позвони человеку по телефону. Ты гораздо быстрее и эффективнее решишь все вопросы». Какая-то психологическая нагрузка в этом есть.

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

И, наверное, что тоже очень важно, очень легко померить, насколько вы успешны. У меня 100 тысяч последователей за мной следуют в сетях, и я сразу становлюсь очень важным  человеком. Или мне поставили 100 лайков, и я очень этим доволен, сразу вижу, что ой, как хорошо. Это тоже удовлетворяет какие-то наши психологические потребности. 

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

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

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

(00:15:05)

В общем, что можно сказать? Да, социальные сети – это очень полезный инструмент. Для нас это бесценный источник информации. Если вы ими пользуетесь, надо этими пользоваться осторожно, не злоупотреблять. Особенно если сталкиваетесь с какими-то негативными явлениями, надо просто забанить неприятных вам людей и не расстраиваться по этому поводу. Говорят, что даже доводят людей до самоубийства в социальных сетях, устраивают травлю. С этим надо, конечно, бороться волевыми усилиями. Это довольно несложно.

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

В этой книжке две основные части. В первой части я буду рассказывать основные идеи про векторное пространство, а во второй части книжки буду рассказывать про синтаксические n-граммы. Эту идею я вам вкратце расскажу сегодня. 

Эта книжка вышла в Springer в 2019 году. Ровно так же книжка вышла по-русски в 2018 году в издательстве Московского университета. Если кого-то интересует, можете мне написать, я ее положу. Пока еще я ее не выложил, все руки не доходят выложить ее по-русски. По-английски тоже могу ее предоставить, не окончательную версию, а авторский вариант. Почти то же самое. 

У вас семинар по машинному обучению. Я вам предлагаю на минуточку задуматься, что вообще могут делать компьютеры. Могут вычислять, складывать, вычитать числа, очевидно. Могут применять какие-то алгоритмы. Алгоритм – это последовательность шагов. Я говорю: «Сделай это, это, это», – компьютер делает. 

Могут применять какие-то эвристики. Эвристики – это такие правила. Особую роль здесь играют  bio-inspired, типа генетические алгоритмы. Есть целая группа похожих алгоритмов. Все они являются на самом деле алгоритмами оптимизации. И в какой-то момент, в конце 1990-х – начале 2000-х даже считалось, что искусственный интеллект – это вот эти эвристические алгоритмы, потому что они помогают нам принимать решения. Но потом пошли немножко дальше. И сейчас считается, что искусственный интеллект – это что-то связанное с машинным обучением. 

Если наша проблема – это обработка языка или обработка изображений, что могут делать компьютеры в этом смысле? Я не могу придумать алгоритма, последовательности шагов, который будет сам по себе обрабатывать язык и вести себя как человек. Выяснилось, что это невозможно.

Что же тогда могут делать компьютеры в этом отношении? И ровно тот же самый вопрос: машинное обучение о чем? О чем машинное обучение, если я попрошу вас сказать одним словом? Каждый может записать себе на бумажке, если хочет, свой ответ. А я вам сейчас скажу свою точку зрения по этому вопросу. Машинное обучение – это о сходстве объектов. Все машинное обучение – это о сходстве объектов. 

Единственное, что могут делать компьютеры, когда мы не говорим о точных алгоритмах или об эвристических алгоритмах – это вычислять сходство разных объектов. Сходство объектов.

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

(00:19:58)

Сначала, в 1960-1970-е годы была идея, что искусственный интеллект – это алгоритм. Потом решили, что искусственный интеллект – это знания, и тогда был большой интерес к так называемым экспертным системам, к системам, основанным на знаниях. Казалось, пустячок: посадим эксперта, вытащим из него знания, и система сможет это обрабатывать. Оказалось, что очень сложно вытащить эти знания, они всегда противоречивые. 

Потом эта мода на экспертные системы  прошла, и в моду в конце 1990-х – начале 2000-х вошли оптимизационные задачи, bio-inspired алгоритмы, основанные на каких-то природных феноменах, как генетические алгоритмы. Там есть ant colony, particle swarm optimization, такого типа алгоритмы. 

Сейчас пришли к тому, что big data и machine learning. Я считаю, что это практически одно и то же, потому что machine learning основан на больших данных. «Большие данные» – это такой термин, который опять же сейчас в моде.

Когда мы говорим о машинном обучении, как вы наверняка знаете, мы можем говорить о supervised и unsupervised. Supervised – когда нам известны про каждый объект его ярлыки, то есть к какому классу он относится, и unsupervised – когда нам это неизвестно. Очевидно, что в supervised машине гораздо легче обучаться, чем в unsupervised.

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

Является ли эта модель объективной или субъективной? Она является и тем, и другим. Объективна, потому что она отражает реальность. Но, с другой стороны, эта модель субъективна, потому что мы выбрали какие-то характеристики. Мы могли бы выбрать другие характеристики. То есть модель объектива и субъективна. 

Мы выбираем характеристики. Мы выбираем типы значений, которые могут иметь эти характеристики. _____ (00:23:21) как характеристики, то мы можем  использовать разные типы значений: булеановские или TF-IDF. 

И еще важный момент, что мы выбираем шкалы значений. Мы можем мерить вес в тоннах, а можем мерить вес  в килограммах, и наши значения будут очень-очень различны.  

Это все части нашей модели векторного пространства. Мы уже сказали, что она модель. Ясно,  откуда там взялись векторы. Почему это пространство? Векторы имеют явную геометрическую интерпретацию. Здесь можно наблюдать, что всегда приводится в книгах про машинное обучение. Еще раз. Мы имеем векторное пространство из двух измерений: одно измерение, второе измерение. Наши векторы имеют два элемента.

И вопрос: в этом векторном пространстве, когда наш объект является точкой... Это наш один объект, наш другой объект, еще один какой-то объект векторного пространства. В двух измерениях это легко представить. Когда n измерений представить это нельзя, но это ровно то же самое. И вопрос: как же мерить сходство объектов в векторном пространстве?

(00:24:55)

Есть две основные идеи. Здесь я говорю об идее cosine similarity, то есть косинусного сходства. Идея, что надо мерить угол между двумя векторами, между двумя стрелочками. И интуиция, что если вектора идут в одном направлении, то они похожи. А если они идут в разных направлениях, то они различны. Вот такая идея мерить сходство.

И очень простая формула. Здесь у нас dot product, а здесь мы делим на длину вектора, то есть приводим все вектора к единичным векторам. Это вещь, необходимая для измерения угла. Длина вектора – это не что иное как теорема Пифагора. Вот это вектор, это один катет, это другой катет. И это не что другое как значение наших характеристик. Это квадратный корень из произведения квадратов для нашего вектора. Мы получаем его длину. А dot product – здесь мы перемножаем соответствующие элементы наших векторов. Очень простая формула. 

И другое, что здесь я не говорю – это просто эвклидово расстояние. Здесь мы хотим померить вот такое расстояние. И тоже здесь мы не идем дальше теоремы Пифагоры. У нас есть такой треугольник, и мы хотим померить эту гипотенузу. Этот катет – просто разница между этим значением и этим значением. Так делаем для n измерений.

Здесь я хотел бы отметить интересную вещь, что обычно эвклидово расстояние применяется без нормализации, то есть без приведения векторов к единичным векторам. Наверное, это все-таки не очень правильно. Если вы пользуетесь эвклидовым расстоянием, я рекомендовал бы вам делать нормализацию.

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

Вот машинное обучение. Как мы знаем, в чем состоит машинное обучение – это когда нам дано какое-то векторное пространство, мы должны разделить наши классы, классы наших объектов, найти гиперплоскость, то есть каких их разделить наилучшим образом. В векторном пространстве алгоритмы машинного обучения ищут, как нам разделить наилучшим способом наши объекты. Еще раз подчеркну, в векторном пространстве. 

Теперь, если мы работаем с текстами... Опять же, думаю, что это вам известно, но здесь я довольно быстро проговорю. Когда мы работаем с текстами, мы можем в качестве характеристик... Мы сказали: хотим строить векторное пространство, будем выбирать характеристики. В качестве характеристик можем выбирать, самое простое, слова. Тогда у нас получается модель bag of words, то есть «мешок слов». И в качестве значений мы можем выбирать двоичные значения, частоты слов. 

Какая идея за частотой слов? Что частотные слова более важные. Это обычно так, за исключением, как мы знаем, стоп-слов, то есть вспомогательных слов, грамматических слов типа предлогов, в других языках артиклей, вспомогательных глаголов и так далее. У них всегда большая частота, но для многих задач они не годятся. Опять же, тут надо осторожно. Это нам не очень полезно для семантического анализа текстов. Но если мы хотим, скажем, анализировать стиль автора, то там такие слова нам наоборот могут быть очень полезны. Даже есть методы, которые говорят, что надо выбирать n-граммы, сделанные только из служебных слов. Что такое IDF, наверное, я сейчас не буду говорить.

(00:30:00)

Тут пример – два текста. Мы получил наши характеристики, наши измерения. И этот текст переводится в такой вектор, этот текст переводится в такой вектор. Мы видим, что здесь это слово повторилось два раза, здесь частота – два. Слово № 3 в этом тексте отсутствует, здесь ноль. Такой перевод наших текстов в векторное представление. 

Есть какие-то варианты. Может быть, надо делать какую-то предобработку, то есть перевести все слова в нижний регистр. Может быть, использовать слова вместе с их грамматическим ярлыком. То есть cars – существительное. Может быть, проделать лемматизацию. Зависит от нашей задачи. Обычно лемматизация помогает. 

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

Можно использовать в качестве характеристик n-граммы слов, то есть 2-граммы, 3-граммы. Просто три идущих подряд слова. Такие традиционные n-граммы. Я немножко попозже расскажу о синтаксических n-граммах. Это были слова. 

Другой подход – использовать n-граммы символов. My name is John. «My», «y_» – будет следующая характеристика. И «_n» будет следующая характеристика. И так далее. 2-граммы, 3-граммы слов.

Выяснилось, что почему-то 3-граммы слов работают очень хорошо для очень многих задач. Если вы будете сравнивать «мешок слов», то всегда рекомендуется сравнить символьными 3-граммами. Всегда. Почему? Говорят, что они выхватывают и лексическую, и грамматическую информацию. Вот такое объяснение дается. Это n-граммы символов. 

Про значения я уже что-то сказал. Про IDF, я думаю вы знаете. Идея IDF, Inverse Document Frequency, что если у меня есть коллекция документов, то слова, которые встречаются во всех документах, не очень мне полезны. В этом идея Inverse Document Frequency. Слова, которые встречаются в одном документе, мне полезны. В каком смысле? Если придет какой-то запрос, то я точно знаю, какой документ выбрать. А если это слово запроса встречается во всех документах, то мне совершенно не нужно. Поэтому я эти документы буду как-то наказывать. 

Что можно сказать о современных подходах? Современные подходы – это применение нейронных сетей разных архитектур. Все идеи этих нейронных сетей основываются, как это ни странно – во всяком случае, в лингвистике – на таком утверждении, высказанном еще в 1957 году, что узнаете слово по словам, которые его окружают. То есть по контексту. Практически контекст определяет слово. И все современные подходы как раз анализируют контексты слова. 

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

(00:34:55)

Идея в том, что сложная нейронная сеть может найти такие шаблоны, которые мы сами найти не можем. В этом смысле машина может работать даже лучше, чем мы сами можем обрабатывать текст. 

Началось это все на уровне слов. Word2Vec в 2013 году. Идея простая, как мы теперь понимаем. Мы берем нейронную сеть. Там есть разные подходы, но, грубо говоря, у нас есть контекст, и мы хотим предсказать вероятность слова. Мы строим нейронную сеть. У нее предпоследний уровень, уровень до того, как она будет принимать решение. Скажем, было 300 нейронов. И мы берем значения этих 300 нейронов, и у нас получается вектор из 300 чисел. И мы эти 300... Тренируем это для каждого слова. И каждому слову у нас теперь соответствует вектор из 300 различных измерений.

Опять же, потом выяснилось, что это очень интересно моделирует семантику слов. Зная геометрические свойства этих векторов, что если от Франции отнять Париж и прибавить Лондон, то получится Англия, такого типа. Если от короля отнять мужской и прибавить женский, то получится королева. Получится не в точности, но вектор, наиболее похожий на вектор королевы, будет после такого сложения, вычитания значений этих векторов. 

Word2Vec,  потом появились fastText, GloVe. Это идея, что словам соответствуют векторы. И еще очень полезное свойство этих векторов. В чем проблема традиционного векторного пространства? В том, что оно очень разреженно, очень много нулей. А эти вектора практически всегда ненулевые. 

И потом от уровня слова мы, естественно, переходим к более крупным единицам, как Universal sentence encoder. Он кодирует таким образом предложения. ParagraphToVec кодирует таким образом абзацы. 

И в конце концов, следующий логический шаг – мы переходим к целым текстам. Вместо целых текстов у нас получаются какие-то векторы. Это то, что делают сейчас современные Transformers, дополненные механизмом внимания типа BERT, GPT-II и другими. Выяснилось, что в очень многих задачах обработки языка все эти Transformers работают значительно лучше, на 5-10% лучше, чем традиционный machine learning, когда мы сами выбираем характеристики  и что-то с этим делаем. 

Теперь, что мы должны делать, если мы хотим заниматься обработкой языка? Опять же, может быть, вы уже все это знаете и всегда это применяете. Но повториться никогда не вредно. Будем говорить о supervised machine learning.

Наш первый шаг – мы должны сформулировать нашу проблему как проблему классификации. Скажем, если у нас проблема определения авторства, то как все сформулировать как проблему классификации? Наши классы будут авторы. Мы обучаем систему. Мы знаем, какие тексты соответствуют каким авторам. Пришел новый текст, кто его автор, к какому классу он _____ (00:39:28).

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

(00:39:52)

Мы размечаем корпуса в зависимости от проблемы. В случае определения авторства никакой особой разметки не требуется. Просто достаточно знать, какому автору какой корпус соответствует.

Следующий наш шаг – мы должны начать строить нашу модель векторного пространства. Но, может быть, перед этим мы можем какие-то элементы удалить. Мы можем удалить стоп-слова на этом этапе. Тогда они уже не будут входить в нашу модель векторного пространства, даже если мы возьмем n-граммы. Они уже получатся без служебных слов. Зависит от нашей проблемы, хотим мы это делать или не хотим. Потом мы выбираем наши модели, выбираем, какие характеристики. 

Потом мы опять можем отфильтровать. У нас есть наш набор характеристик. Очевидно, можно выбросить все характеристики. Частота, скажем, один – малоинформативно. 

Наш следующий шаг опциональный, необязательный. Можно применить модели трансформации нашего векторного пространства. Есть пространство, мы можем применить latent semantic analysis, principal component analysis. И то, и другое нам трансформирует наше векторное пространство и сделает новое векторное пространство с идеей, что это новое векторное пространство лучше ложится на наши данные. Потом мы должны выбрать соответствующе алгоритмы классификации, то есть Naive Bayes, Support Vector Machines, Random Forests. То есть какие-то традиционные алгоритмы классификации. 

Лет 5-10 назад это было самое-самое, такой процесс обработки. Сейчас уже надо делать это и еще пробовать Transform. После этого надо делать эксперименты. Современная компьютерная лингвистика – это практически эмпирическая наука. Да, мы выбрали какие-то характеристики. Эксперимент покажет, насколько эти характеристики хороши, стоит ли применять LSA или стоит ли применять PCA.

И наконец, последний этап – мы хотим сравнивать с бейслайнами. Бейслайны – это какие-то самые очевидные методы или самые глупые методы. Статистический бейслайн – это явный бейслайн. А если мы хотим еще сравнивать, я уже сказал, что стоит всегда сравнить с bag of words model и использовать 3-граммы символов. С какими-нибудь традиционными классификаторами: Naive Bayes или SVM. И если мы выбрали какие-нибудь хитрые характеристики, и у нас получилось лучше, чем бейслайн, то уже про это можно писать какую-то статью. Это уже научное открытие. 

Вот некоторые примеры задач обработки естественно языка, которые мы можем решать. Про какие-то я уже говорил. Все они основаны тоже на вычислении сходства, даже Information Retrieval. У нас коллекция документов, пришел запрос. Задача выбрать, какой документ наиболее похож на этот запрос, похож в некотором специфическом смысле. Определение плагиаризма. Насколько текст, который пришел, похож на тексты, которые у нас уже есть. И все это мы должны сформулировать как проблему классификации. 

Теперь быстренько пару идей, которые мне представляются довольно новыми. Синтаксические n-граммы. Когда я кому-то говорю: «Синтаксические n-граммы», – мне говорят: «А, ты имеешь в виду n-граммы из тэгов частей речи». А я говорю: «Нет, это совсем не тэги частей речи». 

Идея синтаксических n-грамм. Это вот традиционные n-граммы: John likes, likes red, red apples. Идея синтаксических n-грамм: мы строим синтаксическое дерево для фразы и потом будем брать элементы, просто следуя путям в этом синтаксическом дереве. Такая простая идея.

(00:45:05)

Единственное, что нам здесь нужно... Вот это наше дерево, и отсюда мы будем строить наши n-граммы. Единственное, что нам нужно здесь отметить – что делать в случае, когда у нас здесь происходит разветвление. Предлагается особый синтаксис: здесь ставятся квадратные скобки, а здесь ставится запятая: likes [John, apples]. Это нам необходимо, потому что у нас может быть последовательность из тех же самых слов. Это нам необходимо, чтобы разделить эти два случая. И запятая нам нужна, потому что если у нас есть, как здесь, «красные яблоки», то запятая говорит, что «Джон» отдельно, а «красные яблоки» – это последовательность символов. Я их назвал continuous и non-continuous. Такая идея. 

Очевидно, мы можем строить n-граммы из разных элементов. Мы можем строить их из слов или из лемм. Мы можем строить их из тэгов частей речи. У нас будет существительное, множественное число, мужской род. Можем строить их из тэгов синтаксических отношений. То есть у нас подлежащее, сказуемое, дополнение. Из таких тэгов мы тоже можем строить синтаксические n-граммы. 

Даже, наверное, мы можем строить их из символов. Сначала мы должны построить самые длинные n-граммы из слов, а потом из этих слов уже выбирать, строить n-граммы из символов. И в конце концов, можно строить какие-то смешанные n-граммы. 

Здесь пример, что у нас получилось. Мы решали задачу определения авторства. Выбирали самые частотные в данном случае 2-граммы, 3-граммы, 4-граммы, 5-граммы из символов. И у нас получались вот такие результаты. А когда мы использовали синтаксические n-граммы Syntactic relations tags, то есть из тэгов синтаксических отношений, то у нас получалось несколько лучше 2-грамм и 3-грамм. 

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

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

Мы это попробовали для задачи Question Answering System. Это было тоже какое-то международное соревнование. Это было тоже еще в 2014 году у нас. В качестве меры сходства мы использовали расстояние Левенштейна, то есть за сколько операций мы можем одну строку превратить в другую. И у нас получилось, что с soft cosine наши результаты получились на 5% лучше, чем традиционные. 

Вот такая идея: принять во внимание сходство характеристик между собой в модели векторного пространства. 

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

(00:50:00)

Русские будут писать по-английски по-другому, чем мексиканцы или китайцы. И это можно  опять же выяснить. Были тоже такие международные соревнования, конкурсы таких систем. Кстати, очень рекомендую всем участвовать в таких соревнованиях. Это интересно. 

Очевидно, что это проблема классификации. Если мы говорим о поле, то это мужской, женский. Два класса. У нас есть тексты, написанные мужчинами, есть тексты, написанные женщинами. Пришел новый текст. В какой класс он относится?

Где это можно применять? В криминалистическом анализе, в рекламе, в безопасности. Конечно, с оговорками, потому что ответы всегда вероятностные, то есть никогда мы не можем 100% сказать, что именно так.

Вот были международные соревнования. Там можно получить, по крайней мере, данные для своих экспериментов. Они уже размечены. И потом можно сравнить результаты своей системы с тем, что было раньше. 

Вот какие-то не очень свежие результаты. Тут было интересно, что они выяснили, что мужчины чаще используют прилагательные, артикли. А женщины используют местоимения, отрицания, чаще говорят в настоящем времени. Это такие стилистические черты.

Другой тип профиля – по возрасту. Очевидно, что нельзя говорить 31 или 32, там мы не определим. Поэтому берутся возрастные интервалы. Вот тоже были какие-то корпуса, какие-то данные.  И у них получились довольно хорошие результаты на этих корпусах.  С учетом того, что это ранги возрастов, это довольно хорошие результаты. У нас пять классов, то есть наш бейслайн, случайный бейслан был бы 20%. Здесь получается 75, то есть довольно хорошо. 

И методы. Можно мерить стиль или можно мерить содержание. Если кто-то говорит про прически, то скорее это будут женщины, чем мужчины. Такая идея, по содержанию пытаться определить. Или определить по стилю письма.

Это пример, если мы будем говорить по содержанию и будем говорить о рангах возрастов. От 10 до 20 лет люди о чем говорят? О математике, о домашнем задании, о сестре, о матери, как все мне надоело, кто-то дурак. А когда ему уже стало от 20 до 30, он уже студент, о чем говорят эти люди в социальных сетях, пишут в блогах? Семестр, квартира, пьяный, пиво, студент, университет, бар. А когда ему уже за 30, о чем начинает говорить типичный блогер? О браке, о налогах, о демократии, о детях, о работе. 

Если по содержанию, то вот так примерно можно определять. То есть два направления анализа. Это анализ по содержанию письма. Можно определять по стилю письма. 

И наверное, я вам еще немножко покажу наши результаты для определения профиля авторов. Мы взяли четыре разных корпуса: Social Media, Hotel Reviews, Blogs, Twitter. Все это мы взяли с международного соревнования PAN. Было много подобных данных. 

И два набора экспериментов. Один cross-genre, то есть когда мы тренируемся на текстах одного жанра, а делаем эксперименты на текстах другого жанра.

(00:55:03)

И  the same genre, когда мы тренируемся и делаем эксперименты на текстах того же самого жанра. Вот такие у нас были ранги возрастов, такие корпуса, столько текстов. В общем, не очень много текстов. 

Мы применяли традиционные n-граммы, пытались применять синтаксические n-граммы, традиционные n-граммы part of speech, n-граммы символов и разные комбинации n-грамм. Это рассказываем. Мы пробовали эти классификаторы. Отбирали характеристики по Information-Gain и использовали 10 folds cross-validation. И мы считали точность системы. Результаты у нас были порядка 60%, что для рангов возраста, в общем, не так плохо.

Можно наблюдать, что для того же самого жанра результаты получаются лучше в среднем, чем для разных жанров. Хотя не всегда. Twitter  и блог тоже дал довольно хорошие результаты.

Здесь мы пользовались синтаксическими n-граммами по тэгам грамматических категорий. Тоже довольно неплохие результаты получились для рангов возрастов. Я прошу прощения, это все для gender. Для gender результаты не сильно хорошие. Наш бейслайн – 50%. То есть у нас получается где-то 60. Да, лучше, статистически значимо, но не сильно лучше. 

Здесь многие результаты очень близки к бейслайну, здесь получилось 60%. То есть задача довольно сложная, особенно учитывая, что текстов мало. Синтаксические n-граммы нам дали несколько лучше результаты. 

Это cross-genre. Можем заметить, что получилось несколько хуже, что вполне объяснимо. Когда мы тренируемся на текстах одного жанра, получаем хуже. 

Вот такие таблицы. Это уже для возраста. Когда наш бейслайн где-то 20%, здесь получается 40. Не так плохо. Система что-то находит, но нельзя сказать, что работает очень хорошо. Тоже для возраста. С синтаксическими n-граммами здесь было даже несколько хуже, чем с лексическими элементами. С лексическими элементами здесь проще – текстов все-таки слишком мало. 

Наверное, на этом можно закончить мою презентацию. Не знаю, есть ли вопросы.

Модератор: Григорий, спасибо. Коллеги, есть вопросы к Григорию? Я напоминаю, можно через чат, можно через... Итак, Александр Толмачев. Пожалуйста, Александр.

Александр Толмачев:  Добрый день! Хотел поинтересоваться. Когда у нас будет присутствовать много авторов, либо будут присутствовать новые авторы, что бы вы делали в таком случае?

(00:59:57)

Григорий Сидоров: Наверное, я думаю, все то же самое. У вас есть корпус. И даже если в нем много авторов, наверное, вы будете делать то же самое. Вот те эксперименты, которые я вам показывал, что синтаксические n-граммы дали лучший результат – там было три автора. Сейчас мы делали эксперименты немножечко в другом аспекте. Делали эксперименты, меняется ли стиль автора в процессе времени. Тоже задача классификации. Разделяется на несколько этапов его творчество. Там было 11 авторов. 

В социальных сетях много авторов. Делать то же самое, наверное, да. Что делать? Выбирать характеристики. Гипотеза, что да, стиль автора все-таки уникален. Пробовать разные характеристики. Я уже говорил, что если определение авторства, то предлагалось использовать 8-граммы из служебных слов. Выкинуть все другие слова, строить 8-граммы только из служебных слов. Пробовать комбинации разных характеристик: вот это, добавить туда еще что-то, еще что-то. 

Если мы занимаемся анализом авторов, то надо выбрасывать слова, которые четко связаны с какими-то темами. Наверное, надо выбрасывать имена собственные, надо выбрасывать названия. 

Я думаю, что все то же самое. Я думаю, что в PAN были такие соревнования. Я думаю, что мы в них прямо не участвовали. Опять же, тогда можно посмотреть, что там писали люди, какие у них получились результаты. Поискать этот PAN. Я думаю, что да, традиционный подход – искать правильные характеристики и проверить, какие характеристики вам будут давать лучшие результаты. Это называется даже feature engineering, инженерия характеристик.

Модератор: Григорий, _____ (01:02:36).

Александр Толмачев: Спасибо.

Модератор: С вашего позволения дополню то, что вы говорили. Наши эксперименты в смежной области показывают, что для задач классификации с возрастанием количества классов, на которые надо классифицировать, все более и более выигрышными становятся вещи типа triplet loss. 

Если у вас есть 10 классов, то вы можете любой классификатор учить. И классификатор на основе triplet loss будет работать примерно так же, с точностью до десятых долей процента. Если у вас несколько десятков классов, то triplet loss начинает обгонять. Если у вас сотни, тысячи, десятки тысяч классов, эмбединги на основе triplet loss покрывают, как Красноярский край Бельгию, то, что делает любой традиционный классификатор. 

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

Александр Толмачев: Хорошо, спасибо. Очень полезно. 

Модератор: Через некоторое время мы опубликуем, тогда это можно будет почитать. Сейчас это еще не готово. 

Коллеги, еще вопросы к Григорию? Дмитрий Меньшиков, пожалуйста.

Дмитрий Меньшиков: Добрый вечер! Григорий, спасибо за доклад. Вопрос относительно классификации по возрастам. Вы там выделили несколько возрастных групп. Правильно ли я понимаю, что вы классифицировали в классическом понимании по этим классам?

(01:04:59)

Вопрос: смотрели ли вы confusion matrix? Мне просто любопытно, как легло распределение. Одно дело, когда мы ошиблись между группами, грубо говоря, 18-20 и 20-25 лет, и 18-25 и 65+. 

Григорий Сидоров: Да, правильно, конечно, всегда надо смотреть confusion matrix. Это полезная вещь. Я не помню, конкретно в том случае мы анализировали это или нет. У меня сейчас нет под рукой confusion matrix, поэтому не могу ответить на ваш вопрос. Но да, идея очень правильная, надо всегда смотреть confusion matrix. 

Дмитрий Меньшиков: Да, было бы очень интересно посмотреть. 

Модератор: Коллеги, пожалуйста, еще вопросы к Григорию. Григорий, у меня есть несколько вопросов. Первый вопрос. Почему, несмотря на то, что у вас задача классификации, вы стараетесь использовать эвклидовы пространства, а не гиперболические? Графы естественным образом вкладываются в гиперболические пространства. И любая задача классификации, по идее, должна лучше в гиперболическом пространстве с отрицательной метрикой решаться.

Григорий Сидоров: Сложный вопрос.

Модератор: Ладно. 

Григорий Сидоров: Я не готов ответить.

Модератор: ОК. Еще вопрос. У вас в первой презентации, о которой вы говорили, упоминаются современные технологии: трансформеры и все. А там, где вы говорите про профили в социальных сетях, в основном классические методы типа Support Vector Machine и так далее. Вопрос. Вы пробовали использование синтаксических n-грамм с современными методами эмбединга, с теми же трансформерами или еще с чем-то? Если пробовали, то что получилось?

Григорий Сидоров: Да, вопрос, конечно, интересный. Еще не пробовали, но да, такие планы действительно есть. С одной стороны, нам говорят, что трансформеры всю эту информацию уже получили. Они получили информацию о морфологическом анализе, о синтаксическом анализе. Говорят это. И какой-нибудь Кристофер Мэннинг пишет статьи, что они ищут, где там эти... Вот какая-то часть их характеристик, где там синтаксические характеристики. И как бы даже кто-то такое находит. 

Я думаю, что все равно в этом смысле было бы интересно попробовать синтаксические n-граммы для трансформеров. Да, это пока в планах. 

Модератор: ОК. А когда вы строите синтаксические n-граммы, вы чем пользуетесь для их построения?

Григорий Сидоров: Для английского мы пользуемся Stanford Parser. Для испанского у нас есть тоже система FreeLing. Он, кстати, и для русского работает, FreeLing. _____ (01:09:06) слышали. 

Модератор: ОК. А для русского вы бы рекомендовали FreeLing или что?

Григорий Сидоров: Я очень давно на русском материале не работал, к сожалению, поскольку в Мексике у нас...

Модератор: Не так много русского языка.

Григорий Сидоров: _____ (01:09:27) все обязаны работать на испанском тексте. И чтобы лучше публиковаться, надо работать на английских текстах. Поэтому, конечно, для русского я сейчас не очень в курсе, какой синтаксический анализатор получше. 

Модератор: ОК, понятно. Хорошо. 

(01:09:58)

Дмитрий Башкирцев отмечает, что для русского промоутят Natasha. Natasha – хороший парсер. Мы даже его, Дим, используем в другом проекте. Он хороший, но не идеальный. 

Коллеги, пожалуйста, еще вопросы к Григорию. Если больше нет вопросов, Григорий, большое спасибо за выступление. И до новых встреч.

Григорий Сидоров: Хорошо. Большое спасибо за приглашение. Рад был познакомиться. 

[01:10:48] [Конец записи]



МАТЕРИАЛЫ

СХОЖИЕ ПРОЕКТЫ

Мосэнергосбыт
Российская энергосбытовая компания страны, реализующая свыше 8 % вырабатываемой в России электрической энергии.