荷兰情绪分析 RobBERTje 仅输出正/负标签,缺少中性标签

问题描述 投票:0回答:1

当我运行荷兰情绪分析 RobBERTje 时,它仅输出正/负标签,数据中缺少中性标签。

https://huggingface.co/DTAI-KULeuven/robbert-v2-dutch-sentiment

有明显的中性句子/单词,例如“Fhdf”(废话)和“Als gisteren inclusief blauw”(中性),但它们都评估为正面或负面。

有没有办法在 RobBERTje 中为此类示例获得中性标签?

from transformers import RobertaTokenizer, RobertaForSequenceClassification
from transformers import pipeline
import torch

model_name = "DTAI-KULeuven/robbert-v2-dutch-sentiment"
model = RobertaForSequenceClassification.from_pretrained(model_name)
tokenizer = RobertaTokenizer.from_pretrained(model_name)

classifier = pipeline('sentiment-analysis', model=model, tokenizer = tokenizer)

result1 = classifier('Fhdf')
result2 = classifier('Als gisteren inclusief blauw')
print(result1)
print(result2)

输出:

[{'label': 'Positive', 'score': 0.7520257234573364}]
[{'label': 'Negative', 'score': 0.7538396120071411}]
python nlp bert-language-model roberta-language-model
1个回答
0
投票

该模型仅在

negative
positive
标签上进行训练。因此,它会尝试将每个输入分类为正面或负面,即使它是无意义的或中性的。

你能做的是: 1- 查找经过训练以包含

neutral
标签的其他模型。 2- 在包含
neutral
标签的数据集上微调此模型。 3- 根据置信度输出经验性地定义阈值并将其解释为
neutral

前两个选择需要大量的努力。我建议您使用第三个选项来快速解决问题。尝试向模型提供一些中性输入,并观察输出中置信度得分的范围。然后使用该阈值分类为

neutral

这是一个示例:

def classify_with_neutral(text, threshold=0.5):
    result = classifier(text)[0]  # Get the classification result
    if result['score'] < threshold:
        result['label'] = 'Neutral'  # Override label to 'Neutral'
    return result
© www.soinside.com 2019 - 2024. All rights reserved.