python - spaCy下使用BERT获取句子嵌入
问题描述
我正在尝试使用 BERT 来获取句子嵌入。这是我的做法:
import spacy
nlp = spacy.load("en_core_web_trf")
nlp("The quick brown fox jumps over the lazy dog").vector
这会输出一个空向量!!
array([], dtype=float32)
我错过了什么吗?
解决方案
变形金刚与其他 spacy 模型有点不同,但你可以使用
doc._.trf_data.tensors[1]
.
单个 BPE(字节对编码)令牌块的向量位于doc._.trf_data.tensors[0]
. 请注意,我使用术语token-pieces 而不是tokens,以防止 spacy 标记和 BPE 标记器生成的标记之间的混淆。
例如,在我们的例子中,spacy-token 是:
for i, spacy_tok in enumerate(doc):
print(f"spacy-token {i + 1}: {spacy_tok.text}")
spacy-token 1: The
spacy-token 2: quick
spacy-token 3: brown
spacy-token 4: fox
spacy-token 5: jumps
spacy-token 6: over
spacy-token 7: the
spacy-token 8: lazy
spacy-token 9: dog
令牌是:
for i, tok_piece in enumerate(doc._.trf_data.tokens['input_texts'][0]):
print(f"token-piece {i + 1}: {tok_piece}")
token-piece 1: <s>
token-piece 2: The
token-piece 3: Ġquick
token-piece 4: Ġbrown
token-piece 5: Ġfox
token-piece 6: Ġjumps
token-piece 7: Ġover
token-piece 8: Ġthe
token-piece 9: Ġlazy
token-piece 10: Ġdog
token-piece 11: </s>
推荐阅读
- reactjs - 如何在 React Apollo 的查询变量中传递全局函数值
- aspnetboilerplate - 异常运行测试“无法注册 IUserAppService”
- ruby-on-rails - 尝试使用 db:create 时出现“错误:Rake 中止”
- firefox - Kibana - 切换仪表板后删除的过滤器重新出现
- python - 如何从数据框中提取反义词并将其放入另一个使用 wordnet python
- c# - 如何预热 EF Core?
- kiwi-tcms - 将 Kiwi TCMS 从 v6.3 升级到 v6.4
- python - 树莓派项目题控机
- java - Spring Boot OneToOne 仍然加载相同的数据
- swift - UserDefaults 保存字符串 -> 尝试将非属性列表对象(函数)设置为 NSUserDefaults/CFPreferences