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

如何基于BERT德语情感分析模型获取每条推文的情感得分

获取oliverguhr/german-sentiment-bert三类情感得分的实现方法

你当前调用的SentimentModel是第三方封装的高层接口,默认predict_sentiment方法仅返回概率最高的情感标签,没有显式暴露三类得分,两种可直接运行的实现方案如下:

  • 方案1:无需修改模型加载逻辑,直接开启接口自带的概率返回参数
    封装接口本身已经内置了概率计算逻辑,只是默认关闭了输出,修改调用参数即可拿到和模型卡片一致的三类得分,代码如下:

    from germansentiment import SentimentModel
    
    model = SentimentModel()
    
    texts = [
        "Mit keinem guten Ergebniss","Das ist gar nicht mal so gut",
        "Total awesome!","nicht so schlecht wie erwartet",
        "Der Test verlief positiv.","Sie fährt ein grünes Auto."]
        
    # 开启概率输出开关
    result = model.predict_sentiment(texts, output_probabilities=True)
    print(result)
    

    返回结果中,每条文本对应一个二元元组:第一个值是模型判定的最终情感标签,第二个值是(类别名, 得分)格式的列表,依次包含negative、neutral、positive三类的概率值,单条样本三类得分总和为1,和Hugging Face模型卡片展示的输出完全对齐。

  • 方案2:基于Hugging Face原生接口直接加载模型,完全可控输出逻辑
    如果担心第三方封装库的版本变动导致结果不一致,可以直接用transformers库原生加载模型,手动计算softmax概率,代码如下:

    from transformers import AutoTokenizer, AutoModelForSequenceClassification
    import torch
    import torch.nn.functional as F
    
    model_path = "oliverguhr/german-sentiment-bert"
    tokenizer = AutoTokenizer.from_pretrained(model_path)
    model = AutoModelForSequenceClassification.from_pretrained(model_path)
    id2label = model.config.id2label # 固定映射:0=negative, 1=neutral, 2=positive
    
    texts = [
        "Mit keinem guten Ergebniss","Das ist gar nicht mal so gut",
        "Total awesome!","nicht so schlecht wie erwartet",
        "Der Test verlief positiv.","Sie fährt ein grünes Auto."]
    
    # 文本编码
    inputs = tokenizer(texts, padding=True, truncation=True, max_length=512, return_tensors="pt")
    # 推理计算logits
    with torch.no_grad():
        logits = model(**inputs).logits
    # softmax转换为概率得分
    probs = F.softmax(logits, dim=1)
    
    # 格式化输出
    for text, prob in zip(texts, probs):
        res = {id2label[i]: round(p.item(), 4) for i, p in enumerate(prob)}
        print(f"文本: {text}\n情感得分: {res}\n")
    

注意:该模型的类别顺序固定为负向、中性、正向,不要随意调整映射顺序,否则会出现标签和得分不匹配的问题。

之前调试没找到对应调用逻辑的原因很简单:高层封装的默认分支只返回logits取argmax后的标签结果,概率计算的逻辑只有在传入output_probabilities=True参数时才会触发返回,顺着默认执行路径追踪自然看不到得分输出的相关代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 09:39:57