vtdung23 commited on
Commit
d2734bd
Β·
verified Β·
1 Parent(s): b6fdbc0

Upload folder using huggingface_hub

Browse files
Files changed (1) hide show
  1. README.md +9 -250
README.md CHANGED
@@ -1,253 +1,12 @@
1
- # Vietnamese Product Rating Prediction System
2
-
3
- ## 🎯 Project Overview
4
- A full-stack web application that predicts sentiment ratings (1-5 stars) for Vietnamese product reviews using Machine Learning.
5
-
6
- **Built for:** Introduction to Machine Learning - University Project
7
- **Tech Stack:** FastAPI + Jinja2 + TailwindCSS + SQLite + Chart.js
8
-
9
  ---
10
-
11
- ## πŸ“ Project Structure
12
-
13
- ```
14
- PredictRating/
15
- β”œβ”€β”€ app/
16
- β”‚ β”œβ”€β”€ database/ # SQLite database storage
17
- β”‚ β”œβ”€β”€ routers/ # API route handlers
18
- β”‚ β”‚ β”œβ”€β”€ auth.py # Authentication endpoints
19
- β”‚ β”‚ β”œβ”€β”€ prediction.py # Prediction endpoints
20
- β”‚ β”‚ └── dashboard.py # Frontend routes
21
- β”‚ β”œβ”€β”€ services/ # Business logic
22
- β”‚ β”‚ β”œβ”€β”€ auth_service.py # JWT & password handling
23
- β”‚ β”‚ β”œβ”€β”€ ml_service.py # ML prediction (DUMMY - replace with your model)
24
- β”‚ β”‚ └── visualization_service.py # WordCloud & charts
25
- β”‚ β”œβ”€β”€ static/ # Static files (CSS, JS, uploads)
26
- β”‚ β”‚ └── uploads/
27
- β”‚ β”‚ └── wordclouds/ # Generated word cloud images
28
- β”‚ β”œβ”€β”€ templates/ # Jinja2 HTML templates
29
- β”‚ β”‚ β”œβ”€β”€ base.html # Base layout
30
- β”‚ β”‚ β”œβ”€β”€ login.html # Login page
31
- β”‚ β”‚ β”œβ”€β”€ register.html # Registration page
32
- β”‚ β”‚ └── dashboard.html # Main prediction interface
33
- β”‚ β”œβ”€β”€ config.py # Configuration settings
34
- β”‚ β”œβ”€β”€ database.py # Database connection
35
- β”‚ β”œβ”€β”€ models.py # SQLAlchemy models (User, PredictionHistory)
36
- β”‚ └── schemas.py # Pydantic validation schemas
37
- β”œβ”€β”€ main.py # FastAPI application entry point
38
- └── requirements.txt # Python dependencies
39
- ```
40
-
41
- ---
42
-
43
- ## πŸš€ Setup Instructions
44
-
45
- ### 1. Install Dependencies
46
-
47
- ```bash
48
- pip install -r requirements.txt
49
- ```
50
-
51
- ### 2. Run the Application
52
-
53
- ```bash
54
- python main.py
55
- ```
56
-
57
- The server will start at: **http://localhost:8000**
58
-
59
- ### 3. Access the Application
60
-
61
- - **Frontend Dashboard:** http://localhost:8000/dashboard
62
- - **API Documentation (Swagger UI):** http://localhost:8000/docs ⭐ **SHOW THIS TO YOUR TEACHER**
63
- - **Alternative API Docs (ReDoc):** http://localhost:8000/redoc
64
-
65
  ---
66
 
67
- ## πŸ“š API Documentation (Swagger UI)
68
-
69
- FastAPI automatically generates **interactive API documentation** at `/docs`.
70
-
71
- ### How to Access:
72
- 1. Run the application
73
- 2. Open browser: **http://localhost:8000/docs**
74
- 3. You'll see all API endpoints with:
75
- - Request/response schemas
76
- - Try it out functionality
77
- - Authentication support
78
-
79
- ### Key API Endpoints:
80
-
81
- #### Authentication
82
- - `POST /api/auth/register` - Register new user
83
- - `POST /api/auth/login` - Login (get JWT token)
84
- - `GET /api/auth/me` - Get current user info
85
-
86
- #### Predictions
87
- - `POST /api/predict/single` - Predict single comment
88
- - `POST /api/predict/batch` - Predict batch from CSV
89
- - `GET /api/predict/history` - Get prediction history
90
-
91
- ---
92
-
93
- ## πŸŽ“ How to Use (User Journey)
94
-
95
- ### Step 1: Register/Login
96
- 1. Go to http://localhost:8000/login
97
- 2. Register a new account or login
98
- 3. You'll be redirected to the dashboard
99
-
100
- ### Step 2: Select Product
101
- - Choose a target product from the dropdown list
102
-
103
- ### Step 3A: Single Comment Prediction
104
- 1. Click "Single Comment" tab
105
- 2. Enter a Vietnamese product review
106
- 3. Click "Predict Rating"
107
- 4. See the predicted rating (1-5 stars) with confidence score
108
-
109
- ### Step 3B: Batch CSV Prediction
110
- 1. Click "Upload CSV" tab
111
- 2. Upload a CSV file with a `Comment` column
112
- 3. Click "Predict Batch"
113
- 4. View results:
114
- - **Bar Chart:** Rating distribution (how many 1⭐, 2⭐, etc.)
115
- - **Word Cloud:** Most frequent words in comments
116
- - **Table:** All predictions with confidence scores
117
- - **Download:** Export results as CSV with `Predicted_Rating` column
118
-
119
- ---
120
-
121
- ## πŸ”§ Replace Dummy ML Model
122
-
123
- The current `ml_service.py` uses a **DUMMY** prediction function. Replace it with your real model:
124
-
125
- ### File: `app/services/ml_service.py`
126
-
127
- ```python
128
- class MLPredictionService:
129
- def __init__(self):
130
- # TODO: Load your trained model
131
- self.model = load_model('path/to/your/model.h5') # Example
132
- self.tokenizer = load_tokenizer('path/to/tokenizer.pkl')
133
-
134
- def predict_single(self, text: str) -> Dict[str, any]:
135
- # TODO: Implement your preprocessing
136
- preprocessed = self.preprocess(text)
137
-
138
- # TODO: Make prediction with your model
139
- prediction = self.model.predict(preprocessed)
140
- rating = self.postprocess(prediction) # Convert to 1-5
141
-
142
- return {
143
- 'rating': rating,
144
- 'confidence': prediction.max()
145
- }
146
- ```
147
-
148
- ---
149
-
150
- ## πŸ“Š Database Schema
151
-
152
- ### Users Table
153
- - `id`: Primary key
154
- - `username`: Unique username
155
- - `email`: Unique email
156
- - `hashed_password`: Bcrypt hashed password
157
- - `created_at`: Registration timestamp
158
-
159
- ### Prediction History Table
160
- - `id`: Primary key
161
- - `user_id`: Foreign key to Users
162
- - `product_name`: Product name
163
- - `comment`: Original comment
164
- - `predicted_rating`: Predicted rating (1-5)
165
- - `confidence_score`: Confidence (0-1)
166
- - `prediction_type`: 'single' or 'batch'
167
- - `created_at`: Prediction timestamp
168
-
169
- ---
170
-
171
- ## 🎨 Features
172
-
173
- βœ… **Authentication:** JWT-based secure login/registration
174
- βœ… **Single Prediction:** Predict one comment at a time
175
- βœ… **Batch Prediction:** Upload CSV and predict multiple comments
176
- βœ… **Visualization:**
177
- - Bar chart for rating distribution
178
- - Word cloud for frequent words
179
- βœ… **History Tracking:** All predictions saved to database
180
- βœ… **CSV Export:** Download results with predicted ratings
181
- βœ… **Responsive UI:** TailwindCSS mobile-friendly design
182
- βœ… **API Documentation:** Auto-generated Swagger UI
183
-
184
- ---
185
-
186
- ## πŸ† Bonus Points for Teacher Demo
187
-
188
- 1. **Show Swagger UI** at `/docs` - Automatic API documentation ⭐
189
- 2. **Demonstrate:**
190
- - User registration/login flow
191
- - Single comment prediction
192
- - CSV batch upload with visualizations
193
- - Download CSV results
194
- 3. **Explain:**
195
- - Clean separation of concerns (routers, services, models)
196
- - RESTful API design
197
- - JWT authentication
198
- - Database relationships
199
-
200
- ---
201
-
202
- ## πŸ“ CSV File Format
203
-
204
- Your CSV file should have at least a `Comment` column:
205
-
206
- ```csv
207
- Comment
208
- "SαΊ£n phαΊ©m rαΊ₯t tα»‘t, Δ‘Γ³ng gΓ³i cαΊ©n thαΊ­n"
209
- "ChαΊ₯t lượng kΓ©m, khΓ΄ng nhΖ° mΓ΄ tαΊ£"
210
- "Giao hΓ ng nhanh, sαΊ£n phαΊ©m α»•n"
211
- ```
212
-
213
- After prediction, you'll get:
214
-
215
- ```csv
216
- Comment,Predicted_Rating,Confidence
217
- "SαΊ£n phαΊ©m rαΊ₯t tα»‘t, Δ‘Γ³ng gΓ³i cαΊ©n thαΊ­n",5,0.95
218
- "ChαΊ₯t lượng kΓ©m, khΓ΄ng nhΖ° mΓ΄ tαΊ£",1,0.88
219
- "Giao hΓ ng nhanh, sαΊ£n phαΊ©m α»•n",4,0.92
220
- ```
221
-
222
- ---
223
-
224
- ## πŸ” Security Notes
225
-
226
- - Change `SECRET_KEY` in `app/config.py` before deployment
227
- - Passwords are hashed using bcrypt
228
- - JWT tokens expire after 24 hours
229
- - CORS is enabled for development (configure for production)
230
-
231
- ---
232
-
233
- ## πŸ› Troubleshooting
234
-
235
- ### Issue: "Import errors" when running
236
- **Solution:** Make sure all dependencies are installed:
237
- ```bash
238
- pip install -r requirements.txt
239
- ```
240
-
241
- ### Issue: "Database errors"
242
- **Solution:** Delete `app/database/rating_prediction.db` and restart the app to recreate tables
243
-
244
- ### Issue: "Word cloud doesn't display"
245
- **Solution:** Check that `app/static/uploads/wordclouds/` directory exists
246
-
247
- ---
248
-
249
- ## πŸ“§ Support
250
-
251
- For questions about the project structure or implementation, refer to the code comments or consult your instructor.
252
-
253
- **Good luck with your project presentation! πŸŽ“**
 
 
 
 
 
 
 
 
 
1
  ---
2
+ title: Predict Rating
3
+ emoji: πŸ“ˆ
4
+ colorFrom: blue
5
+ colorTo: green
6
+ sdk: docker
7
+ app_port: 7860
8
+ pinned: false
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
  ---
10
 
11
+ # Predict Rating App
12
+ This is a FastAPI application deployed on Hugging Face Spaces using Docker.