我有一组文档(3000),每个文档都包含简短说明。我想使用Word2Vec模型来查看是否可以根据说明对这些文档进行聚类。
我正在按照以下方式进行操作,但是我不确定这是否是一种“好的”方式。希望得到反馈。
我正在使用Google训练有素的w2v模型。
wv = gensim.models.KeyedVectors.load_word2vec_format('GoogleNews-vectors-negative300.bin.gz',binary=True,encoding="ISO-8859-1", limit = 100000)
每个文档都被拆分成单词,删除了停用词,并且我也使用了词干。
我最初的想法是获取每个文档描述中每个单词的单词向量,对其取平均,然后基于此进行聚类。
doc2vecs = []
for i in range(0, len(documents_df['Name'])):
vec = [0 for k in range(300)]
for j in range(0, len(documents_df['Description'][i])):
if documents_df['Description'][i][j] in wv:
vec += wv[documents_df['Description'][i][j]]
doc2vecs.append(vec/300)
然后我使用]寻找相似之处>
similarities = squareform(pdist(doc2vecs, 'cosine'))
将返回
doc2vec
中每个向量之间的余弦矩阵。
然后我尝试将文档聚类。
num_clusters = 2 km = cluster.KMeans(n_clusters=num_clusters) km.fit(doc2vecs)
所以基本上我想知道的是:
这种对文档中每个单词的平均单词向量进行聚类的方法是否是对文档进行聚类的合理方法?
我有一组文档(3000),每个文档都包含简短说明。我想使用Word2Vec模型来查看是否可以根据说明对这些文档进行聚类。我正在...
[2019年,除非您有严重的资源限制,否则不需要通过平均词嵌入来矢量化文档。您可以使用通用语句编码器来矢量化文档in a few lines of code。