我有一个由转换器和 NER 组件组成的预训练管道,我正在尝试创建一个实体链接器,该实体链接器能够使用转换器生成的嵌入表示,而不是使用 CNN。 我将链接器添加为
entity_linker = nlp.add_pipe("entity_linker",config = {
"labels_discard": [],
"n_sents": 0,
"incl_prior": True,
"incl_context": True,
"model": {
"@architectures": "spacy.EntityLinker.v2",
"tok2vec": {
"@architectures" : "spacy-transformers.TransformerListener.v1",
"pooling" : {"@layers":"reduce_mean.v1"},
"upstream" : "*"
},
"nO": 768
},
"entity_vector_length": 768,
"get_candidates": {'@misc': 'spacy.CandidateGenerator.v1'},
"threshold": None,
})
但我收到维度未设置错误
File "/home/blanco/wiki_kb/.venv/lib/python3.9/site-packages/spacy_transformers/layers/listener.py", line 64, in forward
width = model.get_dim("nO")
File "/home/blanco/wiki_kb/.venv/lib/python3.9/site-packages/thinc/model.py", line 175, in get_dim
raise ValueError(err)ValueError: Cannot get dimension 'nO' for model 'transformer-listener': value unset
在网上查找时,我发现最后一个问题通常发生在您尝试在冻结变压器的同时微调管道中的延迟组件时,但就我而言,我还没有完全接近那个点。 我的最终目标是拥有一个链接器,该链接器对实体和上下文使用转换器嵌入,并且(可能学习线性层以重新投影到最低维度,或者在根本没有训练的情况下)比较来自知识库的嵌入,该知识库的嵌入表示是使用相同的预训练管道创建。
在此先感谢所有回复和帮助我的人
当前环境