This commit is contained in:
letai2001 2026-01-18 02:15:31 +07:00
parent ed140dade9
commit ab717695d5
1 changed files with 257 additions and 0 deletions

257
PROJECT_STRUCTURE.md Normal file
View File

@ -0,0 +1,257 @@
# 📁 Cấu Trúc Project - Tóm Tắt
## 🎯 Tổng Quan Nhanh
**Mục đích:** Dự đoán số nhân sự cần thiết cho mỗi ca làm việc dựa trên đặc điểm tòa nhà và công việc.
---
## 📊 Luồng Dữ Liệu
```
data_raw/
├── Link LLV 1_5_2025.json → Thông tin ca làm việc, công việc
└── Link LLV 2025_clean.json → Đặc điểm vật lý tòa nhà (diện tích TỔNG các tầng)
[Tiền xử lý & Feature Engineering]
final_2.csv/xlsx → Dataset training (đã có text features)
[ML Training Pipeline]
artifacts/ → Models đã train
outputs/ → Kết quả validation
```
---
## 🔄 Luồng Prediction
```
input.json (1 ca làm việc)
all_predict.py
├── Gọi predict.py → Trích xuất keyword features từ text
├── Tiền xử lý các trường diện tích, đặc điểm tòa nhà
├── Kết hợp tất cả features
├── Load model từ artifacts/
└── Dự đoán
Output: Số nhân sự cần thiết
```
---
## 📂 Cấu Trúc Thư Mục
### 📁 **data_raw/** - Dữ liệu gốc
- `Link LLV 1_5_2025.json` - Ca làm việc, công việc normal + dinhky
- `Link LLV 2025_clean.json` - Diện tích tòa nhà (⚠️ TỔNG các tầng)
### 📁 **artifacts/** - Models
- `extratrees_log1p.joblib` - Model chính
- `extratrees_staff_model.joblib` - Model dự đoán nhân sự
- `model_meta.joblib` - Metadata
- `X_proc_columns.joblib` - Danh sách features
### 📁 **outputs/** - Kết quả
- `val_predictions_extratrees.csv` - So sánh y_true vs y_pred trên validation set
### 📁 **models/** - Models cũ
- Các models từ thử nghiệm trước
---
## 🔧 Files Script Chính
### 1. **predict.py** 🔤
**Vai trò:** Trích xuất keyword features từ text công việc
**Input:**
- `task_normal` (str): Công việc hằng ngày
- `task_dinhky` (str): Công việc định kỳ tuần/tháng
**Output:**
- JSON string chứa 18 text features
**Được gọi bởi:** `all_predict.py`
---
### 2. **all_predict.py** 🎯
**Vai trò:** Script chính để dự đoán
**Workflow:**
1. Đọc `input.json`
2. **Gọi `predict.py`** để trích xuất keyword features
3. Tiền xử lý các trường khác (diện tích, đặc điểm tòa nhà)
4. Kết hợp tất cả features
5. Load model từ `artifacts/`
6. Dự đoán và trả về kết quả
**Input:** `input.json` (1 ca làm việc)
**Output:** Số nhân sự dự đoán
---
### 3. **extract_25_features_new.py** 📊
**Vai trò:** Trích xuất features từ text (phiên bản đầy đủ)
Tương tự `predict.py` nhưng với nhiều features hơn
---
### 4. **merge_all_features.py** 🔗
**Vai trò:** Gộp features từ nhiều nguồn
Tạo dataset hoàn chỉnh cho training
---
## 📄 Files Dữ Liệu
### **final_2.csv / final_2.xlsx** 📈
**Vai trò:** Dataset chính để training model
**Nguồn:**
- Ca làm việc ← `Link LLV 1_5_2025.json`
- Diện tích tòa nhà ← `Link LLV 2025_clean.json` (⚠️ TỔNG các tầng)
- Text features ← Trích xuất từ `all_task_normal` + `all_task_dinhky`
**Features:**
- Thông tin ca: `ca_sang`, `ca_chieu`, `ca_toi`, `ca_dem`
- Diện tích: `dien_tich_hanh_lang`, `dien_tich_wc`, v.v.
- Text features: `num_cleaning_tasks`, `cleaning_ratio`, v.v.
- Target: `so_nhan_su`
---
### **input.json** 🎯
**Vai trò:** File input mẫu cho prediction
**Nội dung:**
- Thông tin tòa nhà: `ma_dia_diem`, `so_tang`, `so_cua_thang_may`
- Thông tin ca: `loai_ca`, `bat_dau`, `ket_thuc`, `tong_gio_lam`
- Công việc:
- `all_task_normal` - Công việc **HẰNG NGÀY**
- `all_task_dinhky` - Công việc **ĐỊNH KỲ (tuần/tháng)**
- Diện tích: `dien_tich_*` (⚠️ TỔNG các tầng)
- Đặc điểm: `doc_ham`, `op_tuong`, v.v.
---
### **input_explained.jsonc** 📚
**Vai trò:** File giải thích chi tiết các trường trong input.json
Có comments đầy đủ (file JSONC)
---
## 📓 Notebooks
### **All_feature_Readme.ipynb**
Chi tiết về text features
### **ML_Training_Pipeline_Complete.ipynb**
Pipeline training model hoàn chỉnh
### **ML_Training_Pipeline.ipynb**
Pipeline training cơ bản
---
## 📖 Documentation
### **README.md** 📘
Tài liệu chính của project
### **TASK_TYPES_GUIDE.md** 📋
Hướng dẫn phân biệt 2 loại công việc:
- `all_task_normal` (hằng ngày)
- `all_task_dinhky` (định kỳ tuần/tháng)
### **COMPLETE_25_FEATURES.md** 📝
Giải thích 25 features được trích xuất
### **ML_PIPELINE_PLAN.md** 🗺️
Kế hoạch pipeline ML
---
## ⚠️ Lưu Ý Quan Trọng
### 1. Về Diện Tích
> **Tất cả diện tích là TỔNG của TẤT CẢ các tầng!**
>
> Ví dụ: 12 tầng × 150m²/tầng = 1800m²
>
> KHÔNG PHẢI 150m²!
### 2. Về Công Việc
- `all_task_normal`: Làm **MỖI NGÀY**
- `all_task_dinhky`: Làm **THEO TUẦN/THÁNG**
- Model **GỘP CẢ 2** để phân tích
### 3. Về Pipeline Prediction
```
input.json → all_predict.py → predict.py → features → model → output
[Tiền xử lý các trường khác]
[Kết hợp features]
[Load model]
[Predict]
```
---
## 🚀 Quick Start
### Dự đoán cho 1 ca:
```bash
# 1. Chuẩn bị input.json
# 2. Chạy prediction
python all_predict.py
# 3. Xem kết quả
```
### Xem kết quả validation:
```bash
# Mở file outputs/val_predictions_extratrees.csv
# Cột: y_true (thực tế), y_pred (dự đoán), error
```
### Test keyword extraction:
```python
from predict import extract_text_features_to_json
json_result = extract_text_features_to_json(
"Lau sàn WC; Thu rác",
"Cọ bồn cầu; Đánh sàn"
)
print(json_result)
```
---
## 📞 Tài Liệu Tham Khảo
| Thắc mắc về... | Xem tài liệu |
|----------------|--------------|
| Tổng quan project | `README.md` |
| Phân loại công việc | `TASK_TYPES_GUIDE.md` |
| Text features | `All_feature_Readme.ipynb` |
| Input format | `input_explained.jsonc` |
| Pipeline | `README.md` → Pipeline Dự Đoán |
| Validation | `outputs/val_predictions_extratrees.csv` |
---
<div align="center">
**✅ Đọc `README.md` để biết chi tiết hơn!**
</div>