我正在使用由嵌入层和LSTM组成的模型以pytorch + torchtext进行序列标记。我已经把句子标记了。
如果我使用自训练或其他预训练的词嵌入向量,这很简单。
但是,如果我使用Huggingface转换器BertTokenizer.from_pretrained
和BertModel.from_pretrained
,则分别在句子的开头和结尾添加一个'[CLS]'
和'[SEP]'
标记。因此,模型的输出将变成一个比标签/目标序列长两个元素的序列。
我不确定的是:
BertModel
是否需要这两个标签才能“正确”嵌入句子的每个标记?答案 0 :(得分:1)
是的,BertModel
需要它们,因为如果不添加这些特殊符号,输出表示将有所不同。但是,根据我的经验,如果您在标签任务上微调BertModel
而未添加[CLS]
和[SEP]
标记,那么您可能看不到明显的不同。如果您使用BertModel
提取固定单词特征,则最好添加这些特殊符号。
是的,您可以将那些特殊符号嵌入其中。实际上,这是序列标记或标记任务的一般想法。
我建议看一些使用BERT进行序列标记或标记的示例,以使您对建模决策充满信心。您可以使用Huggingface转换器here找到NER标记示例。