word2vec: вложения уровня пользователя, уровня документа с предварительно обученной моделью - PullRequest
0 голосов
/ 01 декабря 2018

В настоящее время я занимаюсь разработкой системы рекомендаций на основе контента в Твиттере, и у меня есть модель word2vec, предварительно обученная 400 миллионам твитов.

Как мне использовать эти вложения слов для создания уровня документа / твитавстраивание, а затем получить встраивание пользователя на основе опубликованных твитов?

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

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

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

Такое представление может иногда улучшаться, если вы сделали средневзвешенное значение, основанное на некоторой другой мере относительной важности термина (такой какTF-IDF), или использовались необработанные слова (перед нормализацией до единичной длины, так как необработанные величины перед нормализацией могут иногда указывать на силу смысла).

Вы можете создавать векторы на уровне пользователя, усредняя все их тексты или (примерно эквивалентно) помещая все свои авторские слова в псевдодокумент и усредняя все эти слова вместе.

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

С оригинальными твитами вы также можете тренировать векторы для каждого твита, используя алгоритм типа «Paragraph Vector» (он же «Doc2Vec» в библиотеке, такой как Python gensim.) Но это может иметь сложные требования к ОЗУ с400 миллионов разных документов.(Если у вас меньшее количество пользователей, возможно, они могут быть «документами», или они могут быть предсказанными классами учебного сеанса FastText в режиме классификации.)

0 голосов
/ 01 декабря 2018

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

...