在教育数字化转型的背景下,通过量化数据分析课堂教学行为、评估教学质量已成为提升课堂效率的重要手段。本文将分享一个基于 Python 实现的课堂教学问题诊断系统,该系统能够读取 CSV 格式的课堂评估数据,对比待测课与优质课的各项指标占比,借助大语言模型自动生成问题分析报告和改进建议。
一、系统设计思路
本系统核心目标是通过结构化的 CSV 数据解析,提取课堂教学的关键维度指标(师生行为、关键能力、关键行为、情感体验),对比待测课与优质课的指标差异,最终生成有针对性的问题分析和改进策略。整体流程分为三个核心环节:
- 数据解析:读取不同维度的 CSV 数据,提取标准化的指标占比;
- 数据对比:构建待测课与优质课的指标字典,明确差异点;
- 智能分析:调用大语言模型,基于指标差异生成问题分析和改进建议。
二、核心代码实现
1. 环境准备与类初始化
首先需要安装依赖库,并初始化核心类,配置 API 密钥和 CSV 文件路径(本文使用阿里云通义千问兼容 OpenAI 接口的模式)。
python
import openai
import json
import csv
import os
from typing import Dict, List, Tuple
import re
class ProblemImprovement:
def __init__(self, api_key=None, csv_files=None, weight_file_path=None):
self.api = api_key
# 配置通义千问兼容OpenAI的客户端
self.client = openai.OpenAI(
api_key=self.api,
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1")
# 定义课堂评估的核心维度与指标
self.indicators = {
'师生行为': ['全班讲解', '个别指导', '教师巡视', '学生听讲', '学生回答', '学生做题', '小组活动',
'汇报展示'],
'关键能力': ['知识理解', '表达交流', '实践应用', '创造迁移'],
'关键行为': ['陈述', '提问', '回答', '反馈', '管理'],
'情感体验': ['积极', '中性', '消极', '积极', '中性', '消极', '积极']
}
self.weight_file_path = weight_file_path
self.csv_files = csv_files
2. CSV 数据解析核心方法
CSV 文件中存储了课堂各维度的指标占比和优质课参考值,需要针对性解析不同维度的数据(以师生行为数据解析为例):
python
def extract_teacher_student_data(self, file_path: str) -> Dict[str, List[float]]:
"""提取师生行为数据,返回待测课和优质课的指标占比(小数形式)"""
result = {'test': [], 'quality': []}
try:
with open(file_path, 'r', encoding='utf-8') as file:
# 处理BOM字符,避免表头解析错误
content = file.read()
content = content.lstrip('\ufeff')
reader = csv.reader(content.splitlines())
headers = next(reader)
# 查找占比和优质课列的索引
ratio_index = -1
quality_index = -1
for i, header in enumerate(headers):
if '占比' in header:
ratio_index = i
elif '优质课' in header:
quality_index = i
if ratio_index == -1 or quality_index == -1:
raise ValueError("找不到占比或优质课列")
# 读取二级指标数据并标准化为小数
for row in reader:
if len(row) > max(ratio_index, quality_index) and row[1] == '二级指标':
try:
test_value = float(row[ratio_index].strip().rstrip('%'))
quality_value = float(row[quality_index].strip().rstrip('%'))
result['test'].append(test_value / 100) # 转换为小数
result['quality'].append(quality_value / 100) # 转换为小数
except (ValueError, IndexError):
continue
except Exception as e:
raise Exception(f"提取师生行为数据时出错: {str(e)}")
return result
该方法的核心逻辑:
- 处理 CSV 文件的 BOM 字符,避免编码问题;
- 动态查找 "占比" 和 "优质课" 列的索引,适配不同格式的 CSV 文件;
- 过滤二级指标行数据,将百分比转换为小数,便于后续计算和对比。
3. 构建指标对比字典
将各维度的解析结果整合为结构化的字典,键为具体指标(如 "全班讲解""知识理解"),值为对应的占比:
python
def get_dict(self) -> tuple:
"""从四个CSV文件读取课堂评估数据,返回待测课和优质课的指标占比字典"""
try:
# 初始化向量字典
test_vectors = {}
quality_vectors = {}
# 处理师生行为数据
if '师生行为' in self.csv_files and os.path.exists(self.csv_files['师生行为']):
behavior_data = self.extract_teacher_student_data(self.csv_files['师生行为'])
test_vectors['师生行为'] = behavior_data['test']
quality_vectors['师生行为'] = behavior_data['quality']
# 处理话语功能(关键能力)、话语形式(关键行为)、情感体验数据(逻辑类似,略)
# ...
# 构建最终的指标字典
test_dict = {}
quality_dict = {}
# 按照预设指标顺序匹配数据
for dimension, indicators_list in self.indicators.items():
if dimension in test_vectors:
test_values = test_vectors[dimension]
for i, indicator in enumerate(indicators_list):
if i < len(test_values):
test_dict[indicator] = test_values[i]
if dimension in quality_vectors:
quality_values = quality_vectors[dimension]
for i, indicator in enumerate(indicators_list):
if i < len(quality_values):
quality_dict[indicator] = quality_values[i]
return test_dict, quality_dict
except FileNotFoundError as e:
raise FileNotFoundError(f"找不到必要的数据文件: {str(e)}")
except Exception as e:
raise Exception(f"读取数据时出错: {str(e)}")
4. 调用大模型生成问题分析
基于指标对比字典,构造提示词调用大语言模型,生成结构化的问题分析报告:
python
def get_problem_analysis(self) -> str:
"""获取问题分析部分"""
test_dict, quality_dict = self.get_dict()
# 构造精准的提示词,约束输出格式和内容
prompt = f"""
# 任务
你的核心任务是通过对比待测课和优质课的指标占比,对课堂教学中存在的主要问题和不足进行分析。
# 输出要求
通过对比待测课和优质课的指标占比,分析课堂教学中存在的主要问题和不足。具体为:"数据表明,本节课各项指标表现...,但在...仍有一定的改进空间。例如,...环节虽...,但...,该环节...占比低于优质课,...。在...层面,虽然...,但...,...,特别是...有待加强。...环节主要是...,...类话语较少,表现为...,缺乏...。此外,..."
# 关键要求
- 背景要求: 必须先对比待测课和优质课的指标占比,了解该课堂中老师采用的教学方式,以及学生的学习情况。
- 结构要求: 必须以4个空格开头实现首行缩进。
- 内容要求: 必须生成一个内容完整连贯的段落,不准分段。
- 格式要求: 严禁使用任何形式的列表、分点符号或JSON格式。
# 对比数据
待测课指标占比: {test_dict}
优质课指标占比: {quality_dict}
"""
try:
response = self.client.chat.completions.create(
model="deepseek-v3",
messages=[
{"role": "system", "content": "你是一个擅长对课堂进行问题分析的分析助手。"},
{"role": "user", "content": f"{prompt}"}
],
max_tokens=1500,
temperature=0.5
)
response = response.choices[0].message.content.strip()
return {"status": "success", "problem_analysis": response}
except Exception as e:
return {"status": "error", "error_message": str(e)}
5. 生成改进建议
基于问题分析结果,进一步生成可落地的改进建议,核心逻辑与问题分析类似,但调整提示词聚焦 "解决方案":
python
def get_improvement_suggestions(self) -> str:
"""获取改进建议部分"""
test_dict, quality_dict = self.get_dict()
problem_analysis = self.get_problem_analysis().get("problem_analysis", "")
prompt = f"""
# 任务
针对课堂教学的问题分析结果提出具体的改进策略和实施方案。
# 输出要求
- 内容要求: 都是小标题+具体改进建议的形式,使用(一)(二)等中文序号。
- 格式要求: 严禁使用其他列表形式、分点符号或JSON格式,最多允许一个换行。
# 输入数据
待测课指标占比: {test_dict}
优质课指标占比: {quality_dict}
问题分析结果: {problem_analysis}
"""
# 调用大模型逻辑(与问题分析类似,略)
# ...
三、系统使用示例
python
if __name__ == "__main__":
# 配置API密钥和CSV文件路径
API_KEY = "你的API密钥"
csv_files = {
'师生行为': r".\doc\师生行为.csv",
'话语形式': r".\doc\话语形式.csv",
'话语功能': r".\doc\话语功能.csv",
'师生情绪': r".\doc\师生情绪.csv"
}
# 创建实例并运行
problem_improvement = ProblemImprovement(api_key=API_KEY, csv_files=csv_files)
try:
problem_analysis = problem_improvement.get_problem_analysis()["problem_analysis"]
improvement_suggestions = problem_improvement.get_improvement_suggestions()["improvement_suggestions"]
print("=== 课堂教学问题分析 ===")
print(problem_analysis)
print("\n=== 改进建议 ===")
print(improvement_suggestions)
except Exception as e:
print(f"执行失败: {str(e)}")
四、系统亮点与扩展方向
1. 核心亮点
- 数据适配性强:支持不同格式的 CSV 文件,自动处理 BOM 字符、列名模糊匹配,兼容百分比格式数据;
- 结构化输出:通过精准的提示词工程,约束大模型输出格式,避免杂乱的非结构化文本;
- 维度全覆盖:涵盖师生行为、关键能力、关键行为、情感体验四大核心维度,分析全面。
2. 扩展方向
- 权重配置:引入指标权重文件,支持不同学科、学段的权重自定义;
- 可视化展示:结合 Matplotlib/Plotly 将指标对比结果绘制成图表,直观呈现差异;
- 批量处理:支持多份课堂数据的批量分析,生成汇总报告;
- 本地化部署:对接本地化大模型,避免数据外发,提升安全性。
五、总结
本系统通过 Python 实现了课堂教学数据的自动化解析与智能分析,将量化数据与大语言模型的自然语言生成能力结合,既能精准定位课堂教学的问题点,又能输出可落地的改进建议。该方案可广泛应用于教师教学反思、学校课堂质量评估、教研活动等场景,为教育教学质量提升提供数据化、智能化的支撑。
在实际应用中,可根据具体的课堂评估体系调整indicators字典的指标定义,优化提示词以适配不同的教学场景(如小学、中学、不同学科),进一步提升分析结果的精准性和实用性。
