Я создал векторы для списка токенов из большого документа с использованием word2vec. Учитывая предложение, можно ли получить вектор предложения из вектора токенов в предложении.Как получить вектор для предложения из слова2vec токенов в предложении
ответ
Возможно, но не из слова2vec. Композиция словесных векторов для получения представлений более высокого уровня для предложений (и далее для абзацев и документов) является действительно активной темой исследования. Существует не одно лучшее решение для этого, это действительно зависит от того, какую задачу вы хотите применить к этим векторам. Вы можете попробовать конкатенацию, простое суммирование, поточечное умножение, свертку и т. Д. Есть несколько публикаций по этому вопросу, из которых вы можете учиться, но в конечном итоге вам просто нужно поэкспериментировать и посмотреть, что вам лучше всего подходит.
Вы можете получить векторные представления предложений во время тренировочной фазы (присоединить тестовые и обучающие предложения в одном файле и запустить код word2vec, полученный по следующей ссылке).
Код для предложения2vec был предоставлена Томасом Миколовым here. Предполагает, что первое слово строки будет идентификатором предложения. Компиляция кода с помощью
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
Есть гладкошерстные методы, чтобы получить векторы предложения:
- Doc2Vec: вы можете тренировать свой набор данные с помощью Doc2Vec, а затем использовать векторы предложения.
- Средние векторы Word2Vec: Вы можете просто взять среднее значение всех векторов слов в предложении. Этот средний вектор будет представлять ваш вектор предложения.
- Средние векторы Word2Vec с TF-IDF: это один из лучших подходов, который я порекомендую. Просто возьмите слова векторов и умножьте их на свои оценки TF-IDF. Просто возьмите среднее значение и оно будет представлять ваш вектор предложения.
Зачем средняя сумма против суммы? – Fred
Чтобы обрабатывать предложения переменной длины – neel
Вы принимаете средние значения w2v reps из * N * слов для предложения длины * N *; Я понимаю. Но почему среднее значение, например, сумма? (что также даст вам составную репутацию для предложений переменной длины). – Fred
Это зависит от использования:
1) Если вы хотите, чтобы получить приговор вектор для некоторых известных данных. Проверьте вектор-абзац в этих документах:
Quoc V. Le и Tomas Mikolov. 2014. Распределенные представления предложений и документов. Eprint Arxiv, 4: 1188-1196.
A. M. Dai, C. Olah, и Q. V. Le. 2015. DocumentEmbedding с абзацами абзаца. ArXiv e-prints, июль.
2) Если вы хотите модель, чтобы оценить приговор вектор неизвестных (тест) предложения с неконтролируемым подходом:
Вы можете проверить эту статью:
3) Исследователь также являются ищет выход определенного слоя в РНН или LSTM сети, недавний пример:
http://www.aaai.org/ocs/index.php/AAAI/AAAI16/paper/view/12195
4) Для gensim doc2vec многие исследователи не смогли получить хорошие результаты, чтобы преодолеть эту проблему, следуя работе с использованием doc2vec на основе предварительно обученных векторов слов.
Facebook имеет проект SentEval для оценки качества векторов предложения.
У меня были хорошие результаты:
- суммированием векторов слов (с ТФ-IDF взвешивания). Это игнорирует порядок слов, но для многих применений достаточно (особенно для коротких документов)
- Fastsent
Есть несколько способов, чтобы получить вектор для предложения. Каждый подход имеет свои преимущества и недостатки. Выбор одного зависит от задачи, которую вы хотите выполнить с помощью ваших векторов.
Во-первых, вы можете просто усреднить векторы из word2vec. Согласно Le and Mikolov, этот подход плохо работает для задач анализа чувств, поскольку он «теряет порядок слов так же, как и стандартные модели с мешками слов», и «не удается распознать многие сложные языковые явления, например сарказм". С другой стороны, согласно Kenter et al. 2016, «просто усреднение слов вложения всех слов в тексте оказалось сильной базой или функцией во множестве задач», например, задачи с коротким текстовым сходством. Вариантом будет перенос слов-слов с их TF-IDF, чтобы уменьшить влияние наиболее распространенных слов.
Более сложный подход, разработанный Socher et al., заключается в объединении векторов слов в порядке, заданном деревом разбора предложения, с использованием операций матричного вектора. Этот метод работает для анализа настроений предложений, потому что это зависит от разбора.
Я пытаюсь классифицировать документы, используя векторы токенов. Поскольку у меня слишком много токенов (200 тыс.), Я хотел бы сгенерировать векторы документов для классификации, это существенно снизит факторы (скажем, 500). Интересно, возможно ли это. – trialcritic
Можете ли вы указать мне на некоторые публикации по этому поводу? – trialcritic
Вы можете начать с этого: 1. Mitchell, 2008. Векторные модели семантической композиции. [link] (http://homepages.inf.ed.ac.uk/s0453356/composition.pdf) 2. Blacoe, 2012. Сравнение векторных представлений для семантической композиции. [link] (http://www.aclweb.org/anthology/D12-1050) – Claudiu