如何从Word2Vec模型中提取向量进行聚类

2024-10-02 08:24:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个我训练过的word2vec模型。该模型基于约95000字的语料库。我只想选择语料库中那些词,例如,形容词。为此,假设我有adj,语料库中所有形容词的列表。我想让它们从所有的语料库中保留它们的嵌入,但我想提取这些向量并对形容词进行某种聚类分析。你知道吗

据我所知,如果我有X,这是来自word2vec模型的词汇表,我可以像这样提取所有形容词的向量

adj = [ 'x', 'y', 'z']
X = model1[model1.wv.vocab]
adjvsm = []
for i in adj:
    adjvsm.append([i, X[i]])

这将创建以下列表:

adjsvm[1]
['x', array([ 1.0772455 ,  0.481113  , -0.19076753, -0.31512445,  2.700769], dtype=float32)]

通常,如果我想对word2vec模型进行集群,我会执行以下操作:

kclusterer = KMeansClusterer(some_number_of_cluster, distance=nltk.cluster.util.cosine_distance, repeats=25)

assigned_clusters = kclusterer.cluster(X, assign_clusters=True)
print(assigned_clusters)

如果我指定一个二进制集群,它将生成如下列表:

x = 1
y = 0
z = 0

当然,这是行不通的。我发现的一个问题是,我正在从numpy数组中提取数据并将其放入一个列表中,而kclustering不使用这个列表。它喜欢numpy数组。你知道吗

我的问题是如何从word2vec模型中提取一组向量(基于单词ID列表),同时保持它们为numpy数组,并保持单词ID(例如“y”)和嵌入之间的链接?你知道吗


Tags: 模型numpy列表集群word2vec数组向量clusters
1条回答
网友
1楼 · 发布于 2024-10-02 08:24:59

你已经知道答案了。构建numpy数组。你知道吗

X = np.array([model1[word] for word in adj])

也许你甚至可以简单地

X = model1[adj]

像您那样构建混合数据数组是无效的。你知道吗

相关问题 更多 >

    热门问题