gensim: у объекта 'Doc2Vec' нет атрибута 'intersect_word2vec_format', когда я загружаю предварительно обученную модель Google word2vec - PullRequest
0 голосов
/ 08 мая 2018

Я получаю эту ошибку, когда загружаю предварительно обученный google word2vec для обучения модели doc2vec своими собственными данными. Вот часть моего кода:

model_dm=doc2vec.Doc2Vec(dm=1,dbow_words=1,vector_size=400,window=8,workers=4)
model_dm.build_vocab(document)
model_dm.intersect_word2vec_format('home/xxw/Downloads/GoogleNews-vectors-negative300.bin',binary=True)
model_dm.train(document)

Но я получил эту ошибку:

Объект 'Doc2Vec' не имеет атрибута 'intersect_word2vec_format'

Можете ли вы помочь мне с ошибкой? Я получаю модель Google от https://s3.amazonaws.com/dl4j-distribution/GoogleNews-vectors-negative300.bin.gz,, и мой gensim является последней версией, я думаю.

1 Ответ

0 голосов
/ 08 мая 2018

Недавний рефакторинг, сделанный Doc2Vec, больше не делит суперкласс с этим методом. Вы могли бы вместо этого вызвать метод для вашего model_dm.wv объекта, но я не уверен. В противном случае вы можете посмотреть на исходный код и имитировать код для достижения того же эффекта, если вам действительно нужен этот шаг.

Но учтите, что Doc2Vec не нужны векторы слов в качестве входных данных: он может узнать все, что ему нужно, из ваших собственных тренировочных данных. Поможет ли вектор слов из других мест, зависит от множества факторов - и чем больше ваши собственные данные или чем они более уникальны, тем меньше предварительно загруженных векторов из других источников могут помочь или даже иметь какой-либо остаточный эффект при вашей собственной тренировке готово.

Другие примечания о вашей очевидной настройке:

  • dbow_words=1 не будет действовать в режиме dm=1 - этот режим уже изначально обучает слова-векторы. (Он действует только в режиме dm=0 DBOW, где он добавляет дополнительное чередованное обучение слов, если вам нужны словесные векторы. Часто простой DBOW, без обучения слов-векторов, является быстрым и эффективным вариантом.)

  • В последних версиях gensim требуется больше аргументов для обучения, и обратите внимание, что типичная опубликованная работа с этим алгоритмом использует 10-20 (или иногда больше) пропусков данных (что можно указать для train() через epochs аргумент), а не значение по умолчанию (в некоторых версиях gensim) 5.

...