如何基于Word2Vec模型正确地对文档名称进行聚类并在文档之间找到相似之处?

问题描述 投票:0回答:1

我有一组文档(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模型来查看是否可以根据说明对这些文档进行聚类。我正在...

python nlp cluster-analysis word2vec
1个回答
0
投票

[2019年,除非您有严重的资源限制,否则不需要通过平均词嵌入来矢量化文档。您可以使用通用语句编码器来矢量化文档in a few lines of code

© www.soinside.com 2019 - 2024. All rights reserved.