Welcome to the IELTS Essay Grading Web Application! This web app is designed to provide users with a convenient and efficient way to have their IELTS essays assessed and receive a predicted score using a Machine Learning model.
-
Submit Essays: Users can submit their IELTS essays directly through the web application. The process is user-friendly and straightforward.
-
Machine Learning Essay Grading: The heart of this application is a finely-tuned BERT (Bidirectional Encoder Representations from Transformers) model. This model analyzes and assesses the submitted essays, considering a variety of linguistic and structural aspects.
-
Predicted Score: After processing the essay, the application provides users with a predicted IELTS score. This score is an estimate of how the essay might be rated in the actual IELTS exam, helping users gauge their writing proficiency.
-
Warning functionality: The application includes a warning feature that checks the submitted text. It will display a warning if the essay is too short or if the text does not meet the minimum requirements. This ensures that users are provided with guidance on submitting valid essays.
Detailed training overview with EDA and Feature engineering can be found in the notebook.
Dataset: IELTS Writing Scored Essays Dataset
After analysing different approaches I decided to continue with 3 models:
- BERT fine-tuned for a regression task
- BERT output concatenated with numerical features
- BERT output concatenated with numerical and binary features
The model structures and corresponding Mean Absolute Error (MAE) metrics are shown in the figures below:
Although more complex models produce better results, after testing, it was decided to use a text model for lower latency.
- Framework: Flask
- NLP: TensorFlow, BERT, Hugging Face Transformers, Sklearn
- Deployment: Docker, Microsoft Azure
- Frontend: HTML, CSS, JavaScript
- Version Control: Git, GitHub
- Testing: REST client
+---app
| | main.py
| | text_validation.py
| | __init__.py
| |
| +---ML
| | | pipeline.py
| | | __init__.py
| | |
| | \---models
| | +---training_bert_num
| | |
| | +---training_bert_num_bin
| | |
| | \---training_bert_text
| |
| +---static
| |
| \---templates
| index.html
| warning.html
|
+---assets
|
| .gitignore
| Dockerfile
| IELTS_Grading_with_BERT.ipynb
| LICENSE
| README.md
\ requirements.txt
- Clone the project
git clone https://github.com/Logisx/IELTS-Grading.git
- Go to the project directory
cd my-project
- Install dependencies
pip install -r requirements.txt
- Train a model in a notebook and save the weights to:
./app/ML/models/training_bert_text
- Start the server
python app/main.py
- Testing features: Develop unit tests and integrations test.
- Data collection: Aggregate more data to improve accuracy.
- Educational insights feature: Along with the score, the application will offer insights and suggestions for improvement, making it a valuable educational tool for those looking to enhance their writing skills.