前言

在教育数字化转型的背景下,课堂师生话语分析是评价教学质量、优化课堂互动的核心手段。传统人工编码标注效率低、主观性强,难以规模化应用。

本文基于Python + 大模型 API,实现一套可落地的智慧课堂话语自动分类与量化分析系统。系统支持从 CSV 对话数据导入、话语智能分类、统计分析到标准化报告输出的全流程自动化,完美适配教育评测、智慧课堂产品的后端需求。


一、项目核心能力

本项目针对课堂师生对话数据,实现四大核心功能:

  1. 数据预处理:自动加载 CSV 对话数据,完成分句、清洗、无效文本过滤
  2. AI 智能分类:基于通义千问 / DeepSeek 大模型,将话语分为 4 大类 12 小类
  3. 量化统计:自动计算分类占比,对标优质课堂基准指标
  4. 标准化输出:生成 TXT/CSV/JSON 三类报告,支持业务系统对接
  5. AI 报告生成:自动输出 200-300 字专业教学分析结语

二、技术栈选型

技术 / 库 用途
Python 3.10+ 核心开发语言
Pandas CSV 数据读取、数据统计、表格生成
OpenAI SDK 兼容通义千问 / DeepSeek 大模型 API 调用
正则表达式 文本分句、模型结果清洗
Matplotlib 可视化中文字体适配
JSON 标准化接口数据输出

三、核心代码详解

3.1 类设计与基础配置

采用面向对象封装全流程逻辑,核心类DiscourseAnalyzer111包含分类映射、基准指标、初始化配置等核心属性。

class DiscourseAnalyzer111:
    # 二级分类 → 一级分类映射
    SUBCATEGORIES = {
        "观察记忆": "知识理解", "概括理解": "知识理解", "说明论证": "知识理解",
        "经历经验": "表达交流", "主观看法": "表达交流", "情感态度": "表达交流",
        # 省略实践应用、创造迁移子类...
    }
    # 优质课堂基准占比
    BENCHMARK_RATIOS = {"知识理解": 76, "表达交流": 12, "实践应用": 0, "创造迁移": 12}
    
    def __init__(self, api_key, csv_path, output_dir, time_stamp):
        # 初始化API客户端、目录、字体、计数变量
        self.client = OpenAI(api_key=api_key, base_url="https://dashscope.aliyuncs.com/compatible-mode/v1")
        self.sentences = self.load_csv_content_with_roles()

3.2 对话数据预处理

自动校验 CSV 格式(必须包含角色/内容列),完成文本拼接、分句、无效数据过滤:

def load_csv_content_with_roles(self):
    df = pd.read_csv(self.csv_path, encoding='utf-8')
    # 组合角色+内容
    combined = [f"{role}: {content}" for role, content in zip(df['角色'], df['内容']) if content.strip()]
    # 正则分句(适配中文标点)
    sentences = re.split(r'(?<=[。!?\n])\s*', item)
    return [s.strip() for s in sentences if s.strip() and len(s) >=5]

3.3 大模型 Prompt 工程(核心)

严格约束大模型输出格式,定义分类规则,仅返回分类名称,降低后续清洗成本:

def classify_text(self, sentence):
    system_content = """
你是课堂话语文本分类器,仅返回小类名称:
【知识理解】观察记忆/概括理解/说明论证
【表达交流】经历经验/主观看法/情感态度
...
跳过问候、指令、简单评价等无效语句
"""
    response = self.client.chat.completions.create(model="deepseek-v3", messages=[{"role":"system","content":system_content}, ...])
    return response.choices[0].message.content.strip()

3.4 模型结果容错清洗

解决大模型输出不规范问题,通过正则 + 精准匹配 + 模糊匹配三重机制保证分类准确率:

def clean_category(self, raw_category):
    # 去除特殊字符、前缀
    cleaned = re.sub(r'[\[\]()"\']', '', raw_category.strip())
    # 精准提取标准分类名称
    match = re.search(r'(观察记忆|概括理解|...)', cleaned)
    return match.group(1) if match else cleaned

3.5 统计分析与标准化输出

自动统计分类频次 / 占比,生成 TXT 分类文本、CSV 汇总表、JSON 接口数据:

def build_classification_df(self):
    # 构建分类结果DataFrame
    total_known = sum(self.subcategory_counts.values())
    data = [{"维度":"师生话语功能","一级指标":main_cat,"二级指标":subcat,...}]
    return pd.DataFrame(data)

def save_discourse_form_json(self, conclusion_report):
    # 生成业务对接标准JSON
    discourse_form = {"discourse_form": {"summary": conclusion_report, "classifications": [], ...}}
    json.dump(discourse_form, f, ensure_ascii=False, indent=2)

3.6 AI 自动生成教学分析报告

调用大模型,基于统计数据生成专业教学结语:

def generate_conclusion_with_llm(self):
    # 传入统计数据,输出200-300字教学分析报告
    response = self.client.chat.completions.create(model="qwen-plus", ...)
    return response.choices[0].message.content.strip()

四、项目运行指南

4.1 安装依赖

pip install pandas matplotlib openai

4.2 配置参数

if __name__ == "__main__":
    API_KEY = "你的大模型API密钥"
    INPUT_FILE = "对话数据.csv"  # 必须包含角色、内容列
    OUTPUT_DIR = "./师生话语分析"

4.3 执行代码

直接运行脚本,系统自动完成分析并输出 3 类文件:

  • a1:分类后文本(语句 + 一级分类 + 二级分类)
  • a2:分类结果汇总 CSV
  • a3:标准化 JSON 接口数据

五、关键技术亮点(实战必备)

  1. 跨模型兼容:基于 OpenAI SDK,无缝对接通义千问、DeepSeek 等国产大模型
  2. 高容错机制:Prompt 约束 + 后置清洗,解决大模型输出不稳定问题
  3. 教育业务适配:内置优质课堂基准指标,贴合教育评测场景
  4. 工程化输出:标准化 JSON 结构,直接对接前端 / 业务系统
  5. 跨平台兼容:自动适配系统中文字体,解决可视化乱码问题

六、踩坑总结

  1. 大模型输出不规范:通过强约束 Prompt + 正则清洗,100% 匹配标准分类
  2. 中文乱码:动态匹配系统中文字体,替代硬编码
  3. 分句异常:优化正则规则,避免缩写、特殊标点切割错误
  4. 分类覆盖率低:增加模糊匹配,有效提升有效分类比例

七、优化方向

  1. 增加并发调用,提升大批量数据处理速度
  2. 接入本地模型,降低 API 成本
  3. 新增可视化图表(饼图 / 柱状图)直观展示分类占比
  4. 支持自定义分类规则,适配不同学科课堂分析

八、总结

本项目是教育 AI 场景的典型落地案例,将大模型能力与教育业务深度结合,实现了课堂话语分析的全流程自动化。代码结构清晰、可扩展性强,既可以直接用于教学评测,也可以作为智慧课堂产品的核心模块二次开发。

对于中级开发者而言,本项目涵盖了数据处理、大模型 API 调用、Prompt 工程、标准化输出等实战技能,是学习垂直领域 AI 应用开发的优质案例。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐