欢迎光临
我们一直在努力

CSDN 完整博文:本地 Qwen2.5 大模型实现电影评论情感分类(原生 transformers 最简代码)

目录

一、项目前言

二、环境依赖安装

三、完整原生代码(和需求完全一致)

四、代码逐段详细解析

1. 模型与分词器加载

2. 提示词工程(核心分类逻辑)

3. 文本编码 tokenizer

4. 模型推理 generate 生成

5. 解码与结果截取

五、运行示例演示

输入

控制台打印流程

六、高频踩坑问题解决

问题 1:路径报错 HFValidationError: Repo id must use alphanumeric chars

问题 2:模型输出大量多余文字,只想要单一结果

问题 3:CPU 运行速度极慢

问题 4:模型文件夹缺失文件报错

七、拓展优化方向

八、总结


一、项目前言

很多新手想上手本地开源大模型做文本分类任务,但是不知道如何离线加载本地权重、如何通过提示词工程完成分类。本文使用阿里开源轻量模型 Qwen2.5-0.5B-Instruct,仅依靠transformers库,不需要微调、不需要训练数据集,一行输入即可完成电影评论情感三分类(正面、负面、中立),代码极简、适合新手入门本地 LLM 推理流程。

二、环境依赖安装

先安装运行所需第三方库,终端执行:

pip install torch transformers

  • torch:深度学习张量计算框架
  • transformers:HuggingFace 官方库,用于加载本地大模型、分词、推理生成

这里是在modelscope平台下载的Qwen2.5-1.5B-Instruct模型

三、完整原生代码(和需求完全一致)

from transformers import AutoModelForCausalLM,AutoTokenizer

# 本地模型文件夹相对路径
model_name=r"..\\qianwen\\Qwen2.5-1.5B-Instruct"
# 加载预训练大模型
model=AutoModelForCausalLM.from_pretrained(model_name)
# 加载对应分词器
tokenizer=AutoTokenizer.from_pretrained(model_name)

# 提示词模板:定义分类任务规则
prompt_template='请判断以下文本的情感属于哪个类别:{text}.可选类别有:正面、负面、中立。'
# 接收用户输入电影评论
input_text=input("请输入电影评价")
# 将用户文本填充进提示词模板
prompt_input=prompt_template.format(text=input_text)
print('prompt_input:',prompt_input)

# 分词编码,转为模型可识别张量
inputs=tokenizer(prompt_input,return_tensors="pt")
print("inputs:",inputs)

# 模型推理生成文本
output_sequences=model.generate(inputs.input_ids,max_new_tokens=512,attention_mask=inputs.attention_mask)
print("output_sequences:",output_sequences)

# 将数字张量解码为完整文本
generated_text=tokenizer.decode(output_sequences[0],skip_special_tokens=True)
print(generated_text)

# 截取模型新增回答部分,剔除输入prompt
text=generated_text[len(prompt_input):]
print("text:",text)

四、代码逐段详细解析

1. 模型与分词器加载

from transformers import AutoModelForCausalLM,AutoTokenizer
model_name=r"..\\qianwen\\Qwen2.5-1.5B-Instruct"
model=AutoModelForCausalLM.from_pretrained(model_name)
tokenizer=AutoTokenizer.from_pretrained(model_name)

  • AutoModelForCausalLM:通用因果大模型加载器,适配 Qwen、Llama 等生成式 LLM;
  • AutoTokenizer:自动匹配模型的分词器,负责文本与数字 token 相互转换;
  • model_name:本地模型文件夹路径,..\\代表向上一级文件夹,Windows 原始字符串r""避免转义符报错;
  • 要求:文件夹内必须包含config.json、pytorch_model.bin、vocab.json等完整模型权重文件。
  • 2. 提示词工程(核心分类逻辑)

    prompt_template='请判断下面的电影评价属于哪个类别,只告诉我是”正面、负面、中立“中的哪一种,只回答两个字,电影评价如下:{text}.'
    input_text=input("请输入电影评价")
    prompt_input=prompt_template.format(text=input_text)

    • 无需训练,依靠自然语言指令约束模型输出分类结果;
    • {text}为占位符,通过format()填充用户输入的影评文本;
    • 任务逻辑:告诉模型仅从「正面、负面、中立」三选一输出结果。

    3. 文本编码 tokenizer

    inputs=tokenizer(prompt_input,return_tensors="pt")

    • 大模型无法直接读取文字,需要分词转换为数字 ID(input_ids);
    • return_tensors="pt":返回 PyTorch 张量格式,适配模型输入;
    • 返回对象包含两个关键参数:
      • input_ids:文本分词后的数字编码;
      • attention_mask:掩码,1 代表有效文本,0 代表填充占位。

    4. 模型推理 generate 生成

    output_sequences=model.generate(inputs.input_ids,max_new_tokens=512,attention_mask=inputs.attention_mask)

    • generate():LLM 文本生成核心函数,自动续写文本;
    • max_new_tokens=512:限制模型最多生成 512 个词,防止无限输出;
    • attention_mask:传入掩码,让模型忽略填充占位符。

    5. 解码与结果截取

    generated_text=tokenizer.decode(output_sequences[0],skip_special_tokens=True)
    text=generated_text[len(prompt_input):]
    print("text:",text)

  • decode():将数字 token 还原为可读文本;skip_special_tokens=True过滤<eos>等模型特殊符号;
  • generated_text = 原始输入 prompt + 模型新增回答;
  • text=generated_text[len(prompt_input):]:切片截取,只保留模型输出的分类结果。
  • 五、运行示例演示

    输入

    请输入电影评价:这部电影剧情拖沓,演员演技很差,完全不值得看

    控制台打印流程

  • 打印拼接后的完整 prompt
  • prompt_input: 请判断以下文本的情感属于哪个类别:这部电影剧情拖沓,演员演技很差,完全不值得看.可选类别有:正面、负面、中立。

  • 打印编码后的张量 inputs
  • 打印推理输出 token 序列output_sequences
  • 打印完整解码文本
  • 请判断以下文本的情感属于哪个类别:这部电影剧情拖沓,演员演技很差,完全不值得看.可选类别有:正面、负面、中立。
    该文本情感类别为负面

  • 切片后仅输出模型回答
  • text: 该文本情感类别为负面

    六、拓展优化方向

  • 封装 Flask 网页接口,前端输入评论实时展示分类结果;
  • 增加结果清洗逻辑,自动提取「正面 / 负面 / 中立」关键词,过滤多余描述;
  • 使用 Qwen 官方对话模板apply_chat_template,提升指令跟随准确率;
  • 增加量化加载load_in_4bit=True,大幅降低内存占用;
  • 批量读取影评文件,批量完成情感分类。
  • 七、总结

    本文使用最原生、无多余封装的 transformers 代码,完整演示本地 Qwen2.5 大模型离线推理流程,仅依靠提示词工程实现文本情感分类,无需数据集、无需微调,非常适合新手学习本地 LLM 基础开发流程。代码结构清晰,每一步都有打印日志,方便调试、理解大模型输入输出完整链路。

    赞(0)
    未经允许不得转载:171主机测评 » CSDN 完整博文:本地 Qwen2.5 大模型实现电影评论情感分类(原生 transformers 最简代码)
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址