Skip to content

Logisx/DeepEssay

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Logo

📋 Table of Contents

🚀 Grade your IELTS essay with BERT

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.

Python Flask TensorFlow BERT Docker Microsoft Azure REST

Demo

⭐ Features

  • 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.

Warnings demo

📊 Model choice

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:

  1. BERT fine-tuned for a regression task
  2. BERT output concatenated with numerical features
  3. BERT output concatenated with numerical and binary features

The model structures and corresponding Mean Absolute Error (MAE) metrics are shown in the figures below: Models structure Models MAE

Although more complex models produce better results, after testing, it was decided to use a text model for lower latency.

🧰 Tech Stack

  • Framework: Flask
  • NLP: TensorFlow, BERT, Hugging Face Transformers, Sklearn
  • Deployment: Docker, Microsoft Azure
  • Frontend: HTML, CSS, JavaScript
  • Version Control: Git, GitHub
  • Testing: REST client

📁 Project structure

+---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

💻 Run Locally

  1. Clone the project
  git clone https://github.com/Logisx/IELTS-Grading.git
  1. Go to the project directory
  cd my-project
  1. Install dependencies
  pip install -r requirements.txt
  1. Train a model in a notebook and save the weights to:
  ./app/ML/models/training_bert_text
  1. Start the server
  python app/main.py

🗺️ Roadmap

  1. Testing features: Develop unit tests and integrations test.
  2. Data collection: Aggregate more data to improve accuracy.
  3. 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.

⚖️ License

MIT License

🔗 Links

linkedin