doc=["This is a sentence","This is another sentence"]
documents=[doc.strip().split(" ") for doc in doc1 ]
model = doc2vec.Doc2Vec(documents, size = 100, window = 300, min_count = 10, workers=4)
Я получил AttributeError: «список» объект не имеет атрибута «слова», потому что входные документы в Doc2vec() не были в правильном формате LabeledSentence. Надеюсь, что этот ниже пример поможет вам понять формат.
documents = LabeledSentence(words=[u'some', u'words', u'here'], labels=[u'SENT_1'])
Подробнее здесь: http://rare-technologies.com/doc2vec-tutorial/ Однако, я решил эту проблему, принимая входные данные из файла с помощью TaggedLineDocument().
Формат файла: один документ = одна строка = один объект TaggedDocument. Слова должны быть предварительно обработаны и разделены пробелами, тэги автоматически создаются из номера строки документа.
sentences=doc2vec.TaggedLineDocument(file_path)
model = doc2vec.Doc2Vec(sentences,size = 100, window = 300, min_count = 10, workers=4)
Чтобы получить вектор документа: Вы можете использовать docvecs. Подробнее здесь: https://radimrehurek.com/gensim/models/doc2vec.html#gensim.models.doc2vec.TaggedDocument
docvec = model.docvecs[99]
где 99 является идентификатор документа вектор которого мы хотим. Если метки находятся в целочисленном формате (по умолчанию, если вы загружаете с помощью TaggedLineDocument()), прямо используйте целочисленный идентификатор, как я. Если метки находятся в строчном формате, используйте «SENT_99». Это похоже на Word2vec
Просто, чтобы подтвердить, после тренировки model_dm и model_dbow, как показано в учебнике (https: //linanqiu.github.io/2015/05/20/word2vec-sentiment /) Я возвращаю вектор документа для первого учебного документа, используя model_dm.docvecs ['TRAIN_0']. Это верно? – Sangram
да, это правильно, и тогда вы можете сравнить несколько документов с функцией расстояния и т. Д. –
Мои учебные документы более 5 м, однако, когда я использую docvec = model.docvecs [11], он показал, что 11 является нашей границей для оси 0 с размером 10. Я проверил размер docvecs, только 10, он должен был более чем 5 миллионов – Kun