techAsmita/Second-Year-Projects

GitHub: techAsmita/Second-Year-Projects

一个大二学生的双项目作品集,包含一个管理黑客马拉松完整流程的全栈 Web 应用和一个基于 BERT 微调的英文性别歧视文本检测模型。

Stars: 0 | Forks: 0

# 🎓 大二项目 — Asmita Roy 这是我在 Thapar Institute of Engineering & Technology 计算机工程专业大二期间开发的一系列项目,涵盖了全栈 Web 开发、数据库设计以及基于 transformers 的 NLP。 ## 📁 项目 ### 1. 🏆 Hackathon 管理系统 ### 2. 🧠 基于微调 BERT 的性别歧视检测 ## 🏆 项目 1:Hackathon 管理系统 ### 概述 这是一个基于 Flask 的 Web 应用程序,由 Oracle XE 数据库提供支持,负责处理黑客马拉松的完整生命周期——团队和成员注册、签到、物理资源分配、导师/评委打分、提交跟踪以及最终分数汇总。 ### 功能 - **团队与成员管理** — 跨学院注册团队和成员;通过存储过程自动更新成员人数 - **签到系统** — 基于时间戳的成员签到,并在首次签到时自动分配桌子 - **资源分配** — 为每个团队分配桌子和延长线 - **双向打分** — 独立的导师和评委打分流程;分数实时汇总到最终评分表中 - **提交跟踪** — 团队通过 POST 表单提交 PPT 链接和 GitHub 仓库 URL - **导师与评委名录** — 提供所有导师和评委的专用视图 ### 技术栈 | 层级 | 技术 | |---|---| | Backend | Python, Flask | | Database | Oracle XE (通过 cx_Oracle) | | DB 层 | 存储过程 (PL/SQL), 序列 | | Frontend | HTML/Jinja2 模板 (10 个页面) | | 配置 | python-dotenv (.env 用于存储 DB 凭据) | ### 数据库 Schema 包含 12 个具有完整关系完整性的表: `TEAM` → `MEMBER` → `CHECK_INTIME` `TEAM` → `TABLE_ALLOCATION` (签到时通过序列自动分配) `TEAM` → `EXTENTION_BOARD_ALLOCATION` `MENTORS` → `MENTOR_SCORES` → `FINAL_SCORESHEETS` `JUDGES` → `JUDGE_SCORES` → `FINAL_SCORESHEETS` `TEAM` → `SUBMISSIONS` ### 存储过程 (PL/SQL) - `insert_team` — 自动递增 TEAM_ID 并插入 - `insert_member` — 插入成员并更新团队的成员人数 - `check_in_member` — 记录时间戳,如果尚未分配则自动分配桌子 - `update_submissions` — 记录 PPT 和 GitHub 链接并初始化评分表行 - `add_mentor_scores` — 插入分数并重新计算累计导师分数及最终分数 - `add_judges_scores` — 插入分数并更新评分表中的评委分数及最终分数 ### 项目结构 ``` main.py # Flask routes (11 GET + POST endpoints) new.py # Oracle DB layer (execute_sql_query / execute_sql_statement) creation.sql # Full schema: CREATE TABLE, sequences, stored procedures, seed data templates/ # 10 Jinja2 HTML templates ├── index.html ├── teams.html ├── members.html ├── mentor_judges.html ├── mentorScoring.html ├── judgesScoring.html ├── finalScoresheet.html ├── checkin.html ├── submissions.html └── extensions.html requirements.txt # cx_Oracle, flask, flask-cors, python-dotenv ``` ### 配置与运行 ``` # 安装依赖项 pip install -r requirements.txt # 添加一个包含您的 Oracle 凭据的 .env 文件 DB_USER=your_username DB_PASSWORD=your_password # 在本地端口 1521 上运行 Oracle XE,服务名为 XEPDB1 # 然后初始化 schema sqlplus your_username/your_password@XEPDB1 @creation.sql # 启动 Flask 应用 python main.py # 运行于 http://localhost:8080 ``` ## 🧠 项目 2:基于微调 BERT 的性别歧视检测 ### 概述 这是一个文本分类项目,通过微调 `bert-base-uncased` 来检测英文句子中的性别歧视语言。使用 HuggingFace `lidiapierre/fr_sexism_labelled` 数据集进行训练,采用 Trainer API 并针对 Google Colab 进行了内存优化设置。 ### 功能 - 微调 `bert-base-uncased` 以进行二分类(性别歧视 / 非性别歧视) - 内存优化训练:FP16 混合精度、梯度累积(4 步)、梯度检查点 - 自定义 `compute_metrics` — 准确率、F1、精确率、召回率(支持二分类和宏平均) - 通过 `predict_sexism()` 进行批量推理,支持感知设备的张量放置 - 集成 HuggingFace `pipeline`,实现简洁的单行推理 - 模型保存至 Google Drive,并支持导出为 `.zip` ### 技术栈 | 组件 | 工具 | |---|---| | 模型 | `bert-base-uncased` (HuggingFace) | | 数据集 | `lidiapierre/fr_sexism_labelled` | | 训练 | HuggingFace `Trainer` API | | 指标 | scikit-learn (准确率、F1、精确率、召回率) | | 环境 | Google Colab (GPU) | | 存储 | Google Drive | ### 训练配置 | 参数 | 值 | |---|---| | 学习率 | 2e-5 | | Epochs | 4 | | Batch Size | 8 | | 梯度累积步数 | 4 | | 混合精度 | FP16 | | 最佳模型指标 | 准确率 | | 最大序列长度 | 128 | ### 预测示例 ``` clf_pipeline("She is a terrible leader.") # → Sexist clf_pipeline("Everyone deserves equal opportunities regardless of gender.") # → Not Sexist clf_pipeline("She can't be a doctor, she should be a nurse.") # → Sexist clf_pipeline("Anyone can be a doctor.") # → Not Sexist ``` ### 运行方式 1. 在 Google Colab 中打开 `AI project_Asmita.ipynb` 2. 按顺序运行所有单元格——数据集加载、分词、训练和推理均为完整的端到端流程 3. 训练好的模型将保存到您 Google Drive 的 `AI_Project/SexismDetection/model/` 目录下 ## 👩‍💻 作者 **Asmita Roy** 计算机工程 (2023–2027), Thapar Institute of Engineering & Technology, Patiala [GitHub](https://github.com/techAsmita) • [LinkedIn](https://linkedin.com/in/techasmita) • asmitaasmani@gmail.com
标签:Oracle, PL/SQL, 数据库设计, 文本分类, 活动管理系统, 逆向工具