Сравните векторы документа и просто слово - PullRequest
0 голосов
/ 10 марта 2019

Итак, я должен сравнить вектор статьи и вектор одного слова.И я понятия не имею, как это сделать.Похоже, что BERT и Doc2wec хорошо работают с длинным текстом, Word2vec работает с отдельными словами.Но как сравнить длинный текст с одним словом?

Ответы [ 3 ]

1 голос
/ 11 марта 2019

Некоторые режимы алгоритма «Вектор абзаца» (он же Doc2Vec в библиотеках, таких как Python gensim) будут преобразовывать как векторы документов, так и векторы слов в общее координатное пространство. (В частности, любой из режимов PV-DM dm=1 или режим PV-DBOW dm=0, если вы включаете обучение с чередованием слов по умолчанию с использованием чередования, используя dbow_words=1.)

В таком случае вы можете сравнить Doc2Vec векторов документов с совместно обученными векторами слов, с некоторой полезностью. Вы можете увидеть некоторые примеры в следующем документе, которые являются инициаторами алгоритма «Вектор абзаца»: « Вложение документа с векторами абзаца ».

Однако следует помнить, что векторы для отдельных слов, прошедшие обучение в контексте использования, могут не иметь векторов, которые соответствуют тем, которые мы ожидаем от тех же слов, если они предназначены для всеобъемлющих категорий. Например, education, используемый во многих предложениях, не обязательно предполагает все аспекты / широту, которые можно ожидать от Education, в качестве заголовка категории.

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

Для любого другого не Doc2Vec метода векторизации текста вы могли бы получить сопоставимый вектор для одного слова, предоставив методу текст из одного слова. (Даже в режиме Doc2Vec, в котором не создаются векторы слов, например чистый PV-DBOW, вы можете использовать возможность вывода текста из этой модели для вывода вектора документа для документа из одного слова, для известных слов.)

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

0 голосов
/ 11 марта 2019

Исходя из ваших дальнейших комментариев, которые более подробно объясняют вашу проблему, создается впечатление, что вы на самом деле пытаетесь выполнять тематическое моделирование (категоризация документов по заданному слову эквивалентна маркировке их по этой теме).Если это то, что вы делаете, я бы порекомендовал изучить LDA и его варианты (например, guidedLDA в качестве примера).

0 голосов
/ 10 марта 2019

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

Но если у вас нет контролируемых данных, BERT - не лучший вариант для вас, и есть лучшие варианты там!

Я думаю, что лучше сначала попробовать doc2vec , а если это не сработало, переключитесь на что-то еще, например SkipThoughts или USE.

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

...