Skip to content

sebeoffice/newc3

Repository files navigation

EduAdmin 主观题自动化评估系统

License: MIT Python 3.9+ Go 1.21+ Vue 3

🎯 项目概述

EduAdmin主观题自动化评估系统是一个基于微服务架构的智能教育评估平台,集成了先进的NLP算法,能够自动评估主观题答案并提供详细的反馈。系统采用BCHS + REWT + CAMF算法组合,实现高精度、可解释的主观题自动评分。

✨ 功能特性

🧠 智能评估

  • 自动评分: 对主观题(简答/论述)在学生提交后自动打分
  • 多维度分析: 语义相似度、关键词匹配、表达连贯性三维评估
  • 实时反馈: 提供详细的评估说明和改进建议

👨‍🏫 教师功能

  • 评分管理: 查看系统分与子项得分详情
  • 关键词分析: 显示核心、相关、辅助关键词命中情况
  • 人工干预: 支持教师覆盖系统评分,实现人机协作
  • 统计分析: 提供评分分布、趋势分析等统计功能

👨‍🎓 学生功能

  • 成绩查询: 查看总分与详细反馈
  • 学习建议: 基于评估结果提供个性化学习建议
  • 进度跟踪: 记录学习进度和成绩变化

🔧 技术特性

  • 多语言支持: 支持中文、英文、乌克兰语等多种语言
  • 动态优化: 基于人工反馈的权重自适应优化
  • 高可用性: 微服务架构,支持水平扩展
  • 可解释性: 提供详细的评估过程和解释

🏗️ 技术架构

┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│   前端管理端     │    │   前端学员端     │    │   eval-service   │
│   (Vue 3)       │    │   (Vue 3)       │    │  (Python+FastAPI)│
│   Port: 8080    │    │   Port: 8081    │    │   Port: 8000    │
└─────────────────┘    └─────────────────┘    └─────────────────┘
         │                       │                       │
         └───────────────────────┼───────────────────────┘
                                 │
                    ┌─────────────────┐
                    │   Go 后端服务    │
                    │   Port: 8080    │
                    └─────────────────┘
                                 │
                    ┌─────────────────┐
                    │   MySQL 数据库   │
                    │   Port: 3306    │
                    └─────────────────┘
                                 │
                    ┌─────────────────┐
                    │   Redis 缓存     │
                    │   Port: 6379    │
                    └─────────────────┘

核心组件

  • eval-service: Python + FastAPI 微服务,实现NLP算法
  • go-backend: Go 后端服务,处理业务逻辑和API
  • frontend: Vue 3 前端,提供管理端和学员端界面
  • database: MySQL 数据库,存储评估数据和配置
  • cache: Redis 缓存,提升系统性能

🚀 快速开始

环境要求

  • Docker 20.10+
  • Docker Compose 2.0+
  • 至少 4GB 可用内存
  • 至少 10GB 可用磁盘空间

一键启动

# 克隆项目
git clone <repository-url>
cd eduadmin-subjective-evaluation

# 启动所有服务
./run.sh

# 或者使用 Docker Compose
docker-compose up -d

访问系统

运行演示

# 运行演示脚本
python demo.py

📁 项目结构

eduadmin-subjective-evaluation/
├── eval-service/              # Python 微服务
│   ├── app/
│   │   ├── api/              # API 路由
│   │   ├── core/             # 核心模块
│   │   └── main.py           # 应用入口
│   ├── tests/                # 测试文件
│   ├── config/               # 配置文件
│   ├── requirements.txt      # Python 依赖
│   └── Dockerfile            # Docker 配置
├── go-backend/               # Go 后端服务
│   ├── internal/
│   │   ├── config/           # 配置管理
│   │   ├── database/         # 数据库操作
│   │   ├── handlers/         # 请求处理
│   │   ├── models/           # 数据模型
│   │   ├── services/         # 业务逻辑
│   │   └── middleware/       # 中间件
│   ├── go.mod               # Go 模块文件
│   └── Dockerfile           # Docker 配置
├── frontend/                 # Vue 前端
│   ├── src/
│   │   ├── admin/           # 管理端
│   │   ├── student/         # 学员端
│   │   └── api/             # API 客户端
│   ├── package.json         # 前端依赖
│   └── Dockerfile.*         # Docker 配置
├── database/                 # 数据库脚本
│   └── init.sql             # 初始化脚本
├── docs/                     # 文档
│   ├── API.md               # API 文档
│   ├── ALGORITHM.md         # 算法详解
│   └── DEPLOYMENT.md        # 部署指南
├── docker-compose.yml        # Docker Compose 配置
├── run.sh                    # 启动脚本
├── stop.sh                   # 停止脚本
├── demo.py                   # 演示脚本
└── README.md                 # 项目说明

🧮 算法详解

BCHS 算法(贝叶斯校正语义相似度)

  • 计算参考答案与学生答案的余弦相似度
  • 使用贝叶斯校正提高相似度计算的准确性
  • 考虑历史评分分布的先验知识

REWT 算法(动态权重优化)

  • 基于人工反馈动态调整评估权重
  • 公式:w_new = 0.7 × w_initial + 0.3 × (HumanScore / SystemScore) × w_initial
  • 避免全局漂移,保持系统稳定性

CAMF 算法(得分整合)

  • 综合语义、关键词、连贯性三个维度
  • 公式:FinalScore = 0.6 × Semantic + 0.3 × KeyTerm + 0.1 × Coherence
  • 提供可解释的最终评分

特征提取

  • TF-IDF × Word2Vec 融合: 结合词频和语义信息
  • 动态阈值: 自适应过滤低重要性词汇
  • 关键词分级: 核心、相关、辅助三级关键词体系

📊 性能指标

  • 评估准确率: 与人工评分相关性 > 0.85
  • 响应时间: 单次评估 < 3秒
  • 并发处理: 支持 100+ QPS
  • 可用性: 99.9% 服务可用性

🔧 配置说明

环境变量

# 数据库配置
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=eduadmin
MYSQL_PASSWORD=eduadmin123
MYSQL_DATABASE=eduadmin

# Redis 配置
REDIS_HOST=localhost
REDIS_PORT=6379

# 评估服务配置
EVAL_SERVICE_URL=http://eval-service:8000

算法参数

algorithm:
  weights:
    semantic: 0.6      # 语义权重
    keyterm: 0.3       # 关键词权重
    coherence: 0.1     # 连贯性权重
  tfidf_threshold_factor: 0.15  # TF-IDF 阈值因子
  rewt:
    learning_rate: 0.3  # 学习率
    momentum: 0.7       # 动量

📚 文档

🧪 测试

# 运行 Python 测试
cd eval-service
python -m pytest tests/

# 运行 Go 测试
cd go-backend
go test ./...

# 运行前端测试
cd frontend
npm test

🤝 贡献指南

  1. Fork 项目
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 打开 Pull Request

📄 许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情

🙏 致谢

  • FastAPI - 现代、快速的 Web 框架
  • Vue.js - 渐进式 JavaScript 框架
  • Gin - Go Web 框架
  • Element Plus - Vue 3 组件库
  • Gensim - 主题建模和文档相似性分析

📞 联系我们


⭐ 如果这个项目对您有帮助,请给我们一个 Star!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors