我有几个问题,关于标记词/字符/表情的不同拥抱面模型。
据我理解,只有当输入语句的令牌在模型的令牌上进行训练时,模型才能在推理过程中表现最佳。
我的问题是:
我目前的设置如下:
from transformers import pipeline, AutoTokenizer, AutoModelForSequenceClassification
pre_trained_model = 'facebook/bart-large-mnli'
task = 'zero-shot-classification'
candidate_labels = ['happy', 'sad', 'angry', 'confused']
tokenizer = AutoTokenizer.from_pretrained(pre_trained_model)
model = AutoModelForSequenceClassification.from_pretrained(pre_trained_model)
zero_shot_classifier = pipeline(model=model, tokenizer=tokenizer, task=task)
zero_shot_classifier('today is a good day ', candidate_labels=candidate_labels)任何帮助都是非常感谢的。
发布于 2021-03-30 13:20:36
对于第一个问题,您可以使用以下内容检查令牌程序是否覆盖了某个字符串:
text = 'today is a good day '
ids2string = lambda ids: tokenizer.convert_tokens_to_string(tokenizer.convert_ids_to_tokens(ids))
ids2string(tokenizer(text)['input_ids'])
> <s>today is a good day </s>如果标记器创建中没有包含emoji,则令牌器将用未知的特殊令牌替换它。您可以使用tokenizer.special_tokens_map['unk_token'].访问它,您可以删除或保留它们,应该不会有太大的区别。
或者,如果要进行微调,可以使用tokenizer.add_special_tokens将自己的令牌添加到现有的令牌程序中。但是,在这种情况下,该令牌的嵌入将是随机的。你需要训练他们。
https://datascience.stackexchange.com/questions/91073
复制相似问题