Какие дополнительные функции следует использовать, кроме встраивания Doc2Ve c для сходства документов? - PullRequest
0 голосов
/ 03 марта 2020

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

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

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

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

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

Если я не получу хороших результатов с этой моделью, Я опробую более простые, упомянутые @Adnan S @gojomo, такие как TF-IDF, Расстояние Word Mover, Мешок слов, просто предполагая, что я получу лучшие результаты, используя Doc2Ve c.

Ответы [ 3 ]

1 голос
/ 03 марта 2020

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

Вот статья в блоге с более подробной информацией и do c страница для sklearn .

0 голосов
/ 11 апреля 2020

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

Вот ссылка , где вы можете загрузить модель DBOW (1,4 ГБ), обученную на страницах Википедии Engli sh, работающую с 300-мерными векторами документов. Я получил ссылку из репозитория jhlau / doc2ve c 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 - список слов в вашем документе.

Это, однако, может не работать для вас, если ваши документы очень точны c. Но вы все еще можете попробовать.

0 голосов
/ 03 марта 2020

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

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

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

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

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

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

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

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

...