Nlp Roberta模型预处理文本中的混淆

Nlp Roberta模型预处理文本中的混淆,nlp,pytorch,huggingface-transformers,bert-language-model,Nlp,Pytorch,Huggingface Transformers,Bert Language Model,我想应用Roberta模型进行文本相似性分析。给定一对句子,输入的格式应为ab。我想出了两种可能的方法来生成输入ID,即 (a) 来自transformers进口自动煮锅,AutoModel 标记器=来自预训练('roberta-base')的自动烹饪器 list1=tokenizer.encode('手上非常严重的疼痛') list2=标记器.encode('上肢麻木') 顺序=列表1+[2]+列表2[1:] 在这种情况下,序列是[01278381412400111420,2,2234417

我想应用Roberta模型进行文本相似性分析。给定一对句子,输入的格式应为
ab
。我想出了两种可能的方法来生成输入ID,即

(a)

来自transformers进口自动煮锅,AutoModel
标记器=来自预训练('roberta-base')的自动烹饪器
list1=tokenizer.encode('手上非常严重的疼痛')
list2=标记器.encode('上肢麻木')
顺序=列表1+[2]+列表2[1:]
在这种情况下,序列是
[01278381412400111420,2,223441791825,9285329654,2]

(b)

来自transformers进口自动煮锅,AutoModel
标记器=来自预训练('roberta-base')的自动烹饪器
list1=tokenizer.encode('Very severy severy pain in in hands',add_special_tokens=False)
list2=标记器.encode('上肢麻木',添加\u特殊\u标记=False)
序列=[0]+list1+[2,2]+list2+[2]
在这种情况下,序列是
[025101381412400111420,2,248741791825,9285329654,2]


这里
0
表示
令牌,2表示
令牌。我不确定使用Roberta模型对给定的两个句子进行编码以计算句子相似性的正确方法是什么。

最简单的方法可能是通过HuggingFace的标记器本身直接使用提供的函数,即
encode
函数中的
文本对
参数,请参阅。这允许您直接输入两句话,这将为您提供所需的输出:

来自transformers进口自动煮锅,AutoModel
标记器=来自预训练('roberta-base')的自动烹饪器
sequence=tokenizer.encode(text='Very severy severy pain in in hands',
text_pair='上肢麻木',
添加(特殊标记=真)
这在处理很长的序列时特别方便,因为
encode
函数会根据
truncaction_策略
参数自动减少长度。如果只是短序列,你显然不必担心这个问题

或者,您也可以使用
RobertTokenizer
的更显式功能,具体来说,可以将其添加到示例中,如下所示:

来自transformers进口自动煮锅,AutoModel
标记器=来自预训练('roberta-base')的自动烹饪器
list1=tokenizer.encode('Very severy severy pain in in hands',add_special_tokens=False)
list2=标记器.encode('上肢麻木',添加\u特殊\u标记=False)
sequence=tokenizer。使用特殊标记构建输入(列表1,列表2)

请注意,在这种情况下,您必须生成序列
list1
list2
,但仍然没有任何特殊标记,正如您已经正确完成的那样。

最简单的方法可能是通过拥抱Face的标记器本身直接使用提供的函数,即
encode
函数中的
text\u对
参数,请参阅。这允许您直接输入两句话,这将为您提供所需的输出:

来自transformers进口自动煮锅,AutoModel
标记器=来自预训练('roberta-base')的自动烹饪器
sequence=tokenizer.encode(text='Very severy severy pain in in hands',
text_pair='上肢麻木',
添加(特殊标记=真)
这在处理很长的序列时特别方便,因为
encode
函数会根据
truncaction_策略
参数自动减少长度。如果只是短序列,你显然不必担心这个问题

或者,您也可以使用
RobertTokenizer
的更显式功能,具体来说,可以将其添加到示例中,如下所示:

来自transformers进口自动煮锅,AutoModel
标记器=来自预训练('roberta-base')的自动烹饪器
list1=tokenizer.encode('Very severy severy pain in in hands',add_special_tokens=False)
list2=标记器.encode('上肢麻木',添加\u特殊\u标记=False)
sequence=tokenizer。使用特殊标记构建输入(列表1,列表2)
注意,在这种情况下,您必须生成序列
list1
list2
,但仍然没有任何特殊标记,正如您已经正确完成的那样