You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RobBERTje荷兰语情感分析缺失中性标签,如何获取该标签?

如何让RobBERTje荷兰语情感分析模型输出中性标签?

问题背景

使用DTAI-KULeuven/robbert-v2-dutch-sentiment模型进行荷兰语情感分析时,发现模型仅输出Positive(正面)和Negative(负面)两种标签,完全缺失Neutral(中性)分类。测试无意义文本(如Fhdf)和典型中性语句(如Als gisteren inclusief blauw)时,均被错误归类为正面或负面。

测试代码及输出如下:

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}]

解决方案

首先明确:DTAI-KULeuven/robbert-v2-dutch-sentiment是原生二分类模型,仅针对正/负情感训练,因此本身不支持中性标签。要实现中性分类,可采用以下三种方案:

1. 改用三分类RobBERT变体

优先查找官方或社区发布的、针对荷兰语情感分析训练的三分类(正/负/中性)RobBERT模型。如果存在这类模型,直接替换代码中的model_name即可,无需额外修改逻辑。

2. 基于二分类输出的阈值判定

如果没有合适的三分类模型,可以通过判断模型输出的置信度阈值,推断中性类别:

  • 直接获取模型的原始概率输出,若正/负两类的最高置信度低于设定阈值,则判定为中性。
  • 示例代码:
from transformers import RobertaTokenizer, RobertaForSequenceClassification
import torch

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

def predict_sentiment(text):
    # 预处理文本
    inputs = tokenizer(text, return_tensors="pt", truncation=True, padding=True)
    # 禁用梯度计算提升速度
    with torch.no_grad():
        outputs = model(**inputs)
    # 计算概率分布
    probabilities = torch.softmax(outputs.logits, dim=1).tolist()[0]
    pos_prob, neg_prob = probabilities
    max_confidence = max(pos_prob, neg_prob)
    
    # 阈值判断(可根据实际样本调整)
    if max_confidence < 0.6:
        return {"label": "Neutral", "score": round(1 - max_confidence, 6)}
    elif pos_prob > neg_prob:
        return {"label": "Positive", "score": round(pos_prob, 6)}
    else:
        return {"label": "Negative", "score": round(neg_prob, 6)}

# 测试示例
print(predict_sentiment('Fhdf'))
print(predict_sentiment('Als gisteren inclusief blauw'))
  • 注意:阈值需要根据你的实际数据集调整,建议用标注好的中性样本测试,找到最适合的临界值。

3. 微调模型添加中性类别

如果对准确性要求较高,可收集包含中性标签的荷兰语情感数据集,在现有二分类模型基础上进行微调,让模型学习识别中性类别。这种方案需要数据准备和训练资源,但能获得最贴合需求的效果。

内容的提问来源于stack exchange,提问作者pjercic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 15:18:25