我正在尝试使用一组使用“鸭子”一词的多种含义的句子,并使用BERT计算每个“鸭子”的词嵌入。每个单词的嵌入都是大约780个元素的向量,因此我正在使用PCA将尺寸减小到2维点。我希望具有“鸭”含义的单词将在图表中聚集在一起,但是没有可识别的聚集。我不确定在获取单词嵌入或对其执行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()。在调用函数之前,是否有建议的方法来规范化数据(我们的单词嵌入)?