【发布时间】:2020-05-28 06:11:15
【问题描述】:
我设计了一个基于 BERT 的模型来解决 NER 任务。我正在使用 transformers 库和 "dccuchile/bert-base-spanish-wwm-cased" 预训练模型。当我的模型检测到一个实体但令牌是'[UNK]' 时,问题就来了。我怎么知道那个标记后面的字符串是什么?
我知道未知标记无法还原为原始标记,但我想至少在将输入传递给模型之前捕获该值。
代码真的很简单:
sentenceIds = tokenizer.encode(sentence,add_special_tokens = True)
inputs = pad_sequences([sentenceIds], maxlen=256, dtype="long",
value=0, truncating="post", padding="post")
att_mask = torch.tensor([[int(token_id > 0) for token_id in inputs[0]]]).to(device)
inputs = torch.tensor(inputs).to(device)
with torch.no_grad():
outputs = model(inputs,
token_type_ids=None,
attention_mask=att_mask)
如您所见,非常简单,只需标记化、填充或截断、创建 attentionMask 并调用模型。
我曾尝试使用regex,试图找到它周围的两个令牌之类的东西,但我无法正确解决它。
【问题讨论】:
-
应该可以找出这个词是什么。您可以在对输入进行标记和编码时分享代码吗?
-
我已经编辑了问题,添加了代码-
标签: python-3.x pytorch bert-language-model huggingface-transformers