python - 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()。在调用函数之前,是否有推荐的方法来规范化数据(我们的词嵌入)?
解决方案
推荐阅读
- amazon-web-services - 带有自定义 AMI 的 AWS ElasticBeanstalk
- google-apps-script - 如何从谷歌驱动应用脚本中的发布请求接收--data-binary
- azure-ad-b2c - 将现有用户迁移到 Azure AD b2c
- docker - Docker容器中的数据和主机卷之间的区别?
- java - 如何在回收站视图中只选择一个开关?
- elasticsearch - 无法使用 Elasticsearch apm 代理选项启动 Weblogic
- php - 为什么标头功能无法正常工作?
- android - 为什么我不能通过电话调试我的 Android 项目?
- python - Jinja2迭代包含字典列表模板错误的字典
- java - HttpClient 超时,但服务器可用并且工作正常