J'ai plusieurs documents contenant plusieurs phrases. Je souhaite utiliser doc2vec pour regrouper (par exemple k-means) les vecteurs de phrase en utilisant sklearn.Clustering de phrases Doc2Vec
Ainsi, l'idée est que des phrases similaires sont regroupées en plusieurs groupes. Cependant, il n'est pas clair pour moi si je dois former chaque document séparément et ensuite utiliser un algorithme de clustering sur les vecteurs de phrase. Ou, si je pouvais déduire un vecteur de phrase de doc2vec sans entraîner chaque nouvelle phrase.
En ce moment, c'est un extrait de mon code:
sentenceLabeled = []
for sentenceID, sentence in enumerate(example_sentences):
sentenceL = TaggedDocument(words=sentence.split(), tags = ['SENT_%s' %sentenceID])
sentenceLabeled.append(sentenceL)
model = Doc2Vec(size=300, window=10, min_count=0, workers=11, alpha=0.025,
min_alpha=0.025)
model.build_vocab(sentenceLabeled)
for epoch in range(20):
model.train(sentenceLabeled)
model.alpha -= 0.002 # decrease the learning rate
model.min_alpha = model.alpha # fix the learning rate, no decay
textVect = model.docvecs.doctag_syn0
## K-means ##
num_clusters = 3
km = KMeans(n_clusters=num_clusters)
km.fit(textVect)
clusters = km.labels_.tolist()
## Print Sentence Clusters ##
cluster_info = {'sentence': example_sentences, 'cluster' : clusters}
sentenceDF = pd.DataFrame(cluster_info, index=[clusters], columns = ['sentence','cluster'])
for num in range(num_clusters):
print()
print("Sentence cluster %d: " %int(num+1), end='')
print()
for sentence in sentenceDF.ix[num]['sentence'].values.tolist():
print(' %s ' %sentence, end='')
print()
print()
En fait, ce que je fais est en ce moment une formation sur chaque phrase étiquetée dans le document. Cependant, si vous avez l'idée que cela pourrait être fait d'une manière plus simple.
Éventuellement, les phrases contenant des mots similaires doivent être regroupées et imprimées. À ce stade, la formation de chaque document séparément, ne révèle clairement aucune logique au sein des groupes.
J'espère que quelqu'un peut me diriger dans la bonne direction. Merci.
Je sais que c'est un peu en retard, mais vous pouvez essayer d'autres techniques de clustering telles que la classification hiérarchique ainsi que DBSCAN pour voir si améliore tout. Si quelque chose d'autre a fonctionné pour vous, s'il vous plaît partager cela aussi pour le bénéfice de tout le monde. Merci! – Enthusiast