Не похоже, что в вашем коде сходства есть какие-либо очевидные ошибки, но учтите, что, поскольку вы не указали параметр epochs
при создании модели, он будет внутренне настроен на использование только 5 проходов при выводе.(Обычная работа Doc2Vec использует 10-20 и более, и иногда вывод может принести пользу больше, особенно для небольших текстов.)
Кроме того, ваш вопрос не показывает ваш обучающий код - и многие примеры в Интернете включают вопиющие ошибкив обработке epochs
и alpha
.
Я не могу прочитать ваши тексты имен, которые, я полагаю, являются русскими, и, возможно, названия компаний?Но, как в моем комментарии, Doc2Vec
действительно лучше всего работает с более длинными текстами.Я ожидаю, что это будет полезно для небольших текстов, если есть полезные разнообразные корреляции между токенами, которые также отражают вид «сходства», которое вы ищете.
Но не ясно, какое сходство вы ищете.Если это чисто поверхностное / морфологическое, вы можете анализировать имена по фрагментным фрагментам - символам в n-граммах - вместо слов, разделенных пробелами.Если это более тонкое сходство целей, отрасли или общественного восприятия, то метаданные, отличные от литеральных имен, могут быть более полезными, например:
- использование имен на естественном языкеконтексты
- самоописания сущностей, в произвольной форме или по категориям в контролируемые таксономии
- описания сущностей сторонних организаций
Сохранение даже появляющихся токеновтолько один раз - min_count=1
- также может ослабить слова-векторы / документы-документы, поскольку существует мало обобщающих значений, которые можно извлечь из, вероятно, уникальных вхождений, но совокупное появление всех этих редких слов вносит шумное вмешательство в обучениедругие окружающие более распространенные слова.Для больших корпусов на естественном языке с большим количеством примеров соответствующих словарных токенов, часто увеличение min_count
может улучшить качество модели.