Ist es möglich, re-Zug eine word2vec Modell (z.B. GoogleNews-Vektoren-negative300.bin) aus einem corpus von Sätzen in python?
Ich bin über die vor-geschult Google news-Datensatz für die erste word-Vektoren durch Verwendung von Gensim-Bibliothek in python
model = Word2Vec.load_word2vec_format('GoogleNews-vectors-negative300.bin', binary=True)
Nach dem laden des Modells bin ich konvertieren training Satz Wörter in Vektoren
#reading all sentences from training file
with open('restaurantSentences', 'r') as infile:
x_train = infile.readlines()
#cleaning sentences
x_train = [review_to_wordlist(review,remove_stopwords=True) for review in x_train]
train_vecs = np.concatenate([buildWordVector(z, n_dim) for z in x_train])
Während word2Vec Prozess, den ich bekommen eine Menge von Fehlern, die für die Worte in meinem Korpus, die nicht in das Modell. Problem ist, wie kann ich die Umschulung bereits trainierte Modell (e.g GoogleNews-Vektoren-negative300.bin'), um word-Vektoren für die fehlenden Worte.
Folgende ist, was ich versucht habe:
Ausgebildet ist, ein neues Modell von Ausbildung Sätzen, die ich hatte
# Set values for various parameters
num_features = 300 # Word vector dimensionality
min_word_count = 10 # Minimum word count
num_workers = 4 # Number of threads to run in parallel
context = 10 # Context window size
downsampling = 1e-3 # Downsample setting for frequent words
sentences = gensim.models.word2vec.LineSentence("restaurantSentences")
# Initialize and train the model (this will take some time)
print "Training model..."
model = gensim.models.Word2Vec(sentences, workers=num_workers,size=num_features, min_count = min_word_count,
window = context, sample = downsampling)
model.build_vocab(sentences)
model.train(sentences)
model.n_similarity(["food"], ["rice"])
... Es funktionierte! aber das problem ist, dass ich eine wirklich kleine dataset und weniger Ressourcen für die Ausbildung einer großen Modell.
Zweite ist, dass ich auf der Suche bin, ist das erweitern der bereits trainierte Modell wie GoogleNews-Vektoren-negative300.bin.
model = Word2Vec.load_word2vec_format('GoogleNews-vectors-negative300.bin', binary=True)
sentences = gensim.models.word2vec.LineSentence("restaurantSentences")
model.train(sentences)
Ist es möglich, und ist das ein guter Weg, um zu verwenden, bitte helfen Sie mir
- Mögliche Duplikate von Update gensim word2vec model
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist, wie ich das technisch gelöst ist das Problem:
Vorbereitung der input-Daten mit dem Satz iterierbar von Radim Rehurek: https://rare-technologies.com/word2vec-tutorial/
Den Modell-Einstellungen
Schneidet die Vokabeln mit der google-Wort-Vektoren
Schließlich die Ausführung des Modells und Aktualisierung
Ein Hinweis der Warnung: Von einem materiellen Standpunkt aus betrachtet, ist es natürlich sehr fraglich, ob ein corpus wahrscheinlich sehr klein ist, kann tatsächlich "verbessern" das Google wordvectors ausgebildet, die auf einem massiven Korpus...
ist es möglich, wenn die Modell-builder nicht abschließen das Modell der Ausbildung .
in python ist es:
wenn das Modell nicht abzuschließen, ist es eine perfekte Weg, um Modell mit großen datasets.
Einige Leute arbeiten schon an der Erweiterung gensim zu ermöglichen, das online-training.
Ein paar GitHub pull-Anforderungen, die Sie anschauen wollen, die für den Fortschritt auf, dass der Aufwand:
Sieht es aus wie diese Verbesserung konnte damit die Aktualisierung GoogleNews-Vektoren-negative300.bin Modell.