首页 > 解决方案 > BERT 词嵌入的 PCA

问题描述

我正在尝试使用一组使用“鸭子”一词的多种含义的句子,并使用 BERT 计算每个“鸭子”的词嵌入。每个词嵌入是一个大约 780 个元素的向量,所以我使用 PCA 将维度减少到二维点。我希望与“鸭子”具有相同含义的单词将在图中聚集在一起,但没有可识别的集群。我不确定在获取词嵌入或对它们执行 PCA 时是否做错了什么。

我获取词嵌入的方法:

  tokenized_text = tokenizer.tokenize(marked_text)
  indexed_tokens = tokenizer.convert_tokens_to_ids(tokenized_text)
  segments_ids = [0] * len(tokenized_text)
  tokens_tensor = torch.tensor([indexed_tokens])
  segments_tensors = torch.tensor([segments_ids])
  with torch.no_grad():
    outputs = model(tokens_tensor, token_type_ids=segments_tensors)
    hidden_states = outputs[0]

我们使用 12 个隐藏层的最后一层来获得嵌入。

对于 PCA,我们使用 sklearn.decomposition 并调用 pca.fit_transform()。在调用函数之前,是否有推荐的方法来规范化数据(我们的词嵌入)?

标签: pythonpcabert-language-model

解决方案


推荐阅读