基于词嵌入的主成分分析

2024-04-24 03:36:54 发布

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

我试着选取一组句子,使用单词“duck”的多种含义,并使用BERT计算每个“duck”的单词嵌入。每个单词嵌入是一个大约780个元素的向量,因此我使用PCA将维度减少到二维点。我希望在图中具有“duck”相同含义的单词会聚集在一起,但是没有可识别的簇。我不确定我在获取单词嵌入或对其执行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()。在调用函数之前,是否有一种规范化数据(我们的单词嵌入)的推荐方法


Tags: 方法textidstorch单词indexedtokenizertensor