描述错误
如果你使用经过 to_datasets()
转换的 HF 数据集(可能包含解释值,如:
explanation': {'text': [{'attributions': {'NEGATIVE': 0.4228191208527419, 'POSITIVE': None},
)记录文本分类数据集,那么在原始的 Rubrix 数据集中,属性值为:
explanation': {'text': [{'attributions': {'NEGATIVE': 0.4228191208527419}..
。因此,似乎在 Arrow 中将这些字典转换时,会自动填充缺失值。记录时的最终错误为:
ValidationError: 1 validation error for TokenAttributions
attributions -> POSITIVE
none is not an allowed value (type=type_error.none.not_allowed)
。
重现问题
运行以下代码:
from transformers import AutoModelForSequenceClassification, AutoTokenizer
from transformers_interpret import SequenceClassificationExplainer
from datasets import load_dataset
import rubrix as rb
from rubrix import TokenAttributions
Load Stanford sentiment treebank test set
dataset = load_dataset("sst", "default", split="test")
Let's use a sentiment classifier fine-tuned on sst
model_name = "distilbert-base-uncased-finetuned-sst-2-english"
model = AutoModelForSequenceClassification.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)
Define the explainer using transformers_interpret
cls_explainer = SequenceClassificationExplainer(model, tokenizer)
records = []
for example in dataset.select(range(10)):
# Build Token attributions objects
word_attributions = cls_explainer(example["sentence"])
token_attributions = [
TokenAttributions(
token=token,
attributions={cls_explainer.predicted_class_name: score}
) # ignore first (CLS) and last (SEP) tokens
for token, score in word_attributions[1:-1]
]
# Build Text classification records
record = rb.TextClassificationRecord(
text=example["sentence"],
prediction=[(cls_explainer.predicted_class_name, cls_explainer.pred_probs)],
explanation={"text": token_attributions},
)
records.append(record)
rb_dataset = rb.DatasetForTextClassification(records)
hf_dataset = rb.DatasetForTextClassification(records).to_datasets()
rb.log(rb.DatasetForTextClassification.from_datasets(hf_dataset))
或者从 Hub 中使用以下代码:
import rubrix as rb
from datasets import load_dataset
ds = load_dataset("rubrix/transformer_interpret_example_sst", split="test")
rb.log(rb.DatasetForTextClassification.from_datasets(ds), name="transformer_interpret_example_sst")
预期行为
从 HF 数据集(例如 Hub)恢复带有解释的数据集不应该失败。
截图
如果适用,请添加截图以帮助解释问题。
环境信息(请填写以下信息):
- OS [例如:iOS]:
- Browser [例如:chrome, safari]:
- Rubrix 版本 [例如:0.10.0]:
- ElasticSearch 版本 [例如:7.10.2]:
- Docker 镜像(可选) [例如:rubrix:v0.10.0]:
其他上下文
在这里添加有关问题的任何其他上下文。
2条答案
按热度按时间xkrw2x1b1#
这个问题已经过期,因为它已经开放了30天,没有任何活动。
yqyhoc1h2#
@dvsrepo 这对2.0版本仍然相关吗?