Boy*_*123 5 python text-mining gensim scikit-learn doc2vec
我有多个包含多个句子的文档.我想使用doc2vec通过使用集群(例如k-均值)句子矢量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()
Run Code Online (Sandbox Code Playgroud)
基本上,我现在正在做的是对文件中的每个标记句子进行培训.但是,如果有想法可以以更简单的方式完成.
最终,包含相似单词的句子应该聚集在一起并打印出来.此时单独训练每个文档,并未清楚地揭示集群内的任何逻辑.
希望有人可以引导我朝着正确的方向前进.谢谢.
| 归档时间: |
|
| 查看次数: |
4712 次 |
| 最近记录: |