python 全球多语言情感分析-模型版

简介

使用模型,我们自己就不用去维护 情感库了!!!!学会偷懒

一、官网下载模型

下面模型支持100多种语言

https://huggingface.co/cardiffnlp/twitter-xlm-roberta-base-sentiment-multilingual

项目目录红色部分是相关代码,代码**未转onnx**,转换为onnx 之后的模型好像是不包含情感。

红色框部分就是本次的业务代码:框1(模型文件) 和 框2(测试demo)

注意:此代码,可后续让python提供api

二、代码 (2个demo)

python 复制代码
# 【最终版】多语言情感分析(输出中文:正面/负面/中性)
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch

# 本地模型路径
MODEL_NAME = "./xlm-roberta-base-sentiment-multilingual"
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
model = AutoModelForSequenceClassification.from_pretrained(MODEL_NAME)

# 🔥 直接修改为中文标签
LABELS = ["负面", "中性", "正面"]

# 全球语言测试
test_texts = [
    "快递用时 2 天",
    "这个产品真的超级好用!",
    "质量非常差,强烈不推荐!",
    "I love this service!",
    "This is the worst product ever!",
    "この商品は最高です!",
    "이 제품 정말 별로에요!",
    "Ce produit est incroyable !",
    "Este producto es pésimo!"
]

print("=" * 50)
print("XLM-R 多语言情感分析")
print("=" * 50)

for text in test_texts:
    inputs = tokenizer(text, return_tensors="pt", truncation=True, max_length=128)
    with torch.no_grad():
        outputs = model(**inputs)

    label_idx = torch.argmax(outputs.logits, dim=1).item()
    sentiment = LABELS[label_idx]

    print(f"文本:{text}")
    print(f"情感结果:{sentiment}")
    print("-" * 50)
python 复制代码
# 【精准情绪描述版】多语言情感分析(输出:非常开心/极度失望等)
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
import torch.nn.functional as F

# 你本地已有的模型(完全不变)
MODEL_NAME = "./xlm-roberta-base-sentiment-multilingual"
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
model = AutoModelForSequenceClassification.from_pretrained(MODEL_NAME)

# 模型分类:0=负面 1=中性 2=正面
LABELS = ["负面", "中性", "正面"]


# 🔥 核心:根据情绪强度,匹配【具体情感描述】
def get_emotion_desc(label_idx, score):
    # 正面情绪(强度越高,表达越强烈)
    if label_idx == 2:
        if score >= 0.95:
            return "🥰 非常开心、极度满意"
        elif score >= 0.8:
            return "😊 满意、认可、感觉很好"
        else:
            return "🙂 轻微好评、感觉不错"
    # 负面情绪
    elif label_idx == 0:
        if score >= 0.95:
            return "😡 非常愤怒、极度失望"
        elif score >= 0.8:
            return "😞 失望、不满意、体验较差"
        else:
            return "🙁 轻微差评、感觉一般"
    # 中性
    else:
        return "😐 客观陈述、无情感倾向"


# 测试各种强度的语句
test_texts = [
    # 强正面
    "这是我用过最好的东西!太开心了!",
    "I'm so happy with this product!",
    # 弱正面
    "这个东西还可以吧",
    # 中性
    "这个产品有3个规格",
    # 弱负面
    "这个东西不太好用",
    # 强负面
    "垃圾产品!气死我了!再也不买了!",
    "最悪!本当にがっかりした!"
]

print("=" * 60)
print("多语言情感分析(精准情绪描述)")
print("=" * 60)

for text in test_texts:
    inputs = tokenizer(text, return_tensors="pt", truncation=True, max_length=128)
    with torch.no_grad():
        outputs = model(**inputs)

    # 计算概率(情绪置信度)
    probs = F.softmax(outputs.logits, dim=1)
    label_idx = torch.argmax(probs, dim=1).item()
    score = probs[0][label_idx].item()

    # 获取情感描述
    emotion = get_emotion_desc(label_idx, score)

    print(f"文本:{text}")
    print(f"情感结果:{emotion}")
    print(f"置信度:{score:.2%}")
    print("-" * 60)
相关推荐
Mr数据杨几秒前
【Codex】用智能助手问题反馈模块收集AI使用问题
人工智能·django·codex·项目开发
2601_956319882 分钟前
先把交易想法说清,再让 Python 承接
人工智能·python
qq_25294131684 分钟前
牛目标检测数据集 | 牛只检测 智慧畜牧 动物识别 目标检测5017期
人工智能·深度学习·目标检测·计算机视觉·动物识别··牛识别
Forerror20267 分钟前
MAI Gateway能力解析:API网关能做什么?AI网关核心功能详解
人工智能·api网关·maigateway·企业ai网关·企业级大模型治理网关
武子康8 分钟前
RoboLab 解读:机器人策略评测为什么不能只看二元成功率
人工智能·llm·agent
在线考试系统推荐11 分钟前
拆成多道小题,优考试“理解题“怎么用?
服务器·人工智能·学习
Elastic 中国社区官方博客13 分钟前
机构如何统一智慧城市数据以改善公共服务?
大数据·人工智能·物联网·elasticsearch·搜索引擎·全文检索·智慧城市
小白学大数据13 分钟前
API 调用错误处理实战:分层定位、有纪律地重试与可观测性设计
开发语言·网络·人工智能
Raas10014 分钟前
MAI Gateway(魔芋企业级AI网关)详解:企业为什么需要AI网关,一文读懂企业AI流量治理
大数据·人工智能·gateway·api·ai网关·mai gateway
yangdaxiageo16 分钟前
白帽GEO的结构化信任工程:杨大侠GEO商业方法论研讨
人工智能·科技·aigc·agi