我试着选取一组句子,使用单词“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()。在调用函数之前,是否有一种规范化数据(我们的单词嵌入)的推荐方法
目前没有回答
相关问题 更多 >
编程相关推荐