使用 word2vec 和 Kmeans 进行聚类
Posted
技术标签:
【中文标题】使用 word2vec 和 Kmeans 进行聚类【英文标题】:Clustering with word2vec and Kmeans 【发布时间】:2019-01-06 11:55:49 【问题描述】:我正在尝试,但它不起作用。
这是我的部分数据:
demain fera chaud à paris pas marseille
mauvais exemple ce n est pas un cliché mais il faut comprendre pourquoi aussi
il y a plus de travail à Paris c est d ailleurs pour cette raison qu autant de gens",
mais s il y a plus de travail, il y a aussi plus de concurrence
s agglutinent autour de la capitale
脚本:
import nltk
import pandas
import pprint
import numpy as np
import pandas as pd
from sklearn import cluster
from sklearn import metrics
from gensim.models import Word2Vec
from nltk.cluster import KMeansClusterer
from sklearn.metrics import adjusted_rand_score
from sklearn.metrics.pairwise import cosine_similarity
from sklearn.decomposition import NMF
dataset = pandas.read_csv('text.csv', encoding = 'utf-8')
comments = dataset['comments']
verbatim_list = no_duplicate.values.tolist()
min_count = 2
size = 50
window = 4
model = Word2Vec(verbatim_list, min_count=min_count, size=size, window=window)
X = model[model.vocab]
clusters_number = 28
kclusterer = KMeansClusterer(clusters_number, distance=nltk.cluster.util.cosine_distance, repeats=25)
assigned_clusters = kclusterer.cluster(X, assign_clusters=True)
words = list(model.vocab)
for i, word in enumerate(words):
print (word + ":" + str(assigned_clusters[i]))
kmeans = cluster.KMeans(n_clusters = clusters_number)
kmeans.fit(X)
labels = kmeans.labels_
centroids = kmeans.cluster_centers_
clusters =
for commentaires, label in zip(verbatim_list, labels):
try:
clusters[str(label)].append(verbatim)
except:
clusters[str(label)] = [verbatim]
pprint.pprint(clusters)
输出:
Traceback(最近一次调用最后一次):
文件“kmwv.py”,第 37 行,在
X = 模型[model.vocab]
AttributeError: 'Word2Vec' 对象没有属性 'vocab'
我需要一个适用于 word2vec 的集群,但每次我尝试某些东西时,都会出现此错误。有没有办法用 word2vec 进行聚类?
【问题讨论】:
嗨!这有帮助吗:***.com/questions/42517435/… ? 【参考方案1】:正如大卫所说,试试这个:
X = model[model.wv.vocab]
【讨论】:
有没有办法使用 word2vec 库对句子进行聚类?而不仅仅是文字?有什么资源吗?以上是关于使用 word2vec 和 Kmeans 进行聚类的主要内容,如果未能解决你的问题,请参考以下文章
使用 KMeans 算法和 Python 对地理位置坐标(纬度、经度对)进行聚类
在 python (sklearn) 中使用 Affinity Propagation 对 word2vec 向量进行聚类