基于 Qwen2.5-1.5B 模型实现电影评论情感分类

一、项目需求

1.技术选型

  • 核心库:Hugging Face Transformers(大模型调用标准库)

  • 模型:Qwen2.5-1.5B-Instruct(通义千问轻量版,兼顾效果与本地部署效率)

  • 运行环境:Python 3.8+,PyTorch(模型推理基础框架)

二、完整代码与解析

1.代码:

python 复制代码
from transformers import AutoModelForCausalLM, AutoTokenizer

# 1. 模型路径配置(本地缓存的Qwen2.5-1.5B-Instruct模型)
model_name = r"C:\Users\28706\.cache\modelscope\hub\models\Qwen\Qwen2___5-1___5B-Instruct"

# 2. 加载模型与分词器
# AutoModelForCausalLM:加载生成式因果语言模型(适配Qwen这类生成式LLM)
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    device_map="auto"  # 自动分配设备(有GPU用GPU,无则用CPU)
)
# AutoTokenizer:加载与模型配套的分词器(保证文本编码格式匹配)
tokenizer = AutoTokenizer.from_pretrained(model_name)

# 3. 定义提示词模板(标准化输入格式,提升模型分类准确性)
prompt_template = "请判断以下文本属于哪个类别:{text}。可选类别有:正面、负面、中立。"

# 4. 交互式循环处理用户输入
while True:
    # 获取用户输入
    print("\n请输入电影评论(输入空行或q退出):")
    input_text = input().strip()
    
    # 退出条件判断
    if not input_text or input_text.lower() == 'q':
        print("程序退出!")
        break
    
    # 构建完整提示词
    prompt_input = prompt_template.format(text=input_text)
    
    # 5. 文本编码(转换为模型可识别的张量)
    inputs = tokenizer(
        prompt_input,
        return_tensors="pt",  # 返回PyTorch张量
        truncation=True,     # 截断超长文本(适配模型输入长度限制)
        padding=True         # 补全文本长度(保证输入格式统一)
    )
    # 将输入数据移到模型所在设备(GPU/CPU对齐)
    inputs = inputs.to(model.device)
    
    # 6. 模型推理生成结果
    output_sequences = model.generate(
        inputs.input_ids,               # 编码后的文本ID
        attention_mask=inputs.attention_mask,  # 注意力掩码(避免模型关注padding部分)
        max_new_tokens=4,               # 限制生成长度(仅需输出"正面/负面/中立")
        temperature=0.01,               # 温度系数(越低越确定,避免随机输出)
        do_sample=False,                # 关闭采样(确保结果可复现)
        pad_token_id=tokenizer.eos_token_id  # 填充tokenID(防止运行报错)
    )
    
    # 7. 结果解码与提取
    generated_text = tokenizer.decode(output_sequences[0], skip_special_tokens=True)
    # 提取模型生成的分类结果(去掉原始提示词)
    result = generated_text.replace(prompt_input, "").strip()
    
    # 8. 输出结果
    print(f"情感分类结果:{result}")

2.核心代码解析

(1)模型与分词器加载

  • AutoModelForCausalLM.from_pretrained():针对生成式大模型 的加载方法,Qwen2.5 属于因果语言模型(通过前文预测后文),因此选用该类,而非用于分类的AutoModelForSequenceClassification

  • AutoTokenizer.from_pretrained():分词器是大模型的 "翻译官",将自然语言转换为模型能理解的数字 ID,必须与模型配套使用,否则会出现编码不兼容问题。

  • device_map="auto":自动识别并使用 GPU(如有),能大幅提升推理速度,是本地部署的关键优化。

(2)提示词模板设计

prompt_template 采用标准化格式,明确告知模型任务目标(情感分类)、输入文本位置、可选类别,这是提示词工程(Prompt Engineering) 的基础应用 ------ 清晰的提示词能让大模型无需微调即可完成特定任务。

(3)模型推理参数

  • max_new_tokens=4:限制生成 4 个字符,刚好覆盖 "正面 / 负面 / 中立"(最多 3 个字),避免模型生成多余内容。

  • temperature=0.01:温度系数控制生成随机性,值越接近 0,结果越确定,适合分类这类需要固定输出的任务。

  • attention_mask:注意力掩码,让模型只关注有效文本,忽略 padding 补全的部分,保证推理准确性。

(4)结果提取

generated_text.replace(prompt_input, "").strip():模型生成的文本包含原始提示词,因此需要剔除提示词部分,只保留分类结果。

三、结果显示

python 复制代码
请输入电影评论(输入空行或q退出):
这部电影真是太差劲,我非常不喜欢!
情感分类结果:负面

请输入电影评论(输入空行或q退出):
这部电影剧情紧凑,演员演技在线,值得一看!
情感分类结果:正面

请输入电影评论(输入空行或q退出):
q
程序退出!
相关推荐
智能交通技术2 小时前
iTSTech:世界模型的发展——在自动驾驶中的应用 2026
人工智能·机器学习·自动驾驶
智算菩萨2 小时前
元推理(Meta-Reasoning):让模型学会判断何时需要更深思考
人工智能·深度学习·机器学习·ai
乾元2 小时前
本地大模型:如何在内网部署 Llama/Qwen 等安全增强模型
运维·网络·人工智能·安全·机器学习·llama·安全架构
人工智能AI技术2 小时前
从外挂到原生:AI电脑控制开发指南,GPT-5.4+OpenClaw双打通
人工智能
OpenBayes贝式计算2 小时前
教程上新丨微软开源3D生成模型TRELLIS.2,3秒生成高分辨率的全纹理资产
人工智能·深度学习·机器学习
阿杰的人生路2 小时前
OpenAI发布GPT-5.4内置原生电脑操控,OpenClaw 3.2更新权限关闭致功能失效
人工智能·gpt·电脑
老陈测评2 小时前
三医联动”数据破局:清医华保如何用AI打通医、保、药数据孤岛?
人工智能·健康医疗
武汉知识图谱科技2 小时前
超越预测性维护:基于知识超图与根因推理的能源电力“免疫系统”构建
人工智能·物联网·langchain·能源·知识图谱·embedding
檐下翻书1732 小时前
企业组织架构图导出Word 在线编辑免费工具
人工智能·信息可视化·去中心化·word·流程图·ai编程