如何使用 BERT 获取句子中短语的上下文嵌入?
How to obtain contextual embedding for a phrase in a sentence using BERT?
我使用 https://github.com/UKPLab/sentence-transformers 从 BERT 获取句子嵌入。使用它我可以获得句子或短语的嵌入。例如:我可以嵌入这样的句子 "system not working given to service center but no response on replacement"。我还可以嵌入像 "no response".
这样的短语
但是我想在“系统无法工作给服务中心但没有响应更换”的上下文中嵌入“无响应” =23=]。有关如何获得此信息的任何指示都会有所帮助。提前致谢。
我正在尝试这样做,因为“无响应” 短语在不同的句子中有不同的上下文。例如下面两句中“no response”的上下文是不同的:
“向服务中心提供的系统无法正常工作,但更换后无响应”
“我们尝试对患者进行恢复程序,但没有任何反应”
BERT returns 每个输入子词一个向量,因此您需要获取与您感兴趣的短语相对应的向量。
通常所说的sentence embeddings就是在用BERT处理之前在句子前面加上技术符号[CLS]
的embedding;或上下文子词向量的平均值。因为 [CLS]
向量必然覆盖整个句子,所以不能仅针对一个子短语获取它,但可以使用该短语的子词嵌入的平均值。
您正在使用的软件包 sentence-transformers
具有非常简单的用户友好性 API,但恐怕它不够强大,无法完成这项工作。我建议使用 Huggingface's Transormers。这个包可以让你查看句子是如何被标记化的,从而获得相应的向量。
为了获得更好的短语嵌入,您可以尝试 Phrase-BERT for phrase embeddings。
- 论文:Wang、Shufan、Laure Thompson 和 Mohit Iyyer。 “Phrase-BERT: Improved Phrase Embeddings from BERT with an Application to Corpus Exploration.”EMNLP 2021.
- Code.
该论文还提到了相关的先前工作,例如SentBERT 和 SpanBERT。
虽然我相信,但不是有条件的。
我使用 https://github.com/UKPLab/sentence-transformers 从 BERT 获取句子嵌入。使用它我可以获得句子或短语的嵌入。例如:我可以嵌入这样的句子 "system not working given to service center but no response on replacement"。我还可以嵌入像 "no response".
这样的短语但是我想在“系统无法工作给服务中心但没有响应更换”的上下文中嵌入“无响应” =23=]。有关如何获得此信息的任何指示都会有所帮助。提前致谢。
我正在尝试这样做,因为“无响应” 短语在不同的句子中有不同的上下文。例如下面两句中“no response”的上下文是不同的: “向服务中心提供的系统无法正常工作,但更换后无响应” “我们尝试对患者进行恢复程序,但没有任何反应”
BERT returns 每个输入子词一个向量,因此您需要获取与您感兴趣的短语相对应的向量。
通常所说的sentence embeddings就是在用BERT处理之前在句子前面加上技术符号[CLS]
的embedding;或上下文子词向量的平均值。因为 [CLS]
向量必然覆盖整个句子,所以不能仅针对一个子短语获取它,但可以使用该短语的子词嵌入的平均值。
您正在使用的软件包 sentence-transformers
具有非常简单的用户友好性 API,但恐怕它不够强大,无法完成这项工作。我建议使用 Huggingface's Transormers。这个包可以让你查看句子是如何被标记化的,从而获得相应的向量。
为了获得更好的短语嵌入,您可以尝试 Phrase-BERT for phrase embeddings。
- 论文:Wang、Shufan、Laure Thompson 和 Mohit Iyyer。 “Phrase-BERT: Improved Phrase Embeddings from BERT with an Application to Corpus Exploration.”EMNLP 2021.
- Code.
该论文还提到了相关的先前工作,例如SentBERT 和 SpanBERT。
虽然我相信,但不是有条件的。