Какие дополнительные функции использовать помимо встраиваний Doc2Vec для схожести документов?

Итак, я делаю проект по подобию документов, и сейчас мои функции - это только вложения из Doc2Vec. Поскольку это не дает никаких хороших результатов после оптимизации гиперпараметров и встраивания слов перед встраиванием документа ... Какие еще функции я могу добавить, чтобы получить лучшие результаты? Мой набор данных - это 150 документов по 500-700 слов в каждом, с 10 темами (ярлыками), каждый документ имеет одну тему. Документы маркируются на уровне документа, и эта маркировка в настоящее время используется только для целей оценки.

Изменить: Ниже приводится ответ на вопросы Годзомо и мой комментарий к его ответу:

Оценка модели выполняется на обучающей выборке. Я сравниваю, совпадает ли этикетка с наиболее похожим документом модели. Для этого я сначала получаю вектор документа, используя метод модели infer_vector, а затем most_similar, чтобы получить наиболее похожий документ. Текущие результаты, которые я получаю, имеют точность 40-50%. Удовлетворительный балл должен быть не менее 65% и выше.

Из-за цели этого исследования и его дальнейшего использования я не могу получить больший набор данных, поэтому профессор порекомендовал мне, поскольку это университетский проект, добавить некоторые дополнительные функции к встраиваемым документам Doc2Vec. . Поскольку я понятия не имел, что он думает, я спрашиваю сообщество stackoverflow.

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

Если я не получу хороших результатов с этой моделью, я попробую более простые, упомянутые @Adnan S @gojomo, такие как TF-IDF, Word Mover's Distance, Bag of words, просто предполагалось, что я получу лучшие результаты с помощью Doc2Vec.


person DataDoge    schedule 03.03.2020    source источник


Ответы (3)


Вы должны попробовать создать TD-IDF с 2 и 3 граммами, чтобы сгенерировать векторное представление для каждого документа. Вам придется тренировать словарный запас по всем 150 документам. Если у вас есть вектор TF-IDF для каждого документа, вы можете использовать косинусное сходство между любыми двумя из них.

Вот статья в блоге с дополнительные сведения и страница документации для sklearn.

person Adnan S    schedule 03.03.2020
comment
Спасибо за ваш ответ! Я попробую это как второй метод, если не получу хороших результатов. Мой вопрос заключался в том, могу ли я создать какие-либо дополнительные функции для векторов документов Doc2Vec, но я учту это. - person DataDoge; 03.03.2020

Как вы оцениваете результаты как плохие и как узнаете, что ваши результаты удовлетворительны / хороши?

Обратите внимание, что всего 150 документов по 400-700 слов в каждом представляют собой крошечный набор данных: типичные используемые наборы данных, опубликованные Doc2Vec результаты включают от десятков тысяч до миллионов документов, от сотен до тысяч слов в каждом.

Любому из алгоритмов в стиле _2 _ / _ 3_ / etc будет сложно что-то сделать с таким небольшим объемом данных. (Реализация gensim Doc2Vec включает аналогичный набор данных игрушек, состоящий из 300 документов по 200-300 слов каждый, как часть структуры модульного тестирования, и для получения даже неопределенно полезных результатов необходимо увеличить количество эпох обучения и уменьшить размер вектора, значительно.)

Поэтому, если вы собираетесь использовать алгоритмы, подобные Doc2Vec, вашим главным приоритетом должен быть поиск дополнительных данных для обучения. Даже если в конечном итоге значимым будет всего ~ 150 документов, сбор большего количества документов, использующих аналогичный язык предметной области, может помочь улучшить модель.

Непонятно, что вы имеете в виду, когда говорите, что есть 10 тем и 1 тема в документе. Назначаются ли эти категории людьми, и включены ли они как часть обучающих текстов или тегов в алгоритм Doc2Vec? (Было бы разумно включить его, в зависимости от того, из чего состоят ваши конечные цели и оценки схожести документов.)

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

Как предлагает @ adnan-s в другом ответе, также может быть стоит попробовать более простые представления документов `` мешок слов '' на основе подсчета, в том числе потенциально на словарных n-граммах или даже символьных n-граммах, или взвешенных по TF-IDF .

Если у вас есть адекватные слова-векторы, полученные на основе ваших данных или из других совместимых источников, мера «Расстояние перемещения слов» может быть еще одним интересным способом вычисления попарного сходства. (Однако вычисление между текстами из многих сотен слов может оказаться слишком дорогостоящим - работа с более короткими текстами выполняется намного быстрее.)

person gojomo    schedule 03.03.2020
comment
Я оцениваю модель, сравнивая соответствие меток между документом из обучающего набора и наиболее похожим на него. Результаты составляют 40-50%, а удовлетворительная оценка - не менее 70%. Это единственная причина появления этикеток. Я читал, что Doc2Vec и подобные модели, как вы говорите, предназначены для более крупных наборов данных, но на данный момент я не могу найти больше данных из-за специфики набора данных и дальнейшего использования модели. - person DataDoge; 07.03.2020

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

Вот ссылка, по которой вы можете загрузить модель DBOW (1,4 ГБ), обученную на английском языке. Страницы Википедии, работающие с 300-мерными векторами документов. Я получил ссылку из репозитория jhlau / doc2vec GitHub. Скачав модель, вы можете использовать ее следующим образом:

from gensim.models import Doc2Vec

# load the downloaded model
model_path = "enwiki_dbow/doc2vec.bin"
model = Doc2Vec.load(model_path)

# infer vector for your document
doc_vector = model.infer_vector(doc_words)

Где doc_words - это список слов в вашем документе.

Однако это может не сработать для вас, если ваши документы очень специфичны. Но вы все равно можете попробовать.

person Jan Koci    schedule 10.04.2020