Python Расчет сходства между двумя документами с помощью word2vec, doc2vec - PullRequest
0 голосов
/ 25 ноября 2018

Я пытаюсь вычислить сходство между двумя документами, которые состоят из более чем тысячи предложений.

Базовая линия будет рассчитывать косинусное сходство, используя BOW.

Однако я хочу захватить большесемантическое различие между документами.

Следовательно, я построил встраивание слов и вычислил сходство документов путем генерации векторов документов путем простого усреднения всех векторов слов в каждом из документов и измерения косинусного сходства между этими векторами документов.

Однако, поскольку размер каждого входного документа довольно велик, результаты, которые я получаю при использовании описанного выше метода, очень похожи на простое косинусное сходство.

У меня два вопроса,

Q1.Я обнаружил, что модуль gensim предлагает мягкое косинусное сходство.Но мне трудно понять разницу с методами, которые я использовал выше, и я думаю, что это может быть не механизм для вычисления сходства между миллионами пар документов.

Q2.Я обнаружил, что Doc2Vec от gensim будет более подходящим для моих целей.Но я понял, что для обучения Doc2Vec требуется больше оперативной памяти, чем у меня (32 ГБ) (размер всех моих документов составляет около 100 ГБ).Будет ли какой-нибудь способ, которым я обучу модель с небольшой частью (например, 20 ГБ) всего корпуса, и использую эту модель для вычисления попарных сходств всего корпуса?Если да, то какой будет желательный размер набора поездов, и есть ли какое-нибудь руководство, которому я могу следовать?

1 Ответ

0 голосов
/ 09 января 2019

Объявление Q1: если матрица подобия содержит косинусные подобия встраивания слов (что он более или менее делает, см. Уравнение 4 в SimBow на SemEval-2017 Задание 3 ) и если вложения словаL2-нормализуется, тогда SCM (мягкая косинусная мера) эквивалентна усреднению вложения слов (т.е. вашей базовой линии).Для доказательства см. Лемму 3.3 в Замечания по реализации для SCM .Моя реализация SCM в Gensim ( 1 , 2 ) дополнительно сокращает матрицу подобия, чтобы сохранить небольшой объем памяти и упорядочить вложения, так что вы получите немного другие результаты по сравнению с ванильюSCM.Если усреднение встраивания дает результаты, аналогичные простому косинусному подобию BOW, я бы поставил под сомнение качество вложений.

Объявление Q2: Обучение модели Doc2Vec для всего набора данных за одну эпоху эквивалентно обучению модели Doc2Vec наменьшие сегменты всего набора данных, одна эпоха для каждого сегмента.Просто имейте в виду, что Doc2Vec использует идентификаторы документов как часть процесса обучения, поэтому вы должны убедиться, что идентификаторы все еще уникальны после сегментации (то есть первый документ первого сегмента должен иметь другой идентификатор, чем первый документ второгосегмент).

...