2015-04-21 2 views

ответ

20

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

+0

Я пытаюсь классифицировать документы, используя векторы токенов. Поскольку у меня слишком много токенов (200 тыс.), Я хотел бы сгенерировать векторы документов для классификации, это существенно снизит факторы (скажем, 500). Интересно, возможно ли это. – trialcritic

+0

Можете ли вы указать мне на некоторые публикации по этому поводу? – trialcritic

+2

Вы можете начать с этого: 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

10

Вы можете получить векторные представления предложений во время тренировочной фазы (присоединить тестовые и обучающие предложения в одном файле и запустить код 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

44

Есть гладкошерстные методы, чтобы получить векторы предложения:

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

Зачем средняя сумма против суммы? – Fred

+10

Чтобы обрабатывать предложения переменной длины – neel

+2

Вы принимаете средние значения w2v reps из * N * слов для предложения длины * N *; Я понимаю. Но почему среднее значение, например, сумма? (что также даст вам составную репутацию для предложений переменной длины). – Fred

11

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

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) Если вы хотите модель, чтобы оценить приговор вектор неизвестных (тест) предложения с неконтролируемым подходом:

Вы можете проверить эту статью:

Steven Du and Xi Zhang. 2016. Aicyber at SemEval-2016 Task 4: i-vector based sentence representation. In Proceedings of the 10th International Workshop on Semantic Evaluation (SemEval 2016), San Diego, US

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

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

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

Jey Han Lau and Timothy Baldwin (2016). An Empirical Evaluation of doc2vec with Practical Insights into Document Embedding Generation. In Proceedings of the 1st Workshop on Representation Learning for NLP, 2016.

5) tweet2vec или sent2vec .

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

https://github.com/facebookresearch/SentEval

2

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

  1. суммированием векторов слов (с ТФ-IDF взвешивания). Это игнорирует порядок слов, но для многих применений достаточно (особенно для коротких документов)
  2. Fastsent
17

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^