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)
Ho avuto AttributeError: 'list' oggetto non ha attributo 'parole', perché il i documenti di input per Doc2vec() non erano nel formato LabeledSentence corretto. Spero che questo esempio sottostante ti aiuti a capire il formato.
documents = LabeledSentence(words=[u'some', u'words', u'here'], labels=[u'SENT_1'])
Maggiori dettagli sono qui: http://rare-technologies.com/doc2vec-tutorial/ Tuttavia, ho risolto il problema prendendo i dati di input da file usando TaggedLineDocument().
Formato file: un documento = una riga = un oggetto TaggedDocument. Le parole devono essere già preelaborate e separate da spazi bianchi, i tag vengono creati automaticamente dal numero di riga del documento.
sentences=doc2vec.TaggedLineDocument(file_path)
model = doc2vec.Doc2Vec(sentences,size = 100, window = 300, min_count = 10, workers=4)
Per ottenere il documento di vettore: È possibile utilizzare docvecs. Maggiori dettagli qui: https://radimrehurek.com/gensim/models/doc2vec.html#gensim.models.doc2vec.TaggedDocument
docvec = model.docvecs[99]
dove 99 è l'ID del documento di cui vogliamo vettoriale. Se le etichette sono in formato intero (per impostazione predefinita, se carichi utilizzando TaggedLineDocument()), utilizza direttamente l'ID intero come ho fatto io. Se le etichette sono in formato stringa, utilizzare "SENT_99". È simile a Word2vec
solo per confermare, dopo model_dm formazione e model_dbow come mostrato nella tutorial (https: //linanqiu.github.io/2015/05/20/word2vec-sentiment /) Ricevo il vettore del documento per il primo documento di formazione usando model_dm.docvecs ['TRAIN_0']. È corretto? – Sangram
sì che è corretto e potresti quindi confrontare più documenti con una funzione di distanza, ecc. –
I miei documenti di formazione più di 5m, tuttavia quando uso docvec = model.docvecs [11], ha mostrato che l'11 è il nostro limite per l'asse 0 con dimensione 10. Ho controllato la dimensione del docvecs, solo 10, si supponeva che fosse più di 5m – Kun