摘要随着教育信息化的快速发展学生多维行为数据学业成绩、考勤记录、消费行为等的积累为精准教育提供了数据基础。然而传统的基于规则的用户画像方法存在维度孤立、语义缺失、输出不可读等缺陷。本文提出了一种基于大语言模型LLM的学生画像构建方法利用通义千问等大语言模型对学生的多维度数据进行深度理解和语义化描述。实验结果表明与传统方法相比LLM方法能够更好地理解数据间的关联关系生成更具语义丰富性和可读性的学生画像为个性化教育提供有力支持。关键词用户画像大语言模型教育数据分析个性化推荐学生画像一、引言在当今数据驱动的教育时代学校积累了大量的学生数据包括学业成绩、考勤记录、消费行为等。如何从这些数据中提取有价值的信息构建精准的学生画像对于实现个性化教育和精准管理具有重要意义。传统的用户画像构建方法主要依赖于人工设定的规则和阈值例如根据考试分数划分学霸中等学困等级别。虽然这些方法简单易行但存在明显的局限性维度孤立各维度标签独立生成无法捕捉维度间的关联语义缺失只能给出离散标签丢失了数据中的丰富语义输出不可读标签拼接的结果缺乏连贯性难以直接使用近年来大语言模型Large Language Model, LLM的快速发展为解决这些问题提供了新的思路。LLM具有强大的语义理解和文本生成能力能够从多维度数据中提取深层特征生成自然、连贯、个性化的用户画像。本文旨在分析传统画像方法的缺陷提出基于LLM的学生画像构建方法通过实验对比两种方法的优劣探讨LLM在教育领域的应用前景二、数据准备与特征工程2.1 数据来源本研究使用的数据集来自某中学的教育管理信息系统包含以下数据表数据表记录数字段数教师信息表3,0888学生信息表1,76514考勤记录表23,63010考勤类型表154成绩记录表471,68613考试类型表212消费记录表463,90452.2 数据预处理def clean_data(df_chengji, df_consumption, df_kaoqin): 数据清洗 # 成绩数据清洗转换为数值类型处理异常值 df_chengji[mes_Score] pd.to_numeric(df_chengji[mes_Score], errorscoerce) df_chengji.loc[df_chengji[mes_Score] 0, mes_Score] np.nan # 消费数据清洗取绝对值转换时间格式 df_consumption[MonDeal] df_consumption[MonDeal].abs() df_consumption[DealTime] pd.to_datetime(df_consumption[DealTime]) # 考勤数据清洗 df_kaoqin[DataDateTime] pd.to_datetime(df_kaoqin[DataDateTime], errorscoerce) return df_chengji, df_consumption, df_kaoqin2.3 学生多维特征构建为了全面刻画学生特征我们构建了学业、考勤、消费三个维度的特征def build_student_features(df_student, df_chengji, df_kaoqin, df_consumption): 构建学生多维特征 # 1. 学业特征均分、标准差、考试次数等 student_score df_chengji.groupby(mes_StudentID).agg( avg_score(mes_Score, mean), std_score(mes_Score, std), exam_count(mes_Score, count) ).reset_index() # 2. 各学科均分 subject_scores df_chengji.pivot_table( indexmes_StudentID, columnsmes_sub_name, valuesmes_Score, aggfuncmean ).reset_index() # 3. 考勤特征考勤异常总次数 student_kaoqin df_kaoqin.groupby(bf_studentID).agg( kaoqin_total(kaoqing_id, count) ).reset_index() # 4. 消费特征日均消费、消费天数等 student_consumption df_consumption.groupby(bf_StudentID).agg( total_spending(MonDeal, sum), daily_avg(MonDeal, mean) ).reset_index() # 合并所有特征 df_profile df_student[[bf_StudentID, bf_Name, bf_sex, cla_Name]].copy() df_profile df_profile.merge(student_score, onbf_StudentID, howleft) df_profile df_profile.merge(student_kaoqin, onbf_StudentID, howleft) df_profile df_profile.merge(student_consumption, onbf_StudentID, howleft) return df_profile2.4 数据概况经过特征工程后我们构建了包含1,765名学生、29个特征维度的综合数据集维度覆盖人数覆盖率学业数据1,571人89.0%考勤数据1,007人57.1%消费数据1,730人98.0%三、传统方法基于规则的用户画像构建3.1 学业表现标签传统方法采用固定阈值划分学业等级def assign_academic_label_v1(avg_score): if pd.isna(avg_score): return 未知 if avg_score 90: return 学霸 elif avg_score 75: return 优良 elif avg_score 60: return 中等 else: return 学困标签分布等级人数占比学困1,21068.6%中等36020.4%未知19411.0%优良10.1%3.2 学科特征标签根据文理科成绩差异判断偏科情况def assign_subject_label(row): science [subj_数学, subj_物理, subj_化学, subj_生物] arts [subj_语文, subj_英语, subj_政治, subj_历史, subj_地理] sci_avg np.mean([row[s] for s in science if pd.notna(row.get(s))]) art_avg np.mean([row[s] for s in arts if pd.notna(row.get(s))]) diff sci_avg - art_avg if diff 10: return 偏理科 elif diff -10: return 偏文科 else: return 均衡型3.3 学习态度标签基于考勤异常次数评估学习态度def assign_attendance_label(total): if total 0: return 全勤标兵 elif total 3: return 正常 else: return 考勤预警3.4 消费行为标签采用分位数方法划分消费水平q25 df_profile[daily_avg].quantile(0.25) # 18.32元 q75 df_profile[daily_avg].quantile(0.75) # 27.55元 def assign_consumption_label(daily_avg): if pd.isna(daily_avg): return 未知 if daily_avg q75: return 高消费 elif daily_avg q25: return 适中 else: return 节俭3.5 综合画像传统方法通过标签拼接生成综合画像df_profile[traditional_profile] df_profile.apply( lambda row: f学业:{row[academic_label_v1]} | 学科:{row[subject_label]} | f考勤:{row[attendance_label]} | 消费:{row[consumption_label]}, axis1 )示例输出学生A学业:学困 | 学科:均衡型 | 考勤:正常 | 消费:节俭学生B学业:中等 | 学科:均衡型 | 考勤:考勤预警 | 消费:适中四、传统方法的三大缺陷4.1 缺陷D1维度孤立传统方法将各维度独立处理无法理解跨维度的关联关系。实验分析考勤 × 学业 交叉表考勤标签中等优良学困未知合计全勤标兵35163191758正常103030653462考勤预警222027350545合计36011,2101941,765关键发现在考勤预警群体中仍有222名学生成绩达到中等水平这种考勤差但成绩尚可的矛盾现象传统方法无法给出合理解释这些学生可能天资聪颖但自律不足需要的是引导而非警告4.2 缺陷D2语义缺失传统标签完全丢失了数据中的丰富行为语义。实验分析我们对消费时段进行细分时段占比午餐54.3%晚餐22.2%早餐12.2%课间/下午11.4%对比两个日均消费相近的学生学生日均消费消费时段分布张某某22.0元早餐33.8% 午餐27.4% 晚餐32.5% 课间6.4%朱某某23.5元早餐0.5% 午餐54.1% 晚餐36.9% 课间8.6%问题分析传统方法给两人相同的适中标签但张某某饮食规律三餐均衡朱某某午餐和晚餐占比较高这种差异反映了不同的生活习惯传统标签完全忽略4.3 缺陷D3输出不可读传统方法输出的标签拼接结果缺乏连贯性难以直接使用。示例对比学生焦某某女东-高一(03)数据均分59.4 | 考勤0次 | 日均消费20.8元传统画像学业:学困 | 学科:均衡型 | 考勤:全勤标兵 | 消费:适中学生温某某女高三(09)数据均分56.9 | 考勤12次 | 日均消费10.4元传统画像学业:学困 | 学科:均衡型 | 考勤:考勤预警 | 消费:节俭问题这种标签拼接让教师难以快速理解学生情况缺乏连贯的语义描述无法直接用于家校沟通无法表达该生虽然成绩暂时落后但学习态度端正等细微差别五、大语言模型方法5.1 方法设计大语言模型方法的核心思路是将学生的多维度数据构建为结构化文本利用LLM的语义理解能力生成自然语言画像。系统提示词设计SYSTEM_PROMPT 你是一位资深的教育数据分析师擅长根据学生的多维度数据构建精准的学生画像。 你的任务是根据提供的学生数据生成一份完整的学生画像报告。 输出要求 1. 必须输出严格的JSON格式 2. JSON结构如下 { academic_level: 学业等级, subject_profile: 学科特征, learning_attitude: 学习态度评价, behavior_pattern: 行为模式, strengths: [优势1, 优势2], weaknesses: [待改进1, 待改进2], suggestions: [具体建议1, 具体建议2], overall_description: 一段100-150字的完整画像描述 } 分析原则 - 不要使用固定阈值而是基于对数据的整体理解进行判断 - 关注维度之间的关联如考勤与成绩的关系 - 给出具体、可操作的建议而非笼统的评价 - 画像描述要体现学生的个性特点避免千篇一律5.2 数据摘要构建将学生的结构化数据转换为文本摘要def build_student_summary(row): 将学生的多维数据构建为结构化文本摘要 summary [] summary.append(【基本信息】) summary.append(f姓名: {row[bf_Name]}, 性别: {row[bf_sex]}, 班级: {row[cla_Name]}) summary.append(\n【学业表现】) if pd.notna(row.get(avg_score)): summary.append(f考试均分: {row[avg_score]:.1f}分) summary.append(f各科均分: 语文:59, 数学:55, 英语:62, ...) summary.append(\n【考勤情况】) summary.append(f考勤异常总次数: {int(row.get(kaoqin_total, 0))}次) summary.append(\n【消费情况】) if pd.notna(row.get(daily_avg)): summary.append(f日均消费: {row[daily_avg]:.1f}元) return \n.join(summary)数据摘要示例text【基本信息】 姓名: 陈某某, 性别: 女, 班级: 白-高二(01) 【学业表现】 考试均分: 57.8分, 成绩标准差: 34.0 参加考试次数: 136次 各科均分: 语文:59, 数学:55, 英语:62, 物理:56, 化学:58, 生物:61, 政治:50, 历史:52, 地理:50 【考勤情况】 考勤异常总次数: 2次 【消费情况】 日均消费: 15.7元 消费总天数: 74天 消费总笔数: 115笔5.3 LLM调用实现def call_qwen(student_data, max_retries3): 调用通义千问API生成学生画像 user_prompt USER_PROMPT_TEMPLATE.format(student_datastudent_data) for attempt in range(max_retries): try: response client.chat.completions.create( modelqwen-plus, messages[ {role: system, content: SYSTEM_PROMPT}, {role: user, content: user_prompt} ], temperature0.3, response_format{type: json_object} ) result response.choices[0].message.content return json.loads(result) except Exception as e: if attempt max_retries - 1: time.sleep(2 ** attempt) else: print(fAPI调用失败: {e}) return None5.4 LLM生成画像示例示例1学业中等偏下考勤优秀的学生json{ academic_level: 中等偏下, subject_profile: 各科发展均衡, learning_attitude: 考勤表现优秀学习态度端正, behavior_pattern: 消费水平较高建议关注消费习惯, strengths: [考勤表现优秀, 学习态度端正], weaknesses: [学业水平有待提升, 各科成绩较为平均缺乏优势学科], suggestions: [ 建议制定学习计划重点突破薄弱学科, 可以尝试建立学习小组通过同伴互助提升学习效果 ], overall_description: 该生学业水平为中等偏下各科发展均衡。考勤表现优秀学习态度端正。消费水平较高建议关注消费习惯。 }示例2学业中等文科优势明显的学生json{ academic_level: 中等, subject_profile: 文科优势明显, learning_attitude: 考勤存在一定问题需关注自律习惯, behavior_pattern: 消费适中生活规律, strengths: [文科成绩较好, 生活规律], weaknesses: [考勤记录有待改善, 学习自律性需加强], suggestions: [ 建议制定合理的作息时间表改善考勤记录, 可以发挥文科优势参加相关的学科竞赛或活动 ], overall_description: 该生学业水平为中等文科优势明显。考勤存在一定问题需关注自律习惯。消费适中生活规律。 }六、对比分析与讨论6.1 画像质量对比维度传统方法LLM方法表达能力离散标签自然语言描述维度关联独立处理综合分析语义丰富度低高可读性差标签拼接好连贯描述个性化程度低固定模板高针对性分析可操作性弱仅分类强具体建议6.2 关键差异分析1. 维度理解能力传统方法只能输出独立的维度标签而LLM能够发现考勤预警但成绩中等背后的深层原因理解消费适中可能对应不同的生活模式综合多维度信息做出整体判断2. 语义表达能力LLM生成的关键词统计关键词出现次数关注3次习惯3次均衡3次建议2次规律2次传统方法的标签中完全不会出现自律习惯潜力等行为语义词。3. 可操作性LLM画像提供了具体的建议例如建议制定合理的作息时间表改善考勤记录可以发挥文科优势参加相关的学科竞赛或活动这些建议可以直接用于家校沟通和学生指导。6.3 局限性与展望局限性依赖API服务存在成本问题需要较长的处理时间批量处理时生成质量依赖于提示词设计未来展望使用开源模型降低部署成本引入RAG技术增强生成准确性结合知识图谱实现更精准的教育推荐开发实时学生画像系统七、总结本文对比了基于规则的传统方法与基于大语言模型的LLM方法在学生画像构建上的差异。主要结论如下传统方法三大缺陷维度孤立D1无法理解考勤差但成绩好等跨维度关联现象语义缺失D2消费时段等丰富行为信息被完全忽略输出不可读D3标签拼接难以直接用于沟通和指导LLM方法核心优势✅天然理解多维度数据的交叉关联✅从数据中推断行为模式和趋势✅直接生成连贯的自然语言画像报告✅提供具体、可操作的建议