Подтвердить что ты не робот

Как получить вектор для предложения из слова2vec токенов в предложении

Я создал векторы для списка токенов из большого документа с использованием word2vec. Учитывая предложение, можно ли получить вектор предложения из вектора токенов в предложении.

4b9b3361

Ответ 1

Существуют различные методы получения векторов предложения:

  • Doc2Vec: вы можете обучить свой набор данных с помощью Doc2Vec, а затем использовать векторы предложений.
  • Среднее число векторов Word2Vec. Вы можете просто взять среднее значение всех векторов слов в предложении. Этот средний вектор будет представлять ваш вектор предложения.
  • Среднее значение векторов Word2Vec с TF-IDF: это один из лучших подходов, который я рекомендую. Просто возьмите слова векторов и умножьте их на свои оценки TF-IDF. Просто возьмите среднее значение и оно будет представлять ваш вектор предложения.

Ответ 2

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

Ответ 3

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

Сначала вы можете просто усреднить векторы из word2vec. Согласно Le и Mikolov, этот подход плохо работает для задач анализа чувств, потому что он "теряет порядок слов так же, как и стандартные модели мешков слов" "и" не смогли распознать многие сложные языковые явления, например сарказм ". С другой стороны, согласно Kenter et al. 2016," просто усреднение словных вложений всех слов в тексте оказалось сильной базой или функцией во множестве задач", например, задачи с близким текстовым сходством. Вариантом было бы переносить слова слова с их TF-IDF, чтобы уменьшить влияние наиболее распространенных слов.

Более сложный подход, разработанный Socher et al., заключается в объединении векторов слов в порядке, заданном деревом синтаксического анализа предложения, с использованием операций матричного вектора. Этот метод работает для анализа настроений предложений, поскольку он зависит от разбора.

Ответ 4

Это зависит от использования:

1) Если вы хотите получить вектор предложения для некоторых известных данных. Посмотрите вектор абзаца в этих документах:

Quoc V. Le и Tomas Mikolov. 2014. Распределенные представления предложений и документов. Eprint Arxiv, 4: 1188-1196.

а. M. Dai, C. Olah и Q. V. Le. 2015. DocumentEmbedding с абзацами абзаца. ArXiv e-prints, июль.

2) Если вы хотите, чтобы модель оценивала вектор предложения для неизвестных (тестовых) предложений с неконтролируемым подходом:

Вы можете проверить этот документ:

Стивен Ду и Си Чжан. 2016. Aicyber на SemEval-2016 Задача 4: представление предложения на основе i-вектора. В материалах 10-го международного семинара по семантической оценке (SemEval 2016), Сан-Диего, США

3) Исследователь также ищет выход определенного уровня в сети RNN или LSTM, последний пример:

http://www.aaai.org/ocs/index.php/AAAI/AAAI16/paper/view/12195

4) Для gensim doc2vec многие исследователи не смогли получить хорошие результаты, чтобы преодолеть эту проблему, следуя работе с использованием doc2vec на основе предварительно обученных векторов слов.

Джей Хан Лау и Тимоти Болдуин (2016). Эмпирическая оценка doc2vec с практической информацией о генерации документов. В материалах 1-го семинара по обучению представительству для НЛП, 2016.

5) tweet2vec или sent2vec .

Facebook имеет проект SentEval для оценки качества векторов предложений.

https://github.com/facebookresearch/SentEval

Ответ 5

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

Код для предложения2vec был разделен Томасом Миколовым здесь. Он предполагает, что первое слово строки является идентификатором предложения. Скомпилируйте код, используя

gcc word2vec.c -o word2vec -lm -pthread -O3 -march=native -funroll-loops

и запустите его, используя

./word2vec -train alldata-id.txt -output vectors.txt -cbow 0 -size 100 -window 10 -negative 5 -hs 0 -sample 1e-4 -threads 40 -binary 0 -iter 20 -min-count 1 -sentence-vectors 1

ИЗМЕНИТЬ

Gensim (версия для разработки), похоже, имеет метод вывода векторов новых предложений. Ознакомьтесь с методом model.infer_vector(NewDocument) в https://github.com/gojomo/gensim/blob/develop/gensim/models/doc2vec.py

Ответ 6

У меня были хорошие результаты:

  • Суммирование векторов слов (с учетом tf-idf). Это игнорирует порядок слов, но для многих приложений достаточно (особенно для коротких документов).
  • Fastsent