предложения, которые вы могли бы вывести infer_vector (), используя вашу модель, а затем определить, к какому кластеру он относится в вашей кластеризации sklearn

я есть несколько документов, которые содержат несколько предложений. Я хочу использоватьdoc2vec кластеризовать (например, k-means) векторы предложений, используяsklearn.

Таким образом, идея заключается в том, что подобные предложения сгруппированы в несколько кластеров. Тем не менее, мне не ясно, нужно ли обучать каждый отдельный документ отдельно, а затем использовать алгоритм кластеризации по векторам предложений. Или, если бы я мог вывести вектор предложения из doc2vec, не тренируя каждое новое предложение.

Прямо сейчас это фрагмент моего кода:

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()

По сути, то, что я сейчас делаю, - это тренировка по каждому помеченному предложению в документе. Однако, если есть идея, что это можно сделать более простым способом.

В конце концов предложения, содержащие похожие слова, должны быть сгруппированы вместе и напечатаны. На данный момент обучение каждого документа в отдельности, не ясно показывает какую-либо логику в кластерах.

Надеюсь, кто-то может направить меня в правильном направлении. Благодарю.

Ответы на вопрос(2)

Ваш ответ на вопрос