"Studi Akurasi Kombinasi CodeBERT dan Token-based Similarity untuk Mengevaluasi Functional Equivalence Code"
Mengukur akurasi dua metode (CodeBERT + Token Similarity) dalam mengevaluasi kesesuaian code mahasiswa dengan expected outcomes, tanpa harus menjalankan code.
- Sistem evaluasi otomatis
- Similarity score (0-100%)
- Accuracy report dari kedua metode
- Analisis perbandingan akurasi
Yang perlu disiapkan:
- GitHub project URL dari mahasiswa
- Text description of requirements (ekspektasi proyek)
- Reference solution code (kode ideal/standar)
Deliverables:
- GitHub repository URL parser
- Requirements documentation format standardizer
- Reference code storage system
Fungsi:
- Convert code menjadi semantic embeddings
- Understand code intent/functionality secara semantic
- Generate embedding untuk student code, reference code, requirements
Components yang perlu dibuat:
- CodeBERT model loader (from HuggingFace)
- Code preprocessing pipeline (standardisasi format input)
- Embedding generator (generate vector representations)
- Semantic similarity calculator (cosine similarity antara embeddings)
Input:
- Student code (text)
- Reference code (text)
- Requirements text (optional)
Output:
- CodeBERT similarity score (0-1, converted to 0-100%)
- Confidence metrics
Workflow:
Raw Code → Preprocessing → CodeBERT Model → Embeddings → Cosine Similarity → Score
Fungsi:
- Simple baseline method
- Extract tokens dari code
- Compare token overlap antara student vs reference
Components yang perlu dibuat:
- Code tokenizer (split code into meaningful tokens)
- Token extractor (extract function names, variables, keywords)
- Token comparison engine (Jaccard similarity, overlap percentage)
- Scoring mechanism
Input:
- Student code (text)
- Reference code (text)
Output:
- Token similarity score (0-1, converted to 0-100%)
- Token overlap details (matched tokens, missing tokens, extra tokens)
Workflow:
Code → Tokenization → Token Extraction → Token Comparison → Jaccard/Overlap Score
Fungsi:
- Combine scores dari kedua metode
- Generate final evaluation score
Mechanism:
- Average: (CodeBERT_score + Token_score) / 2
- Weighted: (CodeBERT_score × w1) + (Token_score × w2), dimana w1+w2=1
- Custom logic: bisa disesuaikan
Output:
- Final similarity score (0-100%)
- Individual scores dari masing-masing metode
- Breakdown analysis
Fungsi:
- Measure seberapa akurat sistem evaluate code
- Compare dengan ground truth (manual evaluation)
Components yang perlu dibuat:
- Ground truth dataset (manual grading dari dosen)
- Accuracy metrics calculator (Precision, Recall, F1, MAE, RMSE, dll)
- Comparison visualizer
- Confusion matrix generator
Metrics yang diukur:
- Mean Absolute Error (MAE) - rata-rata error dari predictions
- Root Mean Squared Error (RMSE) - error dengan penalti untuk deviasi besar
- Correlation coefficient - seberapa korelasi predicted score vs actual score
- Classification accuracy (jika pakai threshold, e.g., pass/fail)
Output:
- Accuracy report per metode
- Accuracy report combined
- Error analysis (kapan sistem salah evaluasi)
- Visualization (scatter plot, confusion matrix, dll)
Components yang perlu dibuat:
- Web dashboard (input form untuk URL, generate report)
- Report generator (HTML/PDF output)
- Visualization (chart, graphs, heatmap)
- Logging system (track semua evaluations)
Report Content:
- Student info
- Requirements summary
- CodeBERT score + details
- Token similarity score + details
- Final combined score
- Evaluation result (Pass/Fail dengan threshold)
- Recommendations (apa yang perlu diperbaiki)
Aktivitas:
- Kumpulkan ~20-30 student projects (untuk dataset awal)
- Dokumentasikan requirements setiap project
- Pilih/buat reference solutions
- Manual evaluation oleh dosen (ground truth)
Output:
- Dataset dengan 20-30 projects
- Ground truth labels (manual scores/pass-fail)
Aktivitas:
- Clone repositories dari GitHub
- Extract code files
- Clean/standardize code format
- Handle different programming languages (jika ada)
Output:
- Preprocessed code dataset ready for analysis
Aktivitas:
- Run CodeBERT module pada semua projects
- Run Token similarity module pada semua projects
- Generate scores untuk semua projects
- Aggregate results
Output:
- Predicted scores dari kedua metode
- Combined final scores
Aktivitas:
- Compare predicted scores vs ground truth
- Calculate accuracy metrics
- Analyze errors dan patterns
- Generate report
Output:
- Accuracy report
- Error analysis
- Recommendations untuk improvement
- Language: Python (recommended)
- CodeBERT: transformers library (HuggingFace)
- Token processing: NLTK, spaCy, atau custom tokenizer
- Similarity calculation: scikit-learn (cosine_similarity)
- Data processing: pandas, numpy
- Web framework: Flask/FastAPI (untuk dashboard)
- Visualization: matplotlib, plotly, seaborn
- GitHub API: PyGithub atau requests
- CodeBERT: microsoft/codebert-base (dari HuggingFace)
- Alternative: CodeT5 (jika butuh lebih powerful)
- Local machine (untuk development)
- GPU (optional, untuk faster CodeBERT inference)
- Git untuk version control
Tasks:
- Setup development environment
- Install libraries & models
- Create project structure
- Create sample datasets (3-5 projects)
Deliverables:
- Dev environment ready
- Sample data prepared
- Project repository initialized
Tasks:
- Implement code preprocessing
- Load CodeBERT model
- Create embedding generator
- Implement similarity calculation
- Test pada sample data
Deliverables:
- Working CodeBERT module
- Test results
- Performance metrics (inference time)
Tasks:
- Design tokenization strategy
- Implement tokenizer
- Implement token comparison engine
- Test pada sample data
- Compare dengan CodeBERT
Deliverables:
- Working Token similarity module
- Comparison analysis CodeBERT vs Token
- Performance metrics
Tasks:
- Integrate kedua modules
- Implement score combination logic
- Create aggregation pipeline
- Test end-to-end
Deliverables:
- Integrated system
- Combined scoring working
- Test reports
Tasks:
- Prepare ground truth dataset (20-30 projects dengan manual evaluation)
- Run full system pada dataset
- Calculate accuracy metrics
- Analyze errors
- Generate accuracy report
Deliverables:
- Accuracy metrics
- Error analysis report
- Findings & insights
Tasks:
- Build simple web dashboard
- Create report generator
- Add visualizations
- Test user interface
Deliverables:
- Working dashboard
- Report templates
- User documentation
Tasks:
- Deep analysis pada results
- Identify when system works/fails
- Write research findings
- Create final report/thesis
Deliverables:
- Research findings document
- Final thesis/paper
- Code documentation
- github_manager.py - Handle GitHub cloning, URL parsing
- code_preprocessor.py - Clean & standardize code
- codebert_evaluator.py - CodeBERT embedding & similarity
- token_similarity_evaluator.py - Token-based evaluation
- score_combiner.py - Combine scores dari kedua metode
- accuracy_calculator.py - Calculate accuracy metrics
- report_generator.py - Generate evaluation reports
- main.py - Orchestrate semua module
- app.py / main.py - Flask/FastAPI application
- templates/index.html - Input form
- templates/result.html - Result display
- static/style.css - Styling
- static/script.js - Frontend logic
- README.md - Project overview & setup
- METHODOLOGY.md - Detailed methodology
- RESULTS.md - Findings & analysis
- API.md - API documentation (jika ada)
- dataset.csv - Ground truth dataset
- results.csv - Evaluation results
- accuracy_report.json - Accuracy metrics
- Similarity score (0-100%) per project
- Individual scores dari CodeBERT & Token similarity
- Evaluation status (Pass/Fail based on threshold)
- Detailed report dengan analysis
- Accuracy of CodeBERT method
- Accuracy of Token similarity method
- Comparison antara kedua metode
- Optimal combination strategy
- Error patterns & insights
- Recommendations untuk improvement
- CodeBERT Accuracy: MAE, RMSE, correlation
- Token Similarity Accuracy: MAE, RMSE, correlation
- Combined Method Accuracy: MAE, RMSE, correlation
- Inference Time: CodeBERT speed, Token method speed
- Resource Usage: Memory, CPU requirements
- Robustness: Performance pada different code styles, lengths, languages
- ✅ Successfully load & parse GitHub repositories
- ✅ Run CodeBERT embedding generation
- ✅ Run Token similarity calculation
- ✅ Produce combined similarity scores
- ✅ Generate evaluation reports
- ✅ Calculate accuracy metrics
- ✅ Identify which method (CodeBERT or Token) more accurate
- ✅ Show optimal combination strategy
- ✅ Provide insights tentang kapan system works/fails
- ✅ Contribute meaningful findings untuk academic community
| Risk | Impact | Mitigation |
|---|---|---|
| CodeBERT slow inference | Delayed processing | Use GPU, optimize batch processing, cache embeddings |
| GitHub API rate limiting | Cannot clone repos | Implement rate limit handler, use pagination |
| Inconsistent code format | Preprocessing issues | Build robust preprocessor, handle edge cases |
| Small ground truth dataset | Accuracy not reliable | Expand dataset size, cross-validation |
| Different programming languages | Tokenizer incompatibility | Handle language-specific tokenization |
Week 1-2: Setup & Preparation
Week 2-3: CodeBERT Module Implementation
Week 3-4: Token Similarity Module Implementation
Week 4-5: Integration & Combined Scoring
Week 5-6: Evaluation & Accuracy Measurement
Week 6-7: Dashboard & Reporting
Week 7-8: Analysis & Final Writeup
Total Duration: ~8 weeks (adjust sesuai availability)
- Source code (modules & main application)
- Dataset (ground truth + results)
- Accuracy report
- Web dashboard/interface
- Documentation (README, methodology, API)
- Research paper/thesis
- Presentation slides
- Video demo (optional)
End of Planning Document