Instruction file imported from raulemm7/Anima---AI-Mental-Wellness-Companion (
.github/instructions/thesis/thesis-writing.instructions.md). Copyright stays with the author.
Skill: Redactare Lucrare de Licență — Anima
Scop
Acest skill ghidează agentul în redactarea lucrării de licență pentru proiectul Anima în aplicația Overleaf (LaTeX), în limba română, la persoana I plural.
Reguli Generale de Redactare
- Limba: română
- Persoana: I plural — „am propus", „am implementat", „am obținut", „am utilizat"
- Ton: academic, formal, fără colocvialisme
- Lungime: 35–50 de pagini de conținut (exclusiv bibliografie)
- Bibliografie: 2–3 pagini, adăugată separat
- Tot ce se afirmă trebuie citat
- Sursele trebuie să fie din ultimii 10 ani (>2015); excepție: lucrări fundamentale (ex. BiLSTM, Attention, Adam)
- Tip sursă:
- Concepte/algoritmi/arhitecturi → cărți sau articole științifice
- Descrieri de tehnologii/framework-uri → site-uri oficiale / documentație / platforme
- Seturi de date → lucrarea originală care a introdus dataset-ul
Structura Lucrării (Cuprins)
Abstract (RO + EN)
- Maxim o pagină totală (RO + EN)
- Rezumă: problema abordată, metoda propusă, rezultatele principale (F1 Macro, clase importante)
- Menționează: HybridNet CNN+BiLSTM+Attention, 7 clase emoționale, aplicația Anima
Cap. 1 — Introducere
1.1 Contextul lucrării
- Prezintă domeniul la nivel conceptual: detecția emoțiilor din text, NLP, sănătate mentală digitală
- Nu intra în detalii tehnice — povestit la nivel de idei
1.2 Motivația și scopul lucrării
- De ce este importantă detecția emoțiilor în contextul unei aplicații de sănătate mentală
- Care este problema rezolvată și pentru cine
- Ultimele paragrafe: scurtă descriere a structurii lucrării (capitol cu capitol, 1-2 propoziții fiecare)
Cap. 2 — Stadiul Actual al Literaturii de Specialitate (SOTA)
- Prezintă modele existente pentru detecția emoțiilor din text:
- Modele clasice (SVM, Naive Bayes)
- Modele deep learning: CNN pentru text, BiLSTM, modele hibride
- Modele transformer: BERT, DistilBERT, RoBERTa
- Compară cu abordarea propusă în această lucrare
- Surse: articole de conferință (ACL, EMNLP, NAACL, ICWSM) și lucrări de pe arXiv
Cap. 3 — Fundamente Teoretice
Regulă: descrie CE este fiecare tehnică, NU cum am implementat-o. Perspectivă pur teoretică, cu citări.
3.1 Arhitecturi Neuronale pentru Procesarea Textului
- 3.1.1 CNN pentru clasificare text — filtre convoluționale pe secvențe de cuvinte (n-grame)
- 3.1.2 BiLSTM — LSTM bidirecțional, capturarea contextului din ambele direcții
- 3.1.3 Multi-Head Self-Attention — mecanismul Attention din "Attention is All You Need"
- 3.1.4 Highway BiLSTM — conexiuni highway pentru gradient flow mai bun
- 3.1.5 Char-CNN — CNN aplicat la nivel de caractere, robust la zgomot și greșeli ortografice
3.2 Tehnici de Tokenizare și Regularizare
- 3.2.1 SentencePiece BPE — Byte Pair Encoding, tokenizare sub-word, vocabular 8K
- 3.2.2 Variante de Dropout — Word Dropout, Spatial Dropout, Locked Dropout, MS-Dropout
- 3.2.3 Embedding Mixup — augmentare în spațiul embedding-urilor
- 3.2.4 R-Drop — regularizare prin consistența distribuțiilor între două forward pass-uri
- 3.2.5 FGM Adversarial Training — Fast Gradient Method, perturbații adversariale la embedding-uri
- 3.2.6 EMA / SWA — Exponential Moving Average și Stochastic Weight Averaging
3.3 Funcții de Pierdere
- 3.3.1 Asymmetric Loss (ASL) — tratament asimetric al exemplelor pozitive vs. negative
- 3.3.2 Label Smoothing — regularizare a distribuției țintă
- 3.3.3 Multi-task Learning Loss — antrenare simultană pe task principal (7 clase) și auxiliar (28 clase GoEmotions)
- 3.3.4 Label Correlation Regularization — penalizare bazată pe matricea de corelație între clase
3.4 Algoritmi și Metrici de Evaluare
- 3.4.1 F1 Macro pentru multi-label — medie aritmetică a F1 per clasă, importanța claselor minoritare
- 3.4.2 Threshold Optimization per clasă — optimizarea pragului de decizie independent pentru fiecare clasă
- 3.4.3 AdamW — Adam cu weight decay decuplat
- 3.4.4 CosineAnnealingWarmRestarts — scheduler cu restarturi cosinus
- 3.4.5 Multi-Sample Dropout — mediere peste mai mulți pași de dropout la inferență
Cap. 4 — Modelul Propus și Metodologia de Antrenament
Regulă: acum intri în detalii despre CE am făcut noi, CUM am setat, CUM am aplicat.
4.1 Setul de Date și Procesare
- GoEmotions (Google, 2020) — 58K comentarii Reddit, 27 emoții
- Maparea 27 → 7 clase: anxiety, sadness, joy, anger, positive, neutral, confusion
- Dreaddit — pseudo-labeling cu prag de confidență ≥ 0.55 (1976 sample-uri adăugate)
- Preprocesare: normalizare text, tokenizare BPE (8K vocabular)
4.2 Arhitectura Modelului de Detecție a Emoțiilor
- HybridNet v15-full: CNN+BiLSTM+Attention, ~4.2M parametri
- 4 branch-uri: CNN (576d), Highway BiLSTM + Multi-Query Attention (768d), Char-CNN (192d)
- Concatenare → 1536d → classifier head (256d → 7 clase)
- Capul auxiliar: 1536d → 128d → 28 clase GoEmotions (doar la antrenament)
4.3 Detalii de Antrenament și Optimizare Hiperparametri
- Optimizer: AdamW, LR=1e-3, weight decay=1e-2
- Scheduler: CosineAnnealingWarmRestarts
- Loss: ASL(γ+=0) + Label Smoothing + R-Drop (α=0.3) + FGM (ε=0.3) + Aux BCE
- Snapshot Ensemble la antrenament
- Best epoch: 25/40 (SWA)
Cap. 5 — Experimente și Rezultate
IMPORTANT: Citește
nlp-model/documentation/BENCHMARKS.mdpentru toate valorile numerice. Citește șinlp-model/documentation/comparasion/MODEL_COMPARISON_REPORT.mdșiMODEL_COMPARISON_V10_V11_V12_V13.md. Plot-urile sunt înnlp-model/runs/*/plots/(f1_curve.png, loss_curve.png, per_class_f1.png).
5.1 Evoluția Modelelor de la Baseline la Performanță
- Prezintă evoluția de la v2 (CNN simplu, F1=0.5898) la v15-full (F1=0.6297)
- Discută contribuția fiecărei tehnici adăugate (ASL, BPE, Highway BiLSTM, Char-CNN, Dreaddit)
- Tabel complet cu versiunile (extras din BENCHMARKS.md)
5.2 Analiza Performanței Ansamblului (Ensemble Model)
- Ensemble soft-voting: v11 + v13 + v14B — F1 Macro = 0.6385 (cel mai bun la t=0.5)
- De ce s-a ales v15-full în producție în locul ensemble-ului (complexitate, latență, simplitate deployment)
5.3 Comparația cu Modele Pre-antrenate
- DistilBERT (v6): F1 Macro = 0.6242 — parametri ~66.6M vs ~4.2M ai modelului propus
- Modelul propus este competitiv la ~6% din dimensiunea unui model transformer pre-antrenat
- Citează
nlp-model/documentation/RESOURCES.mdpentru referințe
Cap. 6 — Aplicația „Anima" — Arhitectură, Proiectare și Implementare
6.1 Cerințe Funcționale și Non-funcționale
- Funcționale: autentificare (register/verify/login/logout), jurnal emoțional, detecție emoții, istoric
- Non-funcționale: securitate (JWT + refresh tokens, Keychain), performanță, portabilitate (Android/iOS)
6.2 Arhitectura Sistemului Software
- 3 componente: .NET 9 backend (Clean Architecture, 8 proiecte), React Native mobile, FastAPI NLP service
- Diagramă arhitecturală: Phone → .NET API → FastAPI → Model v15-full
- Comunicare internă (localhost:8000) între .NET și Python
6.3 Diagrama de Clase
- Entități principale: User, RefreshToken, JournalEntry, EmotionScore
- Layers: Domain.Model → Infrastructure → Application → Api
6.4 Diagrama Cazurilor de Utilizare (Use Cases)
- Actori: Utilizator neautentificat, Utilizator autentificat
- Use cases: Înregistrare, Verificare email, Autentificare, Scriere jurnal, Vizualizare emoții, Deconectare
6.5 Implementare — Stack Tehnologic și Integrarea Modelului NLP
- Backend: .NET 9, ASP.NET Core, Entity Framework Core, PostgreSQL, JWT Bearer
- Mobile: React Native 0.84, TypeScript, React Navigation v6, react-native-keychain
- NLP Service: Python FastAPI, PyTorch, SentencePiece
6.6 Interfața Grafică și Fluxul de Utilizare
- Screenshots din aplicație: ecran login, register, verify email, home, jurnal, settings
- Descrie flow-ul complet al utilizatorului
6.7 Funcționalitățile Aplicației
- Persistent login (Keychain), auto-refresh token, best-effort logout
- Detecție emoții din text jurnal, afișare distribuție emoțională
Cap. 7 — Concluzii și Direcții Viitoare
7.1 Concluzii Generale
- Reamintește modelul ales: HybridNet v15-full, ~4.2M parametri
- Reamintește metricile: F1 Macro = 0.6297 (t=0.5), F1 Macro = 0.6429 (optimizat)
- Recall Macro = 0.6425 — important pentru o aplicație de sănătate mentală (false negative costisitor)
- Compară cu DistilBERT (66.6M params, F1=0.6242) — modelul propus este eficient și competitiv
- Câteva cuvinte despre aplicație: arhitectura, securitate, UX
7.2 Direcții Viitoare de Dezvoltare
- Fine-tuning pe date în limba română
- Integrarea unui model transformer mai mic (MiniLM, TinyBERT) pentru comparație
- Notificări proactive bazate pe pattern-uri emoționale detectate
- Funcționalitate de raportare pentru terapeut
Surse de Date pentru Agent
Când redactezi capitolele tehnice, citește obligatoriu aceste fișiere din repo:
| Fișier | Conținut |
|---|---|
nlp-model/documentation/BENCHMARKS.md |
Toate valorile F1, Precision, Recall, per versiune și per clasă |
nlp-model/documentation/RESOURCES.md |
Referințe bibliografice folosite în cercetare |
nlp-model/documentation/comparasion/MODEL_COMPARISON_REPORT.md |
Raport detaliat de comparație modele |
nlp-model/documentation/comparasion/MODEL_COMPARISON_V10_V11_V12_V13.md |
Comparație v10-v13 |
nlp-model/runs/v15_full/training_metrics.json |
Metrici epoch-cu-epoch pentru v15-full |
nlp-model/runs/v15_full/plots/ |
Grafice: f1_curve.png, loss_curve.png, per_class_f1.png |
nlp-model/model/model.py |
Arhitectura completă HybridNet |
nlp-model/processing/data_preprocessing.py |
Pipeline de procesare date, mapare etichete |
nlp-model/train/train.py |
Hiperparametri, funcții de loss, training loop |
Valori Numerice de Referință Rapide
Folosește valorile din BENCHMARKS.md ca sursă primară. Acestea sunt pentru referință rapidă:
| Model | F1 Macro (t=0.5) | F1 Macro (opt.) | Recall Macro | Params |
|---|---|---|---|---|
| Baseline CNN (v2) | 0.5898 | — | — | ~5.8M |
| DistilBERT (v6) | 0.6242 | — | 0.5599 | ~66.6M |
| v14-PhaseB | 0.6274 | 0.6367 | 0.6168 | ~3.8M |
| v15-full (ales) | 0.6297 | 0.6429 | 0.6425 | ~4.2M |
| Ensemble | 0.6385 | 0.6467 | 0.6945 | ~12.6M |
Per clasă v15-full (t=0.5): anxiety=0.6389, sadness=0.5391, joy=0.7576, anger=0.5206, positive=0.7107, neutral=0.6377, confusion=0.6030
Convenții LaTeX pentru Overleaf
- Folosește
\chapter{},\section{},\subsection{} - Tabelele cu rezultate → mediu
tabularcubooktabs(\toprule,\midrule,\bottomrule) - Valori numerice în bold cu
\textbf{}pentru best results - Grafice din
nlp-model/runs/*/plots/→ incluse cu\includegraphics - Citări cu
\cite{}folosind BibTeX - Ecuații matematice:
equationenvironment - Cod:
lstlistingsauminted - Document class:
\documentclass[12pt,a4paper]{report}