amanuelyh commited on
Commit
03c77e0
·
1 Parent(s): 4e12f66

Add initial implementation of Grammar Correction tool with Flask and Streamlit

Browse files
.gitattributes DELETED
@@ -1,35 +0,0 @@
1
- *.7z filter=lfs diff=lfs merge=lfs -text
2
- *.arrow filter=lfs diff=lfs merge=lfs -text
3
- *.bin filter=lfs diff=lfs merge=lfs -text
4
- *.bz2 filter=lfs diff=lfs merge=lfs -text
5
- *.ckpt filter=lfs diff=lfs merge=lfs -text
6
- *.ftz filter=lfs diff=lfs merge=lfs -text
7
- *.gz filter=lfs diff=lfs merge=lfs -text
8
- *.h5 filter=lfs diff=lfs merge=lfs -text
9
- *.joblib filter=lfs diff=lfs merge=lfs -text
10
- *.lfs.* filter=lfs diff=lfs merge=lfs -text
11
- *.mlmodel filter=lfs diff=lfs merge=lfs -text
12
- *.model filter=lfs diff=lfs merge=lfs -text
13
- *.msgpack filter=lfs diff=lfs merge=lfs -text
14
- *.npy filter=lfs diff=lfs merge=lfs -text
15
- *.npz filter=lfs diff=lfs merge=lfs -text
16
- *.onnx filter=lfs diff=lfs merge=lfs -text
17
- *.ot filter=lfs diff=lfs merge=lfs -text
18
- *.parquet filter=lfs diff=lfs merge=lfs -text
19
- *.pb filter=lfs diff=lfs merge=lfs -text
20
- *.pickle filter=lfs diff=lfs merge=lfs -text
21
- *.pkl filter=lfs diff=lfs merge=lfs -text
22
- *.pt filter=lfs diff=lfs merge=lfs -text
23
- *.pth filter=lfs diff=lfs merge=lfs -text
24
- *.rar filter=lfs diff=lfs merge=lfs -text
25
- *.safetensors filter=lfs diff=lfs merge=lfs -text
26
- saved_model/**/* filter=lfs diff=lfs merge=lfs -text
27
- *.tar.* filter=lfs diff=lfs merge=lfs -text
28
- *.tar filter=lfs diff=lfs merge=lfs -text
29
- *.tflite filter=lfs diff=lfs merge=lfs -text
30
- *.tgz filter=lfs diff=lfs merge=lfs -text
31
- *.wasm filter=lfs diff=lfs merge=lfs -text
32
- *.xz filter=lfs diff=lfs merge=lfs -text
33
- *.zip filter=lfs diff=lfs merge=lfs -text
34
- *.zst filter=lfs diff=lfs merge=lfs -text
35
- *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
.gitignore ADDED
@@ -0,0 +1 @@
 
 
1
+ /env
Dataset/C4_200M/c4data.csv ADDED
The diff for this file is too large to render. See raw diff
 
Dataset/JFLEG/eval.csv ADDED
The diff for this file is too large to render. See raw diff
 
Dataset/JFLEG/train.csv ADDED
The diff for this file is too large to render. See raw diff
 
Dataset/eval.csv ADDED
The diff for this file is too large to render. See raw diff
 
Dataset/train.csv ADDED
The diff for this file is too large to render. See raw diff
 
Grammar_Correction.ipynb ADDED
@@ -0,0 +1,2415 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": 3,
6
+ "metadata": {},
7
+ "outputs": [
8
+ {
9
+ "name": "stdout",
10
+ "output_type": "stream",
11
+ "text": [
12
+ "Collecting happytransformer\n",
13
+ " Using cached happytransformer-3.0.0-py3-none-any.whl.metadata (4.4 kB)\n",
14
+ "Requirement already satisfied: matplotlib in c:\\python312\\lib\\site-packages (3.9.2)\n",
15
+ "Collecting torch>=1.0 (from happytransformer)\n",
16
+ " Using cached torch-2.5.1-cp312-cp312-win_amd64.whl.metadata (28 kB)\n",
17
+ "Requirement already satisfied: tqdm>=4.43 in c:\\python312\\lib\\site-packages (from happytransformer) (4.67.1)\n",
18
+ "Collecting transformers<5.0.0,>=4.30.1 (from happytransformer)\n",
19
+ " Using cached transformers-4.48.1-py3-none-any.whl.metadata (44 kB)\n",
20
+ "Collecting datasets<3.0.0,>=2.13.1 (from happytransformer)\n",
21
+ " Using cached datasets-2.21.0-py3-none-any.whl.metadata (21 kB)\n",
22
+ "Requirement already satisfied: sentencepiece in c:\\python312\\lib\\site-packages (from happytransformer) (0.2.0)\n",
23
+ "Requirement already satisfied: protobuf in c:\\python312\\lib\\site-packages (from happytransformer) (5.29.3)\n",
24
+ "Collecting accelerate<1.0.0,>=0.20.1 (from happytransformer)\n",
25
+ " Using cached accelerate-0.34.2-py3-none-any.whl.metadata (19 kB)\n",
26
+ "Collecting tokenizers<1.0.0,>=0.13.3 (from happytransformer)\n",
27
+ " Using cached tokenizers-0.21.0-cp39-abi3-win_amd64.whl.metadata (6.9 kB)\n",
28
+ "Collecting wandb (from happytransformer)\n",
29
+ " Using cached wandb-0.19.4-py3-none-win_amd64.whl.metadata (10 kB)\n",
30
+ "Requirement already satisfied: contourpy>=1.0.1 in c:\\python312\\lib\\site-packages (from matplotlib) (1.3.1)\n",
31
+ "Requirement already satisfied: cycler>=0.10 in c:\\python312\\lib\\site-packages (from matplotlib) (0.12.1)\n",
32
+ "Requirement already satisfied: fonttools>=4.22.0 in c:\\python312\\lib\\site-packages (from matplotlib) (4.55.0)\n",
33
+ "Requirement already satisfied: kiwisolver>=1.3.1 in c:\\python312\\lib\\site-packages (from matplotlib) (1.4.7)\n",
34
+ "Requirement already satisfied: numpy>=1.23 in c:\\python312\\lib\\site-packages (from matplotlib) (2.1.3)\n",
35
+ "Requirement already satisfied: packaging>=20.0 in c:\\users\\amanu\\appdata\\roaming\\python\\python312\\site-packages (from matplotlib) (24.2)\n",
36
+ "Requirement already satisfied: pillow>=8 in c:\\python312\\lib\\site-packages (from matplotlib) (11.0.0)\n",
37
+ "Requirement already satisfied: pyparsing>=2.3.1 in c:\\python312\\lib\\site-packages (from matplotlib) (3.2.0)\n",
38
+ "Requirement already satisfied: python-dateutil>=2.7 in c:\\users\\amanu\\appdata\\roaming\\python\\python312\\site-packages (from matplotlib) (2.9.0.post0)\n",
39
+ "Requirement already satisfied: psutil in c:\\users\\amanu\\appdata\\roaming\\python\\python312\\site-packages (from accelerate<1.0.0,>=0.20.1->happytransformer) (6.1.0)\n",
40
+ "Requirement already satisfied: pyyaml in c:\\python312\\lib\\site-packages (from accelerate<1.0.0,>=0.20.1->happytransformer) (6.0.2)\n",
41
+ "Collecting huggingface-hub>=0.21.0 (from accelerate<1.0.0,>=0.20.1->happytransformer)\n",
42
+ " Using cached huggingface_hub-0.27.1-py3-none-any.whl.metadata (13 kB)\n",
43
+ "Requirement already satisfied: safetensors>=0.4.3 in c:\\python312\\lib\\site-packages (from accelerate<1.0.0,>=0.20.1->happytransformer) (0.5.2)\n",
44
+ "Requirement already satisfied: filelock in c:\\python312\\lib\\site-packages (from datasets<3.0.0,>=2.13.1->happytransformer) (3.17.0)\n",
45
+ "Requirement already satisfied: pyarrow>=15.0.0 in c:\\python312\\lib\\site-packages (from datasets<3.0.0,>=2.13.1->happytransformer) (19.0.0)\n",
46
+ "Requirement already satisfied: dill<0.3.9,>=0.3.0 in c:\\python312\\lib\\site-packages (from datasets<3.0.0,>=2.13.1->happytransformer) (0.3.8)\n",
47
+ "Collecting pandas (from datasets<3.0.0,>=2.13.1->happytransformer)\n",
48
+ " Using cached pandas-2.2.3-cp312-cp312-win_amd64.whl.metadata (19 kB)\n",
49
+ "Collecting requests>=2.32.2 (from datasets<3.0.0,>=2.13.1->happytransformer)\n",
50
+ " Using cached requests-2.32.3-py3-none-any.whl.metadata (4.6 kB)\n",
51
+ "Requirement already satisfied: xxhash in c:\\python312\\lib\\site-packages (from datasets<3.0.0,>=2.13.1->happytransformer) (3.5.0)\n",
52
+ "Collecting multiprocess (from datasets<3.0.0,>=2.13.1->happytransformer)\n",
53
+ " Using cached multiprocess-0.70.17-py312-none-any.whl.metadata (7.2 kB)\n",
54
+ "Requirement already satisfied: fsspec<=2024.6.1,>=2023.1.0 in c:\\python312\\lib\\site-packages (from fsspec[http]<=2024.6.1,>=2023.1.0->datasets<3.0.0,>=2.13.1->happytransformer) (2024.6.1)\n",
55
+ "Collecting aiohttp (from datasets<3.0.0,>=2.13.1->happytransformer)\n",
56
+ " Using cached aiohttp-3.11.11-cp312-cp312-win_amd64.whl.metadata (8.0 kB)\n",
57
+ "Requirement already satisfied: six>=1.5 in c:\\users\\amanu\\appdata\\roaming\\python\\python312\\site-packages (from python-dateutil>=2.7->matplotlib) (1.16.0)\n",
58
+ "Requirement already satisfied: typing-extensions>=4.8.0 in c:\\python312\\lib\\site-packages (from torch>=1.0->happytransformer) (4.12.2)\n",
59
+ "Requirement already satisfied: networkx in c:\\python312\\lib\\site-packages (from torch>=1.0->happytransformer) (3.4.2)\n",
60
+ "Collecting jinja2 (from torch>=1.0->happytransformer)\n",
61
+ " Using cached jinja2-3.1.5-py3-none-any.whl.metadata (2.6 kB)\n",
62
+ "Requirement already satisfied: setuptools in c:\\python312\\lib\\site-packages (from torch>=1.0->happytransformer) (75.8.0)\n",
63
+ "Requirement already satisfied: sympy==1.13.1 in c:\\python312\\lib\\site-packages (from torch>=1.0->happytransformer) (1.13.1)\n",
64
+ "Requirement already satisfied: mpmath<1.4,>=1.1.0 in c:\\python312\\lib\\site-packages (from sympy==1.13.1->torch>=1.0->happytransformer) (1.3.0)\n",
65
+ "Requirement already satisfied: colorama in c:\\users\\amanu\\appdata\\roaming\\python\\python312\\site-packages (from tqdm>=4.43->happytransformer) (0.4.6)\n",
66
+ "Requirement already satisfied: regex!=2019.12.17 in c:\\python312\\lib\\site-packages (from transformers<5.0.0,>=4.30.1->happytransformer) (2024.11.6)\n",
67
+ "Collecting click!=8.0.0,>=7.1 (from wandb->happytransformer)\n",
68
+ " Using cached click-8.1.8-py3-none-any.whl.metadata (2.3 kB)\n",
69
+ "Requirement already satisfied: docker-pycreds>=0.4.0 in c:\\python312\\lib\\site-packages (from wandb->happytransformer) (0.4.0)\n",
70
+ "Collecting gitpython!=3.1.29,>=1.0.0 (from wandb->happytransformer)\n",
71
+ " Using cached GitPython-3.1.44-py3-none-any.whl.metadata (13 kB)\n",
72
+ "Requirement already satisfied: platformdirs in c:\\users\\amanu\\appdata\\roaming\\python\\python312\\site-packages (from wandb->happytransformer) (4.3.6)\n",
73
+ "Requirement already satisfied: pydantic<3,>=2.6 in c:\\python312\\lib\\site-packages (from wandb->happytransformer) (2.8.2)\n",
74
+ "Requirement already satisfied: sentry-sdk>=2.0.0 in c:\\python312\\lib\\site-packages (from wandb->happytransformer) (2.20.0)\n",
75
+ "Requirement already satisfied: setproctitle in c:\\python312\\lib\\site-packages (from wandb->happytransformer) (1.3.4)\n",
76
+ "Collecting aiohappyeyeballs>=2.3.0 (from aiohttp->datasets<3.0.0,>=2.13.1->happytransformer)\n",
77
+ " Using cached aiohappyeyeballs-2.4.4-py3-none-any.whl.metadata (6.1 kB)\n",
78
+ "Collecting aiosignal>=1.1.2 (from aiohttp->datasets<3.0.0,>=2.13.1->happytransformer)\n",
79
+ " Using cached aiosignal-1.3.2-py2.py3-none-any.whl.metadata (3.8 kB)\n",
80
+ "Collecting attrs>=17.3.0 (from aiohttp->datasets<3.0.0,>=2.13.1->happytransformer)\n",
81
+ " Using cached attrs-25.1.0-py3-none-any.whl.metadata (10 kB)\n",
82
+ "Requirement already satisfied: frozenlist>=1.1.1 in c:\\python312\\lib\\site-packages (from aiohttp->datasets<3.0.0,>=2.13.1->happytransformer) (1.5.0)\n",
83
+ "Requirement already satisfied: multidict<7.0,>=4.5 in c:\\python312\\lib\\site-packages (from aiohttp->datasets<3.0.0,>=2.13.1->happytransformer) (6.1.0)\n",
84
+ "Requirement already satisfied: propcache>=0.2.0 in c:\\python312\\lib\\site-packages (from aiohttp->datasets<3.0.0,>=2.13.1->happytransformer) (0.2.1)\n",
85
+ "Collecting yarl<2.0,>=1.17.0 (from aiohttp->datasets<3.0.0,>=2.13.1->happytransformer)\n",
86
+ " Using cached yarl-1.18.3-cp312-cp312-win_amd64.whl.metadata (71 kB)\n",
87
+ "Collecting gitdb<5,>=4.0.1 (from gitpython!=3.1.29,>=1.0.0->wandb->happytransformer)\n",
88
+ " Using cached gitdb-4.0.12-py3-none-any.whl.metadata (1.2 kB)\n",
89
+ "Requirement already satisfied: annotated-types>=0.4.0 in c:\\python312\\lib\\site-packages (from pydantic<3,>=2.6->wandb->happytransformer) (0.7.0)\n",
90
+ "Requirement already satisfied: pydantic-core==2.20.1 in c:\\python312\\lib\\site-packages (from pydantic<3,>=2.6->wandb->happytransformer) (2.20.1)\n",
91
+ "Collecting charset-normalizer<4,>=2 (from requests>=2.32.2->datasets<3.0.0,>=2.13.1->happytransformer)\n",
92
+ " Using cached charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl.metadata (36 kB)\n",
93
+ "Requirement already satisfied: idna<4,>=2.5 in c:\\python312\\lib\\site-packages (from requests>=2.32.2->datasets<3.0.0,>=2.13.1->happytransformer) (3.7)\n",
94
+ "Requirement already satisfied: urllib3<3,>=1.21.1 in c:\\python312\\lib\\site-packages (from requests>=2.32.2->datasets<3.0.0,>=2.13.1->happytransformer) (2.3.0)\n",
95
+ "Requirement already satisfied: certifi>=2017.4.17 in c:\\python312\\lib\\site-packages (from requests>=2.32.2->datasets<3.0.0,>=2.13.1->happytransformer) (2024.7.4)\n",
96
+ "Requirement already satisfied: MarkupSafe>=2.0 in c:\\python312\\lib\\site-packages (from jinja2->torch>=1.0->happytransformer) (3.0.2)\n",
97
+ "INFO: pip is looking at multiple versions of multiprocess to determine which version is compatible with other requirements. This could take a while.\n",
98
+ "Collecting multiprocess (from datasets<3.0.0,>=2.13.1->happytransformer)\n",
99
+ " Using cached multiprocess-0.70.16-py312-none-any.whl.metadata (7.2 kB)\n",
100
+ "Requirement already satisfied: pytz>=2020.1 in c:\\python312\\lib\\site-packages (from pandas->datasets<3.0.0,>=2.13.1->happytransformer) (2024.2)\n",
101
+ "Requirement already satisfied: tzdata>=2022.7 in c:\\python312\\lib\\site-packages (from pandas->datasets<3.0.0,>=2.13.1->happytransformer) (2025.1)\n",
102
+ "Requirement already satisfied: smmap<6,>=3.0.1 in c:\\python312\\lib\\site-packages (from gitdb<5,>=4.0.1->gitpython!=3.1.29,>=1.0.0->wandb->happytransformer) (5.0.2)\n",
103
+ "Using cached happytransformer-3.0.0-py3-none-any.whl (24 kB)\n",
104
+ "Using cached accelerate-0.34.2-py3-none-any.whl (324 kB)\n",
105
+ "Using cached datasets-2.21.0-py3-none-any.whl (527 kB)\n",
106
+ "Using cached tokenizers-0.21.0-cp39-abi3-win_amd64.whl (2.4 MB)\n",
107
+ "Using cached torch-2.5.1-cp312-cp312-win_amd64.whl (203.0 MB)\n",
108
+ "Using cached transformers-4.48.1-py3-none-any.whl (9.7 MB)\n",
109
+ "Using cached wandb-0.19.4-py3-none-win_amd64.whl (19.7 MB)\n",
110
+ "Using cached click-8.1.8-py3-none-any.whl (98 kB)\n",
111
+ "Using cached aiohttp-3.11.11-cp312-cp312-win_amd64.whl (437 kB)\n",
112
+ "Using cached GitPython-3.1.44-py3-none-any.whl (207 kB)\n",
113
+ "Using cached huggingface_hub-0.27.1-py3-none-any.whl (450 kB)\n",
114
+ "Using cached requests-2.32.3-py3-none-any.whl (64 kB)\n",
115
+ "Using cached jinja2-3.1.5-py3-none-any.whl (134 kB)\n",
116
+ "Using cached multiprocess-0.70.16-py312-none-any.whl (146 kB)\n",
117
+ "Using cached pandas-2.2.3-cp312-cp312-win_amd64.whl (11.5 MB)\n",
118
+ "Using cached aiohappyeyeballs-2.4.4-py3-none-any.whl (14 kB)\n",
119
+ "Using cached aiosignal-1.3.2-py2.py3-none-any.whl (7.6 kB)\n",
120
+ "Using cached attrs-25.1.0-py3-none-any.whl (63 kB)\n",
121
+ "Using cached charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl (102 kB)\n",
122
+ "Using cached gitdb-4.0.12-py3-none-any.whl (62 kB)\n",
123
+ "Using cached yarl-1.18.3-cp312-cp312-win_amd64.whl (90 kB)\n",
124
+ "Installing collected packages: yarl, multiprocess, jinja2, gitdb, click, charset-normalizer, attrs, aiosignal, aiohappyeyeballs, torch, requests, pandas, gitpython, aiohttp, wandb, huggingface-hub, tokenizers, datasets, accelerate, transformers, happytransformer\n",
125
+ "Note: you may need to restart the kernel to use updated packages.\n"
126
+ ]
127
+ },
128
+ {
129
+ "name": "stderr",
130
+ "output_type": "stream",
131
+ "text": [
132
+ "WARNING: Ignoring invalid distribution ~ip (c:\\Python312\\Lib\\site-packages)\n",
133
+ "WARNING: Ignoring invalid distribution ~ip (c:\\Python312\\Lib\\site-packages)\n",
134
+ " WARNING: Failed to write executable - trying to use .deleteme logic\n",
135
+ "ERROR: Could not install packages due to an OSError: [WinError 2] The system cannot find the file specified: 'c:\\\\Python312\\\\Scripts\\\\normalizer.exe' -> 'c:\\\\Python312\\\\Scripts\\\\normalizer.exe.deleteme'\n",
136
+ "\n"
137
+ ]
138
+ }
139
+ ],
140
+ "source": [
141
+ "%pip install happytransformer matplotlib"
142
+ ]
143
+ },
144
+ {
145
+ "cell_type": "code",
146
+ "execution_count": 2,
147
+ "metadata": {},
148
+ "outputs": [
149
+ {
150
+ "name": "stderr",
151
+ "output_type": "stream",
152
+ "text": [
153
+ "c:\\Users\\amanu\\projects\\nlp\\aman\\env\\Lib\\site-packages\\tqdm\\auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n",
154
+ " from .autonotebook import tqdm as notebook_tqdm\n"
155
+ ]
156
+ }
157
+ ],
158
+ "source": [
159
+ "import pickle\n",
160
+ "import matplotlib.pyplot as plt\n",
161
+ "from happytransformer import HappyTextToText, TTTrainArgs"
162
+ ]
163
+ },
164
+ {
165
+ "cell_type": "code",
166
+ "execution_count": 3,
167
+ "metadata": {},
168
+ "outputs": [
169
+ {
170
+ "name": "stderr",
171
+ "output_type": "stream",
172
+ "text": [
173
+ "01/25/2025 23:54:32 - INFO - happytransformer.happy_transformer - Using device: cpu\n"
174
+ ]
175
+ }
176
+ ],
177
+ "source": [
178
+ "happy_tt = HappyTextToText(\"T5\", \"t5-base\")"
179
+ ]
180
+ },
181
+ {
182
+ "cell_type": "code",
183
+ "execution_count": 5,
184
+ "metadata": {},
185
+ "outputs": [
186
+ {
187
+ "name": "stderr",
188
+ "output_type": "stream",
189
+ "text": [
190
+ "01/26/2025 00:28:57 - INFO - happytransformer.happy_transformer - Preprocessing dataset...\n"
191
+ ]
192
+ },
193
+ {
194
+ "name": "stdout",
195
+ "output_type": "stream",
196
+ "text": [
197
+ "Evaluating the model BEFORE training...\n"
198
+ ]
199
+ },
200
+ {
201
+ "data": {
202
+ "text/html": [
203
+ "\n",
204
+ " <div>\n",
205
+ " \n",
206
+ " <progress value='2651' max='3488' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
207
+ " [2651/3488 12:54 < 04:04, 3.42 it/s]\n",
208
+ " </div>\n",
209
+ " "
210
+ ],
211
+ "text/plain": [
212
+ "<IPython.core.display.HTML object>"
213
+ ]
214
+ },
215
+ "metadata": {},
216
+ "output_type": "display_data"
217
+ }
218
+ ],
219
+ "source": [
220
+ "eval_args = TTTrainArgs(\n",
221
+ " batch_size=1,\n",
222
+ " max_input_length=512,\n",
223
+ " max_output_length=150\n",
224
+ ")\n",
225
+ "\n",
226
+ "print(\"Evaluating the model BEFORE training...\")\n",
227
+ "eval_results_before = happy_tt.eval(\"Dataset/eval.csv\", args=eval_args)\n",
228
+ "print(\"Evaluation Loss (Before Training):\", eval_results_before.loss)\n",
229
+ "\n",
230
+ "with open(\"eval_results_before.txt\", \"w\") as f:\n",
231
+ " f.write(\"Evaluation Results Before Training:\\n\")\n",
232
+ " f.write(str(eval_results_before))\n"
233
+ ]
234
+ },
235
+ {
236
+ "cell_type": "markdown",
237
+ "metadata": {},
238
+ "source": [
239
+ " Train Model"
240
+ ]
241
+ },
242
+ {
243
+ "cell_type": "code",
244
+ "execution_count": null,
245
+ "metadata": {},
246
+ "outputs": [],
247
+ "source": [
248
+ "train_args = TTTrainArgs(\n",
249
+ " batch_size=8,\n",
250
+ " num_train_epochs=5,\n",
251
+ " max_input_length=512, \n",
252
+ " max_output_length=150,\n",
253
+ " eval_ratio=0.1\n",
254
+ ")\n",
255
+ "\n",
256
+ "print(\"Training the model...\")\n",
257
+ "training_losses = happy_tt.train(\"Dataset/train.csv\", args=train_args)"
258
+ ]
259
+ },
260
+ {
261
+ "cell_type": "markdown",
262
+ "metadata": {},
263
+ "source": [
264
+ "Evaluate the model on the test set"
265
+ ]
266
+ },
267
+ {
268
+ "cell_type": "code",
269
+ "execution_count": null,
270
+ "metadata": {},
271
+ "outputs": [],
272
+ "source": [
273
+ "print(\"Evaluating the model AFTER training...\")\n",
274
+ "eval_results_after = happy_tt.eval(\"Dataset/eval.csv\", args=eval_args)\n",
275
+ "eval_loss_after = eval_results_after['eval_loss']\n",
276
+ "print(\"Evaluation Loss (After Training):\", eval_loss_after)\n",
277
+ "\n",
278
+ "with open(\"eval_results_after.txt\", \"w\") as f:\n",
279
+ " f.write(\"Evaluation Results After Training:\\n\")\n",
280
+ " f.write(str(eval_results_after))\n"
281
+ ]
282
+ },
283
+ {
284
+ "cell_type": "markdown",
285
+ "metadata": {},
286
+ "source": [
287
+ "Plot Results"
288
+ ]
289
+ },
290
+ {
291
+ "cell_type": "code",
292
+ "execution_count": null,
293
+ "metadata": {},
294
+ "outputs": [],
295
+ "source": [
296
+ "epochs = list(range(1, len(training_losses) + 1))\n",
297
+ "plt.figure(figsize=(10, 6))\n",
298
+ "plt.plot(epochs, training_losses, label=\"Training Loss\", marker='o')\n",
299
+ "plt.axhline(y=eval_loss_before, color='orange', linestyle='--', label=f\"Evaluation Loss Before ({eval_loss_before:.4f})\")\n",
300
+ "plt.axhline(y=eval_loss_after, color='green', linestyle='--', label=f\"Evaluation Loss After ({eval_loss_after:.4f})\")\n",
301
+ "plt.xlabel(\"Epoch\")\n",
302
+ "plt.ylabel(\"Loss\")\n",
303
+ "plt.title(\"Training and Evaluation Losses\")\n",
304
+ "plt.legend()\n",
305
+ "plt.grid(True)\n",
306
+ "\n",
307
+ "plt.savefig(\"training_eval_comparison.png\")\n",
308
+ "plt.show()\n"
309
+ ]
310
+ },
311
+ {
312
+ "cell_type": "markdown",
313
+ "metadata": {},
314
+ "source": [
315
+ "Final Results"
316
+ ]
317
+ },
318
+ {
319
+ "cell_type": "code",
320
+ "execution_count": null,
321
+ "metadata": {},
322
+ "outputs": [],
323
+ "source": [
324
+ "print(\"\\nFinal Results:\")\n",
325
+ "print(f\"Evaluation Loss Before Training: {eval_loss_before:.4f}\")\n",
326
+ "print(f\"Evaluation Loss After Training: {eval_loss_after:.4f}\")"
327
+ ]
328
+ }
329
+ ],
330
+ "metadata": {
331
+ "accelerator": "GPU",
332
+ "colab": {
333
+ "authorship_tag": "ABX9TyPRpNTtj0LgyUyd+wpJZ+Be",
334
+ "collapsed_sections": [],
335
+ "mount_file_id": "1ovKyRAAM9p3HfsAc9wGcZNn8TDhSeUtg",
336
+ "name": "Grammar_Correction.ipynb",
337
+ "provenance": []
338
+ },
339
+ "kernelspec": {
340
+ "display_name": "env",
341
+ "language": "python",
342
+ "name": "python3"
343
+ },
344
+ "language_info": {
345
+ "codemirror_mode": {
346
+ "name": "ipython",
347
+ "version": 3
348
+ },
349
+ "file_extension": ".py",
350
+ "mimetype": "text/x-python",
351
+ "name": "python",
352
+ "nbconvert_exporter": "python",
353
+ "pygments_lexer": "ipython3",
354
+ "version": "3.12.3"
355
+ },
356
+ "widgets": {
357
+ "application/vnd.jupyter.widget-state+json": {
358
+ "008fc02192624520b1a7d8c127027386": {
359
+ "model_module": "@jupyter-widgets/base",
360
+ "model_module_version": "1.2.0",
361
+ "model_name": "LayoutModel",
362
+ "state": {
363
+ "_model_module": "@jupyter-widgets/base",
364
+ "_model_module_version": "1.2.0",
365
+ "_model_name": "LayoutModel",
366
+ "_view_count": null,
367
+ "_view_module": "@jupyter-widgets/base",
368
+ "_view_module_version": "1.2.0",
369
+ "_view_name": "LayoutView",
370
+ "align_content": null,
371
+ "align_items": null,
372
+ "align_self": null,
373
+ "border": null,
374
+ "bottom": null,
375
+ "display": null,
376
+ "flex": null,
377
+ "flex_flow": null,
378
+ "grid_area": null,
379
+ "grid_auto_columns": null,
380
+ "grid_auto_flow": null,
381
+ "grid_auto_rows": null,
382
+ "grid_column": null,
383
+ "grid_gap": null,
384
+ "grid_row": null,
385
+ "grid_template_areas": null,
386
+ "grid_template_columns": null,
387
+ "grid_template_rows": null,
388
+ "height": null,
389
+ "justify_content": null,
390
+ "justify_items": null,
391
+ "left": null,
392
+ "margin": null,
393
+ "max_height": null,
394
+ "max_width": null,
395
+ "min_height": null,
396
+ "min_width": null,
397
+ "object_fit": null,
398
+ "object_position": null,
399
+ "order": null,
400
+ "overflow": null,
401
+ "overflow_x": null,
402
+ "overflow_y": null,
403
+ "padding": null,
404
+ "right": null,
405
+ "top": null,
406
+ "visibility": null,
407
+ "width": null
408
+ }
409
+ },
410
+ "0377c53b4d884ec39ff083049063e477": {
411
+ "model_module": "@jupyter-widgets/base",
412
+ "model_module_version": "1.2.0",
413
+ "model_name": "LayoutModel",
414
+ "state": {
415
+ "_model_module": "@jupyter-widgets/base",
416
+ "_model_module_version": "1.2.0",
417
+ "_model_name": "LayoutModel",
418
+ "_view_count": null,
419
+ "_view_module": "@jupyter-widgets/base",
420
+ "_view_module_version": "1.2.0",
421
+ "_view_name": "LayoutView",
422
+ "align_content": null,
423
+ "align_items": null,
424
+ "align_self": null,
425
+ "border": null,
426
+ "bottom": null,
427
+ "display": null,
428
+ "flex": null,
429
+ "flex_flow": null,
430
+ "grid_area": null,
431
+ "grid_auto_columns": null,
432
+ "grid_auto_flow": null,
433
+ "grid_auto_rows": null,
434
+ "grid_column": null,
435
+ "grid_gap": null,
436
+ "grid_row": null,
437
+ "grid_template_areas": null,
438
+ "grid_template_columns": null,
439
+ "grid_template_rows": null,
440
+ "height": null,
441
+ "justify_content": null,
442
+ "justify_items": null,
443
+ "left": null,
444
+ "margin": null,
445
+ "max_height": null,
446
+ "max_width": null,
447
+ "min_height": null,
448
+ "min_width": null,
449
+ "object_fit": null,
450
+ "object_position": null,
451
+ "order": null,
452
+ "overflow": null,
453
+ "overflow_x": null,
454
+ "overflow_y": null,
455
+ "padding": null,
456
+ "right": null,
457
+ "top": null,
458
+ "visibility": null,
459
+ "width": null
460
+ }
461
+ },
462
+ "0669b57af73340fdac2e223967b9f61d": {
463
+ "model_module": "@jupyter-widgets/controls",
464
+ "model_module_version": "1.5.0",
465
+ "model_name": "HTMLModel",
466
+ "state": {
467
+ "_dom_classes": [],
468
+ "_model_module": "@jupyter-widgets/controls",
469
+ "_model_module_version": "1.5.0",
470
+ "_model_name": "HTMLModel",
471
+ "_view_count": null,
472
+ "_view_module": "@jupyter-widgets/controls",
473
+ "_view_module_version": "1.5.0",
474
+ "_view_name": "HTMLView",
475
+ "description": "",
476
+ "description_tooltip": null,
477
+ "layout": "IPY_MODEL_008fc02192624520b1a7d8c127027386",
478
+ "placeholder": "​",
479
+ "style": "IPY_MODEL_3fa13eee18414192ba52a554e7f6df10",
480
+ "value": " 3/3 [00:00&lt;00:00, 4.53ba/s]"
481
+ }
482
+ },
483
+ "0758a2219066465d9aadbf1795275dcc": {
484
+ "model_module": "@jupyter-widgets/controls",
485
+ "model_module_version": "1.5.0",
486
+ "model_name": "HTMLModel",
487
+ "state": {
488
+ "_dom_classes": [],
489
+ "_model_module": "@jupyter-widgets/controls",
490
+ "_model_module_version": "1.5.0",
491
+ "_model_name": "HTMLModel",
492
+ "_view_count": null,
493
+ "_view_module": "@jupyter-widgets/controls",
494
+ "_view_module_version": "1.5.0",
495
+ "_view_name": "HTMLView",
496
+ "description": "",
497
+ "description_tooltip": null,
498
+ "layout": "IPY_MODEL_3bced91db888443d8feccc106218f222",
499
+ "placeholder": "​",
500
+ "style": "IPY_MODEL_70bb0c4bb963434389514e42f35a14ea",
501
+ "value": "100%"
502
+ }
503
+ },
504
+ "0fd0a0843ea7415fa74f5ce22936f4d7": {
505
+ "model_module": "@jupyter-widgets/controls",
506
+ "model_module_version": "1.5.0",
507
+ "model_name": "HTMLModel",
508
+ "state": {
509
+ "_dom_classes": [],
510
+ "_model_module": "@jupyter-widgets/controls",
511
+ "_model_module_version": "1.5.0",
512
+ "_model_name": "HTMLModel",
513
+ "_view_count": null,
514
+ "_view_module": "@jupyter-widgets/controls",
515
+ "_view_module_version": "1.5.0",
516
+ "_view_name": "HTMLView",
517
+ "description": "",
518
+ "description_tooltip": null,
519
+ "layout": "IPY_MODEL_f74afd3db88f4f0990c013b2b7737d11",
520
+ "placeholder": "​",
521
+ "style": "IPY_MODEL_b17817b9e5694a80903bcae0d7a79450",
522
+ "value": "100%"
523
+ }
524
+ },
525
+ "13301019edec4b5490f0dcc89ed98cea": {
526
+ "model_module": "@jupyter-widgets/base",
527
+ "model_module_version": "1.2.0",
528
+ "model_name": "LayoutModel",
529
+ "state": {
530
+ "_model_module": "@jupyter-widgets/base",
531
+ "_model_module_version": "1.2.0",
532
+ "_model_name": "LayoutModel",
533
+ "_view_count": null,
534
+ "_view_module": "@jupyter-widgets/base",
535
+ "_view_module_version": "1.2.0",
536
+ "_view_name": "LayoutView",
537
+ "align_content": null,
538
+ "align_items": null,
539
+ "align_self": null,
540
+ "border": null,
541
+ "bottom": null,
542
+ "display": null,
543
+ "flex": null,
544
+ "flex_flow": null,
545
+ "grid_area": null,
546
+ "grid_auto_columns": null,
547
+ "grid_auto_flow": null,
548
+ "grid_auto_rows": null,
549
+ "grid_column": null,
550
+ "grid_gap": null,
551
+ "grid_row": null,
552
+ "grid_template_areas": null,
553
+ "grid_template_columns": null,
554
+ "grid_template_rows": null,
555
+ "height": null,
556
+ "justify_content": null,
557
+ "justify_items": null,
558
+ "left": null,
559
+ "margin": null,
560
+ "max_height": null,
561
+ "max_width": null,
562
+ "min_height": null,
563
+ "min_width": null,
564
+ "object_fit": null,
565
+ "object_position": null,
566
+ "order": null,
567
+ "overflow": null,
568
+ "overflow_x": null,
569
+ "overflow_y": null,
570
+ "padding": null,
571
+ "right": null,
572
+ "top": null,
573
+ "visibility": null,
574
+ "width": null
575
+ }
576
+ },
577
+ "145604b4867c4452ad7634fbecfb49d2": {
578
+ "model_module": "@jupyter-widgets/controls",
579
+ "model_module_version": "1.5.0",
580
+ "model_name": "ProgressStyleModel",
581
+ "state": {
582
+ "_model_module": "@jupyter-widgets/controls",
583
+ "_model_module_version": "1.5.0",
584
+ "_model_name": "ProgressStyleModel",
585
+ "_view_count": null,
586
+ "_view_module": "@jupyter-widgets/base",
587
+ "_view_module_version": "1.2.0",
588
+ "_view_name": "StyleView",
589
+ "bar_color": null,
590
+ "description_width": ""
591
+ }
592
+ },
593
+ "18d1384e679241948d77fec27d9534a9": {
594
+ "model_module": "@jupyter-widgets/base",
595
+ "model_module_version": "1.2.0",
596
+ "model_name": "LayoutModel",
597
+ "state": {
598
+ "_model_module": "@jupyter-widgets/base",
599
+ "_model_module_version": "1.2.0",
600
+ "_model_name": "LayoutModel",
601
+ "_view_count": null,
602
+ "_view_module": "@jupyter-widgets/base",
603
+ "_view_module_version": "1.2.0",
604
+ "_view_name": "LayoutView",
605
+ "align_content": null,
606
+ "align_items": null,
607
+ "align_self": null,
608
+ "border": null,
609
+ "bottom": null,
610
+ "display": null,
611
+ "flex": null,
612
+ "flex_flow": null,
613
+ "grid_area": null,
614
+ "grid_auto_columns": null,
615
+ "grid_auto_flow": null,
616
+ "grid_auto_rows": null,
617
+ "grid_column": null,
618
+ "grid_gap": null,
619
+ "grid_row": null,
620
+ "grid_template_areas": null,
621
+ "grid_template_columns": null,
622
+ "grid_template_rows": null,
623
+ "height": null,
624
+ "justify_content": null,
625
+ "justify_items": null,
626
+ "left": null,
627
+ "margin": null,
628
+ "max_height": null,
629
+ "max_width": null,
630
+ "min_height": null,
631
+ "min_width": null,
632
+ "object_fit": null,
633
+ "object_position": null,
634
+ "order": null,
635
+ "overflow": null,
636
+ "overflow_x": null,
637
+ "overflow_y": null,
638
+ "padding": null,
639
+ "right": null,
640
+ "top": null,
641
+ "visibility": null,
642
+ "width": null
643
+ }
644
+ },
645
+ "1a7598433c524488ac83788bec6e244c": {
646
+ "model_module": "@jupyter-widgets/base",
647
+ "model_module_version": "1.2.0",
648
+ "model_name": "LayoutModel",
649
+ "state": {
650
+ "_model_module": "@jupyter-widgets/base",
651
+ "_model_module_version": "1.2.0",
652
+ "_model_name": "LayoutModel",
653
+ "_view_count": null,
654
+ "_view_module": "@jupyter-widgets/base",
655
+ "_view_module_version": "1.2.0",
656
+ "_view_name": "LayoutView",
657
+ "align_content": null,
658
+ "align_items": null,
659
+ "align_self": null,
660
+ "border": null,
661
+ "bottom": null,
662
+ "display": null,
663
+ "flex": null,
664
+ "flex_flow": null,
665
+ "grid_area": null,
666
+ "grid_auto_columns": null,
667
+ "grid_auto_flow": null,
668
+ "grid_auto_rows": null,
669
+ "grid_column": null,
670
+ "grid_gap": null,
671
+ "grid_row": null,
672
+ "grid_template_areas": null,
673
+ "grid_template_columns": null,
674
+ "grid_template_rows": null,
675
+ "height": null,
676
+ "justify_content": null,
677
+ "justify_items": null,
678
+ "left": null,
679
+ "margin": null,
680
+ "max_height": null,
681
+ "max_width": null,
682
+ "min_height": null,
683
+ "min_width": null,
684
+ "object_fit": null,
685
+ "object_position": null,
686
+ "order": null,
687
+ "overflow": null,
688
+ "overflow_x": null,
689
+ "overflow_y": null,
690
+ "padding": null,
691
+ "right": null,
692
+ "top": null,
693
+ "visibility": null,
694
+ "width": null
695
+ }
696
+ },
697
+ "1e53f995f29941c591bf4537a1c8003f": {
698
+ "model_module": "@jupyter-widgets/controls",
699
+ "model_module_version": "1.5.0",
700
+ "model_name": "ProgressStyleModel",
701
+ "state": {
702
+ "_model_module": "@jupyter-widgets/controls",
703
+ "_model_module_version": "1.5.0",
704
+ "_model_name": "ProgressStyleModel",
705
+ "_view_count": null,
706
+ "_view_module": "@jupyter-widgets/base",
707
+ "_view_module_version": "1.2.0",
708
+ "_view_name": "StyleView",
709
+ "bar_color": null,
710
+ "description_width": ""
711
+ }
712
+ },
713
+ "1e5e496ccc2b43399536d76b4bf8d58b": {
714
+ "model_module": "@jupyter-widgets/base",
715
+ "model_module_version": "1.2.0",
716
+ "model_name": "LayoutModel",
717
+ "state": {
718
+ "_model_module": "@jupyter-widgets/base",
719
+ "_model_module_version": "1.2.0",
720
+ "_model_name": "LayoutModel",
721
+ "_view_count": null,
722
+ "_view_module": "@jupyter-widgets/base",
723
+ "_view_module_version": "1.2.0",
724
+ "_view_name": "LayoutView",
725
+ "align_content": null,
726
+ "align_items": null,
727
+ "align_self": null,
728
+ "border": null,
729
+ "bottom": null,
730
+ "display": null,
731
+ "flex": null,
732
+ "flex_flow": null,
733
+ "grid_area": null,
734
+ "grid_auto_columns": null,
735
+ "grid_auto_flow": null,
736
+ "grid_auto_rows": null,
737
+ "grid_column": null,
738
+ "grid_gap": null,
739
+ "grid_row": null,
740
+ "grid_template_areas": null,
741
+ "grid_template_columns": null,
742
+ "grid_template_rows": null,
743
+ "height": null,
744
+ "justify_content": null,
745
+ "justify_items": null,
746
+ "left": null,
747
+ "margin": null,
748
+ "max_height": null,
749
+ "max_width": null,
750
+ "min_height": null,
751
+ "min_width": null,
752
+ "object_fit": null,
753
+ "object_position": null,
754
+ "order": null,
755
+ "overflow": null,
756
+ "overflow_x": null,
757
+ "overflow_y": null,
758
+ "padding": null,
759
+ "right": null,
760
+ "top": null,
761
+ "visibility": null,
762
+ "width": null
763
+ }
764
+ },
765
+ "1ff738356efa415eb67a780133c2d9be": {
766
+ "model_module": "@jupyter-widgets/controls",
767
+ "model_module_version": "1.5.0",
768
+ "model_name": "FloatProgressModel",
769
+ "state": {
770
+ "_dom_classes": [],
771
+ "_model_module": "@jupyter-widgets/controls",
772
+ "_model_module_version": "1.5.0",
773
+ "_model_name": "FloatProgressModel",
774
+ "_view_count": null,
775
+ "_view_module": "@jupyter-widgets/controls",
776
+ "_view_module_version": "1.5.0",
777
+ "_view_name": "ProgressView",
778
+ "bar_style": "success",
779
+ "description": "",
780
+ "description_tooltip": null,
781
+ "layout": "IPY_MODEL_0377c53b4d884ec39ff083049063e477",
782
+ "max": 1,
783
+ "min": 0,
784
+ "orientation": "horizontal",
785
+ "style": "IPY_MODEL_145604b4867c4452ad7634fbecfb49d2",
786
+ "value": 1
787
+ }
788
+ },
789
+ "361e56715e694608b61718191529345b": {
790
+ "model_module": "@jupyter-widgets/controls",
791
+ "model_module_version": "1.5.0",
792
+ "model_name": "HBoxModel",
793
+ "state": {
794
+ "_dom_classes": [],
795
+ "_model_module": "@jupyter-widgets/controls",
796
+ "_model_module_version": "1.5.0",
797
+ "_model_name": "HBoxModel",
798
+ "_view_count": null,
799
+ "_view_module": "@jupyter-widgets/controls",
800
+ "_view_module_version": "1.5.0",
801
+ "_view_name": "HBoxView",
802
+ "box_style": "",
803
+ "children": [
804
+ "IPY_MODEL_0758a2219066465d9aadbf1795275dcc",
805
+ "IPY_MODEL_8ab3e953c9264fa08974e16cce721ea2",
806
+ "IPY_MODEL_b8218c9d03b14a6aadebbe3a821e79d7"
807
+ ],
808
+ "layout": "IPY_MODEL_e8c0e9ca8136406291cb14cd7249ed0c"
809
+ }
810
+ },
811
+ "3bced91db888443d8feccc106218f222": {
812
+ "model_module": "@jupyter-widgets/base",
813
+ "model_module_version": "1.2.0",
814
+ "model_name": "LayoutModel",
815
+ "state": {
816
+ "_model_module": "@jupyter-widgets/base",
817
+ "_model_module_version": "1.2.0",
818
+ "_model_name": "LayoutModel",
819
+ "_view_count": null,
820
+ "_view_module": "@jupyter-widgets/base",
821
+ "_view_module_version": "1.2.0",
822
+ "_view_name": "LayoutView",
823
+ "align_content": null,
824
+ "align_items": null,
825
+ "align_self": null,
826
+ "border": null,
827
+ "bottom": null,
828
+ "display": null,
829
+ "flex": null,
830
+ "flex_flow": null,
831
+ "grid_area": null,
832
+ "grid_auto_columns": null,
833
+ "grid_auto_flow": null,
834
+ "grid_auto_rows": null,
835
+ "grid_column": null,
836
+ "grid_gap": null,
837
+ "grid_row": null,
838
+ "grid_template_areas": null,
839
+ "grid_template_columns": null,
840
+ "grid_template_rows": null,
841
+ "height": null,
842
+ "justify_content": null,
843
+ "justify_items": null,
844
+ "left": null,
845
+ "margin": null,
846
+ "max_height": null,
847
+ "max_width": null,
848
+ "min_height": null,
849
+ "min_width": null,
850
+ "object_fit": null,
851
+ "object_position": null,
852
+ "order": null,
853
+ "overflow": null,
854
+ "overflow_x": null,
855
+ "overflow_y": null,
856
+ "padding": null,
857
+ "right": null,
858
+ "top": null,
859
+ "visibility": null,
860
+ "width": null
861
+ }
862
+ },
863
+ "3fa13eee18414192ba52a554e7f6df10": {
864
+ "model_module": "@jupyter-widgets/controls",
865
+ "model_module_version": "1.5.0",
866
+ "model_name": "DescriptionStyleModel",
867
+ "state": {
868
+ "_model_module": "@jupyter-widgets/controls",
869
+ "_model_module_version": "1.5.0",
870
+ "_model_name": "DescriptionStyleModel",
871
+ "_view_count": null,
872
+ "_view_module": "@jupyter-widgets/base",
873
+ "_view_module_version": "1.2.0",
874
+ "_view_name": "StyleView",
875
+ "description_width": ""
876
+ }
877
+ },
878
+ "40a0acd455594c14b6eac3d92fd195a2": {
879
+ "model_module": "@jupyter-widgets/base",
880
+ "model_module_version": "1.2.0",
881
+ "model_name": "LayoutModel",
882
+ "state": {
883
+ "_model_module": "@jupyter-widgets/base",
884
+ "_model_module_version": "1.2.0",
885
+ "_model_name": "LayoutModel",
886
+ "_view_count": null,
887
+ "_view_module": "@jupyter-widgets/base",
888
+ "_view_module_version": "1.2.0",
889
+ "_view_name": "LayoutView",
890
+ "align_content": null,
891
+ "align_items": null,
892
+ "align_self": null,
893
+ "border": null,
894
+ "bottom": null,
895
+ "display": null,
896
+ "flex": null,
897
+ "flex_flow": null,
898
+ "grid_area": null,
899
+ "grid_auto_columns": null,
900
+ "grid_auto_flow": null,
901
+ "grid_auto_rows": null,
902
+ "grid_column": null,
903
+ "grid_gap": null,
904
+ "grid_row": null,
905
+ "grid_template_areas": null,
906
+ "grid_template_columns": null,
907
+ "grid_template_rows": null,
908
+ "height": null,
909
+ "justify_content": null,
910
+ "justify_items": null,
911
+ "left": null,
912
+ "margin": null,
913
+ "max_height": null,
914
+ "max_width": null,
915
+ "min_height": null,
916
+ "min_width": null,
917
+ "object_fit": null,
918
+ "object_position": null,
919
+ "order": null,
920
+ "overflow": null,
921
+ "overflow_x": null,
922
+ "overflow_y": null,
923
+ "padding": null,
924
+ "right": null,
925
+ "top": null,
926
+ "visibility": null,
927
+ "width": null
928
+ }
929
+ },
930
+ "40d8809b51a34d89b06f56b296afea80": {
931
+ "model_module": "@jupyter-widgets/controls",
932
+ "model_module_version": "1.5.0",
933
+ "model_name": "ProgressStyleModel",
934
+ "state": {
935
+ "_model_module": "@jupyter-widgets/controls",
936
+ "_model_module_version": "1.5.0",
937
+ "_model_name": "ProgressStyleModel",
938
+ "_view_count": null,
939
+ "_view_module": "@jupyter-widgets/base",
940
+ "_view_module_version": "1.2.0",
941
+ "_view_name": "StyleView",
942
+ "bar_color": null,
943
+ "description_width": ""
944
+ }
945
+ },
946
+ "46d1e8bc47cb463a8795339fcf0ab750": {
947
+ "model_module": "@jupyter-widgets/controls",
948
+ "model_module_version": "1.5.0",
949
+ "model_name": "DescriptionStyleModel",
950
+ "state": {
951
+ "_model_module": "@jupyter-widgets/controls",
952
+ "_model_module_version": "1.5.0",
953
+ "_model_name": "DescriptionStyleModel",
954
+ "_view_count": null,
955
+ "_view_module": "@jupyter-widgets/base",
956
+ "_view_module_version": "1.2.0",
957
+ "_view_name": "StyleView",
958
+ "description_width": ""
959
+ }
960
+ },
961
+ "4b263df37ab64e97817f06c90d75cb51": {
962
+ "model_module": "@jupyter-widgets/controls",
963
+ "model_module_version": "1.5.0",
964
+ "model_name": "HBoxModel",
965
+ "state": {
966
+ "_dom_classes": [],
967
+ "_model_module": "@jupyter-widgets/controls",
968
+ "_model_module_version": "1.5.0",
969
+ "_model_name": "HBoxModel",
970
+ "_view_count": null,
971
+ "_view_module": "@jupyter-widgets/controls",
972
+ "_view_module_version": "1.5.0",
973
+ "_view_name": "HBoxView",
974
+ "box_style": "",
975
+ "children": [
976
+ "IPY_MODEL_d6bbab0148c14c4f8913a9fb3dec0786",
977
+ "IPY_MODEL_9b92cf776d2b40218fc4651832e8ff3a",
978
+ "IPY_MODEL_7fab83afb30d4ef8ace642b752ae46f4"
979
+ ],
980
+ "layout": "IPY_MODEL_d92ada7f667847d099960d87b27be16e"
981
+ }
982
+ },
983
+ "4f8c235bb2a04a0bb40abefb5834f117": {
984
+ "model_module": "@jupyter-widgets/controls",
985
+ "model_module_version": "1.5.0",
986
+ "model_name": "HTMLModel",
987
+ "state": {
988
+ "_dom_classes": [],
989
+ "_model_module": "@jupyter-widgets/controls",
990
+ "_model_module_version": "1.5.0",
991
+ "_model_name": "HTMLModel",
992
+ "_view_count": null,
993
+ "_view_module": "@jupyter-widgets/controls",
994
+ "_view_module_version": "1.5.0",
995
+ "_view_name": "HTMLView",
996
+ "description": "",
997
+ "description_tooltip": null,
998
+ "layout": "IPY_MODEL_950f6a92f0794bf0b3ddda8490823a0e",
999
+ "placeholder": "​",
1000
+ "style": "IPY_MODEL_73662c71262a4905807f62fbcba8038e",
1001
+ "value": " 1/1 [00:00&lt;00:00, 18.53it/s]"
1002
+ }
1003
+ },
1004
+ "5028dd48198847829aee5a3f774f4110": {
1005
+ "model_module": "@jupyter-widgets/base",
1006
+ "model_module_version": "1.2.0",
1007
+ "model_name": "LayoutModel",
1008
+ "state": {
1009
+ "_model_module": "@jupyter-widgets/base",
1010
+ "_model_module_version": "1.2.0",
1011
+ "_model_name": "LayoutModel",
1012
+ "_view_count": null,
1013
+ "_view_module": "@jupyter-widgets/base",
1014
+ "_view_module_version": "1.2.0",
1015
+ "_view_name": "LayoutView",
1016
+ "align_content": null,
1017
+ "align_items": null,
1018
+ "align_self": null,
1019
+ "border": null,
1020
+ "bottom": null,
1021
+ "display": null,
1022
+ "flex": null,
1023
+ "flex_flow": null,
1024
+ "grid_area": null,
1025
+ "grid_auto_columns": null,
1026
+ "grid_auto_flow": null,
1027
+ "grid_auto_rows": null,
1028
+ "grid_column": null,
1029
+ "grid_gap": null,
1030
+ "grid_row": null,
1031
+ "grid_template_areas": null,
1032
+ "grid_template_columns": null,
1033
+ "grid_template_rows": null,
1034
+ "height": null,
1035
+ "justify_content": null,
1036
+ "justify_items": null,
1037
+ "left": null,
1038
+ "margin": null,
1039
+ "max_height": null,
1040
+ "max_width": null,
1041
+ "min_height": null,
1042
+ "min_width": null,
1043
+ "object_fit": null,
1044
+ "object_position": null,
1045
+ "order": null,
1046
+ "overflow": null,
1047
+ "overflow_x": null,
1048
+ "overflow_y": null,
1049
+ "padding": null,
1050
+ "right": null,
1051
+ "top": null,
1052
+ "visibility": null,
1053
+ "width": null
1054
+ }
1055
+ },
1056
+ "5da15ce5ebaf446081a47ec75cac919a": {
1057
+ "model_module": "@jupyter-widgets/base",
1058
+ "model_module_version": "1.2.0",
1059
+ "model_name": "LayoutModel",
1060
+ "state": {
1061
+ "_model_module": "@jupyter-widgets/base",
1062
+ "_model_module_version": "1.2.0",
1063
+ "_model_name": "LayoutModel",
1064
+ "_view_count": null,
1065
+ "_view_module": "@jupyter-widgets/base",
1066
+ "_view_module_version": "1.2.0",
1067
+ "_view_name": "LayoutView",
1068
+ "align_content": null,
1069
+ "align_items": null,
1070
+ "align_self": null,
1071
+ "border": null,
1072
+ "bottom": null,
1073
+ "display": null,
1074
+ "flex": null,
1075
+ "flex_flow": null,
1076
+ "grid_area": null,
1077
+ "grid_auto_columns": null,
1078
+ "grid_auto_flow": null,
1079
+ "grid_auto_rows": null,
1080
+ "grid_column": null,
1081
+ "grid_gap": null,
1082
+ "grid_row": null,
1083
+ "grid_template_areas": null,
1084
+ "grid_template_columns": null,
1085
+ "grid_template_rows": null,
1086
+ "height": null,
1087
+ "justify_content": null,
1088
+ "justify_items": null,
1089
+ "left": null,
1090
+ "margin": null,
1091
+ "max_height": null,
1092
+ "max_width": null,
1093
+ "min_height": null,
1094
+ "min_width": null,
1095
+ "object_fit": null,
1096
+ "object_position": null,
1097
+ "order": null,
1098
+ "overflow": null,
1099
+ "overflow_x": null,
1100
+ "overflow_y": null,
1101
+ "padding": null,
1102
+ "right": null,
1103
+ "top": null,
1104
+ "visibility": null,
1105
+ "width": null
1106
+ }
1107
+ },
1108
+ "60b06791a96c42eaba16c7cac029a59a": {
1109
+ "model_module": "@jupyter-widgets/controls",
1110
+ "model_module_version": "1.5.0",
1111
+ "model_name": "HBoxModel",
1112
+ "state": {
1113
+ "_dom_classes": [],
1114
+ "_model_module": "@jupyter-widgets/controls",
1115
+ "_model_module_version": "1.5.0",
1116
+ "_model_name": "HBoxModel",
1117
+ "_view_count": null,
1118
+ "_view_module": "@jupyter-widgets/controls",
1119
+ "_view_module_version": "1.5.0",
1120
+ "_view_name": "HBoxView",
1121
+ "box_style": "",
1122
+ "children": [
1123
+ "IPY_MODEL_afccbaa8d81f4a10813b24c090948313",
1124
+ "IPY_MODEL_7a737154388b41439158b9f1424438f2",
1125
+ "IPY_MODEL_81b0e558f96f4d23a4a2434c34f23200"
1126
+ ],
1127
+ "layout": "IPY_MODEL_e918575c17454484bb7ade0748dabe61"
1128
+ }
1129
+ },
1130
+ "62451cada7ff41d7aa04d6d8403d9e01": {
1131
+ "model_module": "@jupyter-widgets/controls",
1132
+ "model_module_version": "1.5.0",
1133
+ "model_name": "FloatProgressModel",
1134
+ "state": {
1135
+ "_dom_classes": [],
1136
+ "_model_module": "@jupyter-widgets/controls",
1137
+ "_model_module_version": "1.5.0",
1138
+ "_model_name": "FloatProgressModel",
1139
+ "_view_count": null,
1140
+ "_view_module": "@jupyter-widgets/controls",
1141
+ "_view_module_version": "1.5.0",
1142
+ "_view_name": "ProgressView",
1143
+ "bar_style": "success",
1144
+ "description": "",
1145
+ "description_tooltip": null,
1146
+ "layout": "IPY_MODEL_c4fea76717774b2fb0f4c1bd55aab02b",
1147
+ "max": 3,
1148
+ "min": 0,
1149
+ "orientation": "horizontal",
1150
+ "style": "IPY_MODEL_40d8809b51a34d89b06f56b296afea80",
1151
+ "value": 3
1152
+ }
1153
+ },
1154
+ "6507a487be264c6680d784534329f0df": {
1155
+ "model_module": "@jupyter-widgets/controls",
1156
+ "model_module_version": "1.5.0",
1157
+ "model_name": "HBoxModel",
1158
+ "state": {
1159
+ "_dom_classes": [],
1160
+ "_model_module": "@jupyter-widgets/controls",
1161
+ "_model_module_version": "1.5.0",
1162
+ "_model_name": "HBoxModel",
1163
+ "_view_count": null,
1164
+ "_view_module": "@jupyter-widgets/controls",
1165
+ "_view_module_version": "1.5.0",
1166
+ "_view_name": "HBoxView",
1167
+ "box_style": "",
1168
+ "children": [
1169
+ "IPY_MODEL_ff801a5352814910b0036da71c7f512c",
1170
+ "IPY_MODEL_746819a1358446d4bc0efd2601656595",
1171
+ "IPY_MODEL_be56c0279fb141c893476113cb7d6b72"
1172
+ ],
1173
+ "layout": "IPY_MODEL_40a0acd455594c14b6eac3d92fd195a2"
1174
+ }
1175
+ },
1176
+ "65ce0df3594d4efe831c9b2a1b65f45e": {
1177
+ "model_module": "@jupyter-widgets/controls",
1178
+ "model_module_version": "1.5.0",
1179
+ "model_name": "ProgressStyleModel",
1180
+ "state": {
1181
+ "_model_module": "@jupyter-widgets/controls",
1182
+ "_model_module_version": "1.5.0",
1183
+ "_model_name": "ProgressStyleModel",
1184
+ "_view_count": null,
1185
+ "_view_module": "@jupyter-widgets/base",
1186
+ "_view_module_version": "1.2.0",
1187
+ "_view_name": "StyleView",
1188
+ "bar_color": null,
1189
+ "description_width": ""
1190
+ }
1191
+ },
1192
+ "6bdd0601dad04182893a9f39493aaba6": {
1193
+ "model_module": "@jupyter-widgets/controls",
1194
+ "model_module_version": "1.5.0",
1195
+ "model_name": "DescriptionStyleModel",
1196
+ "state": {
1197
+ "_model_module": "@jupyter-widgets/controls",
1198
+ "_model_module_version": "1.5.0",
1199
+ "_model_name": "DescriptionStyleModel",
1200
+ "_view_count": null,
1201
+ "_view_module": "@jupyter-widgets/base",
1202
+ "_view_module_version": "1.2.0",
1203
+ "_view_name": "StyleView",
1204
+ "description_width": ""
1205
+ }
1206
+ },
1207
+ "6befbd03e3af43588725ba6ffa48c44c": {
1208
+ "model_module": "@jupyter-widgets/controls",
1209
+ "model_module_version": "1.5.0",
1210
+ "model_name": "DescriptionStyleModel",
1211
+ "state": {
1212
+ "_model_module": "@jupyter-widgets/controls",
1213
+ "_model_module_version": "1.5.0",
1214
+ "_model_name": "DescriptionStyleModel",
1215
+ "_view_count": null,
1216
+ "_view_module": "@jupyter-widgets/base",
1217
+ "_view_module_version": "1.2.0",
1218
+ "_view_name": "StyleView",
1219
+ "description_width": ""
1220
+ }
1221
+ },
1222
+ "70bb0c4bb963434389514e42f35a14ea": {
1223
+ "model_module": "@jupyter-widgets/controls",
1224
+ "model_module_version": "1.5.0",
1225
+ "model_name": "DescriptionStyleModel",
1226
+ "state": {
1227
+ "_model_module": "@jupyter-widgets/controls",
1228
+ "_model_module_version": "1.5.0",
1229
+ "_model_name": "DescriptionStyleModel",
1230
+ "_view_count": null,
1231
+ "_view_module": "@jupyter-widgets/base",
1232
+ "_view_module_version": "1.2.0",
1233
+ "_view_name": "StyleView",
1234
+ "description_width": ""
1235
+ }
1236
+ },
1237
+ "73662c71262a4905807f62fbcba8038e": {
1238
+ "model_module": "@jupyter-widgets/controls",
1239
+ "model_module_version": "1.5.0",
1240
+ "model_name": "DescriptionStyleModel",
1241
+ "state": {
1242
+ "_model_module": "@jupyter-widgets/controls",
1243
+ "_model_module_version": "1.5.0",
1244
+ "_model_name": "DescriptionStyleModel",
1245
+ "_view_count": null,
1246
+ "_view_module": "@jupyter-widgets/base",
1247
+ "_view_module_version": "1.2.0",
1248
+ "_view_name": "StyleView",
1249
+ "description_width": ""
1250
+ }
1251
+ },
1252
+ "73b0fce1566a4f57b34075d6c54f184c": {
1253
+ "model_module": "@jupyter-widgets/controls",
1254
+ "model_module_version": "1.5.0",
1255
+ "model_name": "HTMLModel",
1256
+ "state": {
1257
+ "_dom_classes": [],
1258
+ "_model_module": "@jupyter-widgets/controls",
1259
+ "_model_module_version": "1.5.0",
1260
+ "_model_name": "HTMLModel",
1261
+ "_view_count": null,
1262
+ "_view_module": "@jupyter-widgets/controls",
1263
+ "_view_module_version": "1.5.0",
1264
+ "_view_name": "HTMLView",
1265
+ "description": "",
1266
+ "description_tooltip": null,
1267
+ "layout": "IPY_MODEL_94ce16ddd3e54c6e99f4449c119cb978",
1268
+ "placeholder": "​",
1269
+ "style": "IPY_MODEL_46d1e8bc47cb463a8795339fcf0ab750",
1270
+ "value": "100%"
1271
+ }
1272
+ },
1273
+ "746819a1358446d4bc0efd2601656595": {
1274
+ "model_module": "@jupyter-widgets/controls",
1275
+ "model_module_version": "1.5.0",
1276
+ "model_name": "FloatProgressModel",
1277
+ "state": {
1278
+ "_dom_classes": [],
1279
+ "_model_module": "@jupyter-widgets/controls",
1280
+ "_model_module_version": "1.5.0",
1281
+ "_model_name": "FloatProgressModel",
1282
+ "_view_count": null,
1283
+ "_view_module": "@jupyter-widgets/controls",
1284
+ "_view_module_version": "1.5.0",
1285
+ "_view_name": "ProgressView",
1286
+ "bar_style": "success",
1287
+ "description": "",
1288
+ "description_tooltip": null,
1289
+ "layout": "IPY_MODEL_ee793105258d46a7992d09d93351c28d",
1290
+ "max": 1,
1291
+ "min": 0,
1292
+ "orientation": "horizontal",
1293
+ "style": "IPY_MODEL_65ce0df3594d4efe831c9b2a1b65f45e",
1294
+ "value": 1
1295
+ }
1296
+ },
1297
+ "7a737154388b41439158b9f1424438f2": {
1298
+ "model_module": "@jupyter-widgets/controls",
1299
+ "model_module_version": "1.5.0",
1300
+ "model_name": "FloatProgressModel",
1301
+ "state": {
1302
+ "_dom_classes": [],
1303
+ "_model_module": "@jupyter-widgets/controls",
1304
+ "_model_module_version": "1.5.0",
1305
+ "_model_name": "FloatProgressModel",
1306
+ "_view_count": null,
1307
+ "_view_module": "@jupyter-widgets/controls",
1308
+ "_view_module_version": "1.5.0",
1309
+ "_view_name": "ProgressView",
1310
+ "bar_style": "success",
1311
+ "description": "",
1312
+ "description_tooltip": null,
1313
+ "layout": "IPY_MODEL_c18f1c44483e47298876d6fb6f4805d6",
1314
+ "max": 3,
1315
+ "min": 0,
1316
+ "orientation": "horizontal",
1317
+ "style": "IPY_MODEL_1e53f995f29941c591bf4537a1c8003f",
1318
+ "value": 3
1319
+ }
1320
+ },
1321
+ "7b8294fcc116455b9aa64ab409c41a66": {
1322
+ "model_module": "@jupyter-widgets/controls",
1323
+ "model_module_version": "1.5.0",
1324
+ "model_name": "ProgressStyleModel",
1325
+ "state": {
1326
+ "_model_module": "@jupyter-widgets/controls",
1327
+ "_model_module_version": "1.5.0",
1328
+ "_model_name": "ProgressStyleModel",
1329
+ "_view_count": null,
1330
+ "_view_module": "@jupyter-widgets/base",
1331
+ "_view_module_version": "1.2.0",
1332
+ "_view_name": "StyleView",
1333
+ "bar_color": null,
1334
+ "description_width": ""
1335
+ }
1336
+ },
1337
+ "7fab83afb30d4ef8ace642b752ae46f4": {
1338
+ "model_module": "@jupyter-widgets/controls",
1339
+ "model_module_version": "1.5.0",
1340
+ "model_name": "HTMLModel",
1341
+ "state": {
1342
+ "_dom_classes": [],
1343
+ "_model_module": "@jupyter-widgets/controls",
1344
+ "_model_module_version": "1.5.0",
1345
+ "_model_name": "HTMLModel",
1346
+ "_view_count": null,
1347
+ "_view_module": "@jupyter-widgets/controls",
1348
+ "_view_module_version": "1.5.0",
1349
+ "_view_name": "HTMLView",
1350
+ "description": "",
1351
+ "description_tooltip": null,
1352
+ "layout": "IPY_MODEL_b3fe29d5e91a4cfea92c1890ae58c6c2",
1353
+ "placeholder": "​",
1354
+ "style": "IPY_MODEL_a95fcb9980004932be21f3895282bf79",
1355
+ "value": " 1/1 [00:00&lt;00:00, 23.43it/s]"
1356
+ }
1357
+ },
1358
+ "81b0e558f96f4d23a4a2434c34f23200": {
1359
+ "model_module": "@jupyter-widgets/controls",
1360
+ "model_module_version": "1.5.0",
1361
+ "model_name": "HTMLModel",
1362
+ "state": {
1363
+ "_dom_classes": [],
1364
+ "_model_module": "@jupyter-widgets/controls",
1365
+ "_model_module_version": "1.5.0",
1366
+ "_model_name": "HTMLModel",
1367
+ "_view_count": null,
1368
+ "_view_module": "@jupyter-widgets/controls",
1369
+ "_view_module_version": "1.5.0",
1370
+ "_view_name": "HTMLView",
1371
+ "description": "",
1372
+ "description_tooltip": null,
1373
+ "layout": "IPY_MODEL_e848b4cdb9a0433d9f1f503531a79e85",
1374
+ "placeholder": "​",
1375
+ "style": "IPY_MODEL_e4100521ee6b4275878049f3b4d7ea95",
1376
+ "value": " 3/3 [00:00&lt;00:00, 6.27ba/s]"
1377
+ }
1378
+ },
1379
+ "8942a08d41a9429ebed73feedbb768df": {
1380
+ "model_module": "@jupyter-widgets/controls",
1381
+ "model_module_version": "1.5.0",
1382
+ "model_name": "DescriptionStyleModel",
1383
+ "state": {
1384
+ "_model_module": "@jupyter-widgets/controls",
1385
+ "_model_module_version": "1.5.0",
1386
+ "_model_name": "DescriptionStyleModel",
1387
+ "_view_count": null,
1388
+ "_view_module": "@jupyter-widgets/base",
1389
+ "_view_module_version": "1.2.0",
1390
+ "_view_name": "StyleView",
1391
+ "description_width": ""
1392
+ }
1393
+ },
1394
+ "8ab3e953c9264fa08974e16cce721ea2": {
1395
+ "model_module": "@jupyter-widgets/controls",
1396
+ "model_module_version": "1.5.0",
1397
+ "model_name": "FloatProgressModel",
1398
+ "state": {
1399
+ "_dom_classes": [],
1400
+ "_model_module": "@jupyter-widgets/controls",
1401
+ "_model_module_version": "1.5.0",
1402
+ "_model_name": "FloatProgressModel",
1403
+ "_view_count": null,
1404
+ "_view_module": "@jupyter-widgets/controls",
1405
+ "_view_module_version": "1.5.0",
1406
+ "_view_name": "ProgressView",
1407
+ "bar_style": "success",
1408
+ "description": "",
1409
+ "description_tooltip": null,
1410
+ "layout": "IPY_MODEL_5028dd48198847829aee5a3f774f4110",
1411
+ "max": 4,
1412
+ "min": 0,
1413
+ "orientation": "horizontal",
1414
+ "style": "IPY_MODEL_90d088b7386944ef9fa70b7ab326919d",
1415
+ "value": 4
1416
+ }
1417
+ },
1418
+ "8eeb1b2975e441a8808eb0f11457bfad": {
1419
+ "model_module": "@jupyter-widgets/base",
1420
+ "model_module_version": "1.2.0",
1421
+ "model_name": "LayoutModel",
1422
+ "state": {
1423
+ "_model_module": "@jupyter-widgets/base",
1424
+ "_model_module_version": "1.2.0",
1425
+ "_model_name": "LayoutModel",
1426
+ "_view_count": null,
1427
+ "_view_module": "@jupyter-widgets/base",
1428
+ "_view_module_version": "1.2.0",
1429
+ "_view_name": "LayoutView",
1430
+ "align_content": null,
1431
+ "align_items": null,
1432
+ "align_self": null,
1433
+ "border": null,
1434
+ "bottom": null,
1435
+ "display": null,
1436
+ "flex": null,
1437
+ "flex_flow": null,
1438
+ "grid_area": null,
1439
+ "grid_auto_columns": null,
1440
+ "grid_auto_flow": null,
1441
+ "grid_auto_rows": null,
1442
+ "grid_column": null,
1443
+ "grid_gap": null,
1444
+ "grid_row": null,
1445
+ "grid_template_areas": null,
1446
+ "grid_template_columns": null,
1447
+ "grid_template_rows": null,
1448
+ "height": null,
1449
+ "justify_content": null,
1450
+ "justify_items": null,
1451
+ "left": null,
1452
+ "margin": null,
1453
+ "max_height": null,
1454
+ "max_width": null,
1455
+ "min_height": null,
1456
+ "min_width": null,
1457
+ "object_fit": null,
1458
+ "object_position": null,
1459
+ "order": null,
1460
+ "overflow": null,
1461
+ "overflow_x": null,
1462
+ "overflow_y": null,
1463
+ "padding": null,
1464
+ "right": null,
1465
+ "top": null,
1466
+ "visibility": null,
1467
+ "width": null
1468
+ }
1469
+ },
1470
+ "90d088b7386944ef9fa70b7ab326919d": {
1471
+ "model_module": "@jupyter-widgets/controls",
1472
+ "model_module_version": "1.5.0",
1473
+ "model_name": "ProgressStyleModel",
1474
+ "state": {
1475
+ "_model_module": "@jupyter-widgets/controls",
1476
+ "_model_module_version": "1.5.0",
1477
+ "_model_name": "ProgressStyleModel",
1478
+ "_view_count": null,
1479
+ "_view_module": "@jupyter-widgets/base",
1480
+ "_view_module_version": "1.2.0",
1481
+ "_view_name": "StyleView",
1482
+ "bar_color": null,
1483
+ "description_width": ""
1484
+ }
1485
+ },
1486
+ "94ce16ddd3e54c6e99f4449c119cb978": {
1487
+ "model_module": "@jupyter-widgets/base",
1488
+ "model_module_version": "1.2.0",
1489
+ "model_name": "LayoutModel",
1490
+ "state": {
1491
+ "_model_module": "@jupyter-widgets/base",
1492
+ "_model_module_version": "1.2.0",
1493
+ "_model_name": "LayoutModel",
1494
+ "_view_count": null,
1495
+ "_view_module": "@jupyter-widgets/base",
1496
+ "_view_module_version": "1.2.0",
1497
+ "_view_name": "LayoutView",
1498
+ "align_content": null,
1499
+ "align_items": null,
1500
+ "align_self": null,
1501
+ "border": null,
1502
+ "bottom": null,
1503
+ "display": null,
1504
+ "flex": null,
1505
+ "flex_flow": null,
1506
+ "grid_area": null,
1507
+ "grid_auto_columns": null,
1508
+ "grid_auto_flow": null,
1509
+ "grid_auto_rows": null,
1510
+ "grid_column": null,
1511
+ "grid_gap": null,
1512
+ "grid_row": null,
1513
+ "grid_template_areas": null,
1514
+ "grid_template_columns": null,
1515
+ "grid_template_rows": null,
1516
+ "height": null,
1517
+ "justify_content": null,
1518
+ "justify_items": null,
1519
+ "left": null,
1520
+ "margin": null,
1521
+ "max_height": null,
1522
+ "max_width": null,
1523
+ "min_height": null,
1524
+ "min_width": null,
1525
+ "object_fit": null,
1526
+ "object_position": null,
1527
+ "order": null,
1528
+ "overflow": null,
1529
+ "overflow_x": null,
1530
+ "overflow_y": null,
1531
+ "padding": null,
1532
+ "right": null,
1533
+ "top": null,
1534
+ "visibility": null,
1535
+ "width": null
1536
+ }
1537
+ },
1538
+ "950f6a92f0794bf0b3ddda8490823a0e": {
1539
+ "model_module": "@jupyter-widgets/base",
1540
+ "model_module_version": "1.2.0",
1541
+ "model_name": "LayoutModel",
1542
+ "state": {
1543
+ "_model_module": "@jupyter-widgets/base",
1544
+ "_model_module_version": "1.2.0",
1545
+ "_model_name": "LayoutModel",
1546
+ "_view_count": null,
1547
+ "_view_module": "@jupyter-widgets/base",
1548
+ "_view_module_version": "1.2.0",
1549
+ "_view_name": "LayoutView",
1550
+ "align_content": null,
1551
+ "align_items": null,
1552
+ "align_self": null,
1553
+ "border": null,
1554
+ "bottom": null,
1555
+ "display": null,
1556
+ "flex": null,
1557
+ "flex_flow": null,
1558
+ "grid_area": null,
1559
+ "grid_auto_columns": null,
1560
+ "grid_auto_flow": null,
1561
+ "grid_auto_rows": null,
1562
+ "grid_column": null,
1563
+ "grid_gap": null,
1564
+ "grid_row": null,
1565
+ "grid_template_areas": null,
1566
+ "grid_template_columns": null,
1567
+ "grid_template_rows": null,
1568
+ "height": null,
1569
+ "justify_content": null,
1570
+ "justify_items": null,
1571
+ "left": null,
1572
+ "margin": null,
1573
+ "max_height": null,
1574
+ "max_width": null,
1575
+ "min_height": null,
1576
+ "min_width": null,
1577
+ "object_fit": null,
1578
+ "object_position": null,
1579
+ "order": null,
1580
+ "overflow": null,
1581
+ "overflow_x": null,
1582
+ "overflow_y": null,
1583
+ "padding": null,
1584
+ "right": null,
1585
+ "top": null,
1586
+ "visibility": null,
1587
+ "width": null
1588
+ }
1589
+ },
1590
+ "95c96b63a8cc42f492f5659f4be470f7": {
1591
+ "model_module": "@jupyter-widgets/controls",
1592
+ "model_module_version": "1.5.0",
1593
+ "model_name": "HBoxModel",
1594
+ "state": {
1595
+ "_dom_classes": [],
1596
+ "_model_module": "@jupyter-widgets/controls",
1597
+ "_model_module_version": "1.5.0",
1598
+ "_model_name": "HBoxModel",
1599
+ "_view_count": null,
1600
+ "_view_module": "@jupyter-widgets/controls",
1601
+ "_view_module_version": "1.5.0",
1602
+ "_view_name": "HBoxView",
1603
+ "box_style": "",
1604
+ "children": [
1605
+ "IPY_MODEL_73b0fce1566a4f57b34075d6c54f184c",
1606
+ "IPY_MODEL_62451cada7ff41d7aa04d6d8403d9e01",
1607
+ "IPY_MODEL_0669b57af73340fdac2e223967b9f61d"
1608
+ ],
1609
+ "layout": "IPY_MODEL_e4854d995ce3405ca13d467ce344de11"
1610
+ }
1611
+ },
1612
+ "9b92cf776d2b40218fc4651832e8ff3a": {
1613
+ "model_module": "@jupyter-widgets/controls",
1614
+ "model_module_version": "1.5.0",
1615
+ "model_name": "FloatProgressModel",
1616
+ "state": {
1617
+ "_dom_classes": [],
1618
+ "_model_module": "@jupyter-widgets/controls",
1619
+ "_model_module_version": "1.5.0",
1620
+ "_model_name": "FloatProgressModel",
1621
+ "_view_count": null,
1622
+ "_view_module": "@jupyter-widgets/controls",
1623
+ "_view_module_version": "1.5.0",
1624
+ "_view_name": "ProgressView",
1625
+ "bar_style": "success",
1626
+ "description": "",
1627
+ "description_tooltip": null,
1628
+ "layout": "IPY_MODEL_1e5e496ccc2b43399536d76b4bf8d58b",
1629
+ "max": 1,
1630
+ "min": 0,
1631
+ "orientation": "horizontal",
1632
+ "style": "IPY_MODEL_7b8294fcc116455b9aa64ab409c41a66",
1633
+ "value": 1
1634
+ }
1635
+ },
1636
+ "a95fcb9980004932be21f3895282bf79": {
1637
+ "model_module": "@jupyter-widgets/controls",
1638
+ "model_module_version": "1.5.0",
1639
+ "model_name": "DescriptionStyleModel",
1640
+ "state": {
1641
+ "_model_module": "@jupyter-widgets/controls",
1642
+ "_model_module_version": "1.5.0",
1643
+ "_model_name": "DescriptionStyleModel",
1644
+ "_view_count": null,
1645
+ "_view_module": "@jupyter-widgets/base",
1646
+ "_view_module_version": "1.2.0",
1647
+ "_view_name": "StyleView",
1648
+ "description_width": ""
1649
+ }
1650
+ },
1651
+ "afccbaa8d81f4a10813b24c090948313": {
1652
+ "model_module": "@jupyter-widgets/controls",
1653
+ "model_module_version": "1.5.0",
1654
+ "model_name": "HTMLModel",
1655
+ "state": {
1656
+ "_dom_classes": [],
1657
+ "_model_module": "@jupyter-widgets/controls",
1658
+ "_model_module_version": "1.5.0",
1659
+ "_model_name": "HTMLModel",
1660
+ "_view_count": null,
1661
+ "_view_module": "@jupyter-widgets/controls",
1662
+ "_view_module_version": "1.5.0",
1663
+ "_view_name": "HTMLView",
1664
+ "description": "",
1665
+ "description_tooltip": null,
1666
+ "layout": "IPY_MODEL_13301019edec4b5490f0dcc89ed98cea",
1667
+ "placeholder": "​",
1668
+ "style": "IPY_MODEL_6befbd03e3af43588725ba6ffa48c44c",
1669
+ "value": "100%"
1670
+ }
1671
+ },
1672
+ "b17817b9e5694a80903bcae0d7a79450": {
1673
+ "model_module": "@jupyter-widgets/controls",
1674
+ "model_module_version": "1.5.0",
1675
+ "model_name": "DescriptionStyleModel",
1676
+ "state": {
1677
+ "_model_module": "@jupyter-widgets/controls",
1678
+ "_model_module_version": "1.5.0",
1679
+ "_model_name": "DescriptionStyleModel",
1680
+ "_view_count": null,
1681
+ "_view_module": "@jupyter-widgets/base",
1682
+ "_view_module_version": "1.2.0",
1683
+ "_view_name": "StyleView",
1684
+ "description_width": ""
1685
+ }
1686
+ },
1687
+ "b3fe29d5e91a4cfea92c1890ae58c6c2": {
1688
+ "model_module": "@jupyter-widgets/base",
1689
+ "model_module_version": "1.2.0",
1690
+ "model_name": "LayoutModel",
1691
+ "state": {
1692
+ "_model_module": "@jupyter-widgets/base",
1693
+ "_model_module_version": "1.2.0",
1694
+ "_model_name": "LayoutModel",
1695
+ "_view_count": null,
1696
+ "_view_module": "@jupyter-widgets/base",
1697
+ "_view_module_version": "1.2.0",
1698
+ "_view_name": "LayoutView",
1699
+ "align_content": null,
1700
+ "align_items": null,
1701
+ "align_self": null,
1702
+ "border": null,
1703
+ "bottom": null,
1704
+ "display": null,
1705
+ "flex": null,
1706
+ "flex_flow": null,
1707
+ "grid_area": null,
1708
+ "grid_auto_columns": null,
1709
+ "grid_auto_flow": null,
1710
+ "grid_auto_rows": null,
1711
+ "grid_column": null,
1712
+ "grid_gap": null,
1713
+ "grid_row": null,
1714
+ "grid_template_areas": null,
1715
+ "grid_template_columns": null,
1716
+ "grid_template_rows": null,
1717
+ "height": null,
1718
+ "justify_content": null,
1719
+ "justify_items": null,
1720
+ "left": null,
1721
+ "margin": null,
1722
+ "max_height": null,
1723
+ "max_width": null,
1724
+ "min_height": null,
1725
+ "min_width": null,
1726
+ "object_fit": null,
1727
+ "object_position": null,
1728
+ "order": null,
1729
+ "overflow": null,
1730
+ "overflow_x": null,
1731
+ "overflow_y": null,
1732
+ "padding": null,
1733
+ "right": null,
1734
+ "top": null,
1735
+ "visibility": null,
1736
+ "width": null
1737
+ }
1738
+ },
1739
+ "b8218c9d03b14a6aadebbe3a821e79d7": {
1740
+ "model_module": "@jupyter-widgets/controls",
1741
+ "model_module_version": "1.5.0",
1742
+ "model_name": "HTMLModel",
1743
+ "state": {
1744
+ "_dom_classes": [],
1745
+ "_model_module": "@jupyter-widgets/controls",
1746
+ "_model_module_version": "1.5.0",
1747
+ "_model_name": "HTMLModel",
1748
+ "_view_count": null,
1749
+ "_view_module": "@jupyter-widgets/controls",
1750
+ "_view_module_version": "1.5.0",
1751
+ "_view_name": "HTMLView",
1752
+ "description": "",
1753
+ "description_tooltip": null,
1754
+ "layout": "IPY_MODEL_18d1384e679241948d77fec27d9534a9",
1755
+ "placeholder": "​",
1756
+ "style": "IPY_MODEL_d93f4e6bbd664280952e4ad0e2989903",
1757
+ "value": " 4/4 [00:00&lt;00:00, 6.16ba/s]"
1758
+ }
1759
+ },
1760
+ "bb90fb405291483cac1c63b3df11d7ae": {
1761
+ "model_module": "@jupyter-widgets/controls",
1762
+ "model_module_version": "1.5.0",
1763
+ "model_name": "HBoxModel",
1764
+ "state": {
1765
+ "_dom_classes": [],
1766
+ "_model_module": "@jupyter-widgets/controls",
1767
+ "_model_module_version": "1.5.0",
1768
+ "_model_name": "HBoxModel",
1769
+ "_view_count": null,
1770
+ "_view_module": "@jupyter-widgets/controls",
1771
+ "_view_module_version": "1.5.0",
1772
+ "_view_name": "HBoxView",
1773
+ "box_style": "",
1774
+ "children": [
1775
+ "IPY_MODEL_0fd0a0843ea7415fa74f5ce22936f4d7",
1776
+ "IPY_MODEL_1ff738356efa415eb67a780133c2d9be",
1777
+ "IPY_MODEL_4f8c235bb2a04a0bb40abefb5834f117"
1778
+ ],
1779
+ "layout": "IPY_MODEL_1a7598433c524488ac83788bec6e244c"
1780
+ }
1781
+ },
1782
+ "be56c0279fb141c893476113cb7d6b72": {
1783
+ "model_module": "@jupyter-widgets/controls",
1784
+ "model_module_version": "1.5.0",
1785
+ "model_name": "HTMLModel",
1786
+ "state": {
1787
+ "_dom_classes": [],
1788
+ "_model_module": "@jupyter-widgets/controls",
1789
+ "_model_module_version": "1.5.0",
1790
+ "_model_name": "HTMLModel",
1791
+ "_view_count": null,
1792
+ "_view_module": "@jupyter-widgets/controls",
1793
+ "_view_module_version": "1.5.0",
1794
+ "_view_name": "HTMLView",
1795
+ "description": "",
1796
+ "description_tooltip": null,
1797
+ "layout": "IPY_MODEL_d3183764e64a45e0b8b532fb5a831798",
1798
+ "placeholder": "​",
1799
+ "style": "IPY_MODEL_8942a08d41a9429ebed73feedbb768df",
1800
+ "value": " 1/1 [00:00&lt;00:00, 21.73it/s]"
1801
+ }
1802
+ },
1803
+ "c18f1c44483e47298876d6fb6f4805d6": {
1804
+ "model_module": "@jupyter-widgets/base",
1805
+ "model_module_version": "1.2.0",
1806
+ "model_name": "LayoutModel",
1807
+ "state": {
1808
+ "_model_module": "@jupyter-widgets/base",
1809
+ "_model_module_version": "1.2.0",
1810
+ "_model_name": "LayoutModel",
1811
+ "_view_count": null,
1812
+ "_view_module": "@jupyter-widgets/base",
1813
+ "_view_module_version": "1.2.0",
1814
+ "_view_name": "LayoutView",
1815
+ "align_content": null,
1816
+ "align_items": null,
1817
+ "align_self": null,
1818
+ "border": null,
1819
+ "bottom": null,
1820
+ "display": null,
1821
+ "flex": null,
1822
+ "flex_flow": null,
1823
+ "grid_area": null,
1824
+ "grid_auto_columns": null,
1825
+ "grid_auto_flow": null,
1826
+ "grid_auto_rows": null,
1827
+ "grid_column": null,
1828
+ "grid_gap": null,
1829
+ "grid_row": null,
1830
+ "grid_template_areas": null,
1831
+ "grid_template_columns": null,
1832
+ "grid_template_rows": null,
1833
+ "height": null,
1834
+ "justify_content": null,
1835
+ "justify_items": null,
1836
+ "left": null,
1837
+ "margin": null,
1838
+ "max_height": null,
1839
+ "max_width": null,
1840
+ "min_height": null,
1841
+ "min_width": null,
1842
+ "object_fit": null,
1843
+ "object_position": null,
1844
+ "order": null,
1845
+ "overflow": null,
1846
+ "overflow_x": null,
1847
+ "overflow_y": null,
1848
+ "padding": null,
1849
+ "right": null,
1850
+ "top": null,
1851
+ "visibility": null,
1852
+ "width": null
1853
+ }
1854
+ },
1855
+ "c4fea76717774b2fb0f4c1bd55aab02b": {
1856
+ "model_module": "@jupyter-widgets/base",
1857
+ "model_module_version": "1.2.0",
1858
+ "model_name": "LayoutModel",
1859
+ "state": {
1860
+ "_model_module": "@jupyter-widgets/base",
1861
+ "_model_module_version": "1.2.0",
1862
+ "_model_name": "LayoutModel",
1863
+ "_view_count": null,
1864
+ "_view_module": "@jupyter-widgets/base",
1865
+ "_view_module_version": "1.2.0",
1866
+ "_view_name": "LayoutView",
1867
+ "align_content": null,
1868
+ "align_items": null,
1869
+ "align_self": null,
1870
+ "border": null,
1871
+ "bottom": null,
1872
+ "display": null,
1873
+ "flex": null,
1874
+ "flex_flow": null,
1875
+ "grid_area": null,
1876
+ "grid_auto_columns": null,
1877
+ "grid_auto_flow": null,
1878
+ "grid_auto_rows": null,
1879
+ "grid_column": null,
1880
+ "grid_gap": null,
1881
+ "grid_row": null,
1882
+ "grid_template_areas": null,
1883
+ "grid_template_columns": null,
1884
+ "grid_template_rows": null,
1885
+ "height": null,
1886
+ "justify_content": null,
1887
+ "justify_items": null,
1888
+ "left": null,
1889
+ "margin": null,
1890
+ "max_height": null,
1891
+ "max_width": null,
1892
+ "min_height": null,
1893
+ "min_width": null,
1894
+ "object_fit": null,
1895
+ "object_position": null,
1896
+ "order": null,
1897
+ "overflow": null,
1898
+ "overflow_x": null,
1899
+ "overflow_y": null,
1900
+ "padding": null,
1901
+ "right": null,
1902
+ "top": null,
1903
+ "visibility": null,
1904
+ "width": null
1905
+ }
1906
+ },
1907
+ "d3183764e64a45e0b8b532fb5a831798": {
1908
+ "model_module": "@jupyter-widgets/base",
1909
+ "model_module_version": "1.2.0",
1910
+ "model_name": "LayoutModel",
1911
+ "state": {
1912
+ "_model_module": "@jupyter-widgets/base",
1913
+ "_model_module_version": "1.2.0",
1914
+ "_model_name": "LayoutModel",
1915
+ "_view_count": null,
1916
+ "_view_module": "@jupyter-widgets/base",
1917
+ "_view_module_version": "1.2.0",
1918
+ "_view_name": "LayoutView",
1919
+ "align_content": null,
1920
+ "align_items": null,
1921
+ "align_self": null,
1922
+ "border": null,
1923
+ "bottom": null,
1924
+ "display": null,
1925
+ "flex": null,
1926
+ "flex_flow": null,
1927
+ "grid_area": null,
1928
+ "grid_auto_columns": null,
1929
+ "grid_auto_flow": null,
1930
+ "grid_auto_rows": null,
1931
+ "grid_column": null,
1932
+ "grid_gap": null,
1933
+ "grid_row": null,
1934
+ "grid_template_areas": null,
1935
+ "grid_template_columns": null,
1936
+ "grid_template_rows": null,
1937
+ "height": null,
1938
+ "justify_content": null,
1939
+ "justify_items": null,
1940
+ "left": null,
1941
+ "margin": null,
1942
+ "max_height": null,
1943
+ "max_width": null,
1944
+ "min_height": null,
1945
+ "min_width": null,
1946
+ "object_fit": null,
1947
+ "object_position": null,
1948
+ "order": null,
1949
+ "overflow": null,
1950
+ "overflow_x": null,
1951
+ "overflow_y": null,
1952
+ "padding": null,
1953
+ "right": null,
1954
+ "top": null,
1955
+ "visibility": null,
1956
+ "width": null
1957
+ }
1958
+ },
1959
+ "d6bbab0148c14c4f8913a9fb3dec0786": {
1960
+ "model_module": "@jupyter-widgets/controls",
1961
+ "model_module_version": "1.5.0",
1962
+ "model_name": "HTMLModel",
1963
+ "state": {
1964
+ "_dom_classes": [],
1965
+ "_model_module": "@jupyter-widgets/controls",
1966
+ "_model_module_version": "1.5.0",
1967
+ "_model_name": "HTMLModel",
1968
+ "_view_count": null,
1969
+ "_view_module": "@jupyter-widgets/controls",
1970
+ "_view_module_version": "1.5.0",
1971
+ "_view_name": "HTMLView",
1972
+ "description": "",
1973
+ "description_tooltip": null,
1974
+ "layout": "IPY_MODEL_5da15ce5ebaf446081a47ec75cac919a",
1975
+ "placeholder": "​",
1976
+ "style": "IPY_MODEL_6bdd0601dad04182893a9f39493aaba6",
1977
+ "value": "100%"
1978
+ }
1979
+ },
1980
+ "d92ada7f667847d099960d87b27be16e": {
1981
+ "model_module": "@jupyter-widgets/base",
1982
+ "model_module_version": "1.2.0",
1983
+ "model_name": "LayoutModel",
1984
+ "state": {
1985
+ "_model_module": "@jupyter-widgets/base",
1986
+ "_model_module_version": "1.2.0",
1987
+ "_model_name": "LayoutModel",
1988
+ "_view_count": null,
1989
+ "_view_module": "@jupyter-widgets/base",
1990
+ "_view_module_version": "1.2.0",
1991
+ "_view_name": "LayoutView",
1992
+ "align_content": null,
1993
+ "align_items": null,
1994
+ "align_self": null,
1995
+ "border": null,
1996
+ "bottom": null,
1997
+ "display": null,
1998
+ "flex": null,
1999
+ "flex_flow": null,
2000
+ "grid_area": null,
2001
+ "grid_auto_columns": null,
2002
+ "grid_auto_flow": null,
2003
+ "grid_auto_rows": null,
2004
+ "grid_column": null,
2005
+ "grid_gap": null,
2006
+ "grid_row": null,
2007
+ "grid_template_areas": null,
2008
+ "grid_template_columns": null,
2009
+ "grid_template_rows": null,
2010
+ "height": null,
2011
+ "justify_content": null,
2012
+ "justify_items": null,
2013
+ "left": null,
2014
+ "margin": null,
2015
+ "max_height": null,
2016
+ "max_width": null,
2017
+ "min_height": null,
2018
+ "min_width": null,
2019
+ "object_fit": null,
2020
+ "object_position": null,
2021
+ "order": null,
2022
+ "overflow": null,
2023
+ "overflow_x": null,
2024
+ "overflow_y": null,
2025
+ "padding": null,
2026
+ "right": null,
2027
+ "top": null,
2028
+ "visibility": null,
2029
+ "width": null
2030
+ }
2031
+ },
2032
+ "d93f4e6bbd664280952e4ad0e2989903": {
2033
+ "model_module": "@jupyter-widgets/controls",
2034
+ "model_module_version": "1.5.0",
2035
+ "model_name": "DescriptionStyleModel",
2036
+ "state": {
2037
+ "_model_module": "@jupyter-widgets/controls",
2038
+ "_model_module_version": "1.5.0",
2039
+ "_model_name": "DescriptionStyleModel",
2040
+ "_view_count": null,
2041
+ "_view_module": "@jupyter-widgets/base",
2042
+ "_view_module_version": "1.2.0",
2043
+ "_view_name": "StyleView",
2044
+ "description_width": ""
2045
+ }
2046
+ },
2047
+ "e4100521ee6b4275878049f3b4d7ea95": {
2048
+ "model_module": "@jupyter-widgets/controls",
2049
+ "model_module_version": "1.5.0",
2050
+ "model_name": "DescriptionStyleModel",
2051
+ "state": {
2052
+ "_model_module": "@jupyter-widgets/controls",
2053
+ "_model_module_version": "1.5.0",
2054
+ "_model_name": "DescriptionStyleModel",
2055
+ "_view_count": null,
2056
+ "_view_module": "@jupyter-widgets/base",
2057
+ "_view_module_version": "1.2.0",
2058
+ "_view_name": "StyleView",
2059
+ "description_width": ""
2060
+ }
2061
+ },
2062
+ "e4854d995ce3405ca13d467ce344de11": {
2063
+ "model_module": "@jupyter-widgets/base",
2064
+ "model_module_version": "1.2.0",
2065
+ "model_name": "LayoutModel",
2066
+ "state": {
2067
+ "_model_module": "@jupyter-widgets/base",
2068
+ "_model_module_version": "1.2.0",
2069
+ "_model_name": "LayoutModel",
2070
+ "_view_count": null,
2071
+ "_view_module": "@jupyter-widgets/base",
2072
+ "_view_module_version": "1.2.0",
2073
+ "_view_name": "LayoutView",
2074
+ "align_content": null,
2075
+ "align_items": null,
2076
+ "align_self": null,
2077
+ "border": null,
2078
+ "bottom": null,
2079
+ "display": null,
2080
+ "flex": null,
2081
+ "flex_flow": null,
2082
+ "grid_area": null,
2083
+ "grid_auto_columns": null,
2084
+ "grid_auto_flow": null,
2085
+ "grid_auto_rows": null,
2086
+ "grid_column": null,
2087
+ "grid_gap": null,
2088
+ "grid_row": null,
2089
+ "grid_template_areas": null,
2090
+ "grid_template_columns": null,
2091
+ "grid_template_rows": null,
2092
+ "height": null,
2093
+ "justify_content": null,
2094
+ "justify_items": null,
2095
+ "left": null,
2096
+ "margin": null,
2097
+ "max_height": null,
2098
+ "max_width": null,
2099
+ "min_height": null,
2100
+ "min_width": null,
2101
+ "object_fit": null,
2102
+ "object_position": null,
2103
+ "order": null,
2104
+ "overflow": null,
2105
+ "overflow_x": null,
2106
+ "overflow_y": null,
2107
+ "padding": null,
2108
+ "right": null,
2109
+ "top": null,
2110
+ "visibility": null,
2111
+ "width": null
2112
+ }
2113
+ },
2114
+ "e848b4cdb9a0433d9f1f503531a79e85": {
2115
+ "model_module": "@jupyter-widgets/base",
2116
+ "model_module_version": "1.2.0",
2117
+ "model_name": "LayoutModel",
2118
+ "state": {
2119
+ "_model_module": "@jupyter-widgets/base",
2120
+ "_model_module_version": "1.2.0",
2121
+ "_model_name": "LayoutModel",
2122
+ "_view_count": null,
2123
+ "_view_module": "@jupyter-widgets/base",
2124
+ "_view_module_version": "1.2.0",
2125
+ "_view_name": "LayoutView",
2126
+ "align_content": null,
2127
+ "align_items": null,
2128
+ "align_self": null,
2129
+ "border": null,
2130
+ "bottom": null,
2131
+ "display": null,
2132
+ "flex": null,
2133
+ "flex_flow": null,
2134
+ "grid_area": null,
2135
+ "grid_auto_columns": null,
2136
+ "grid_auto_flow": null,
2137
+ "grid_auto_rows": null,
2138
+ "grid_column": null,
2139
+ "grid_gap": null,
2140
+ "grid_row": null,
2141
+ "grid_template_areas": null,
2142
+ "grid_template_columns": null,
2143
+ "grid_template_rows": null,
2144
+ "height": null,
2145
+ "justify_content": null,
2146
+ "justify_items": null,
2147
+ "left": null,
2148
+ "margin": null,
2149
+ "max_height": null,
2150
+ "max_width": null,
2151
+ "min_height": null,
2152
+ "min_width": null,
2153
+ "object_fit": null,
2154
+ "object_position": null,
2155
+ "order": null,
2156
+ "overflow": null,
2157
+ "overflow_x": null,
2158
+ "overflow_y": null,
2159
+ "padding": null,
2160
+ "right": null,
2161
+ "top": null,
2162
+ "visibility": null,
2163
+ "width": null
2164
+ }
2165
+ },
2166
+ "e8c0e9ca8136406291cb14cd7249ed0c": {
2167
+ "model_module": "@jupyter-widgets/base",
2168
+ "model_module_version": "1.2.0",
2169
+ "model_name": "LayoutModel",
2170
+ "state": {
2171
+ "_model_module": "@jupyter-widgets/base",
2172
+ "_model_module_version": "1.2.0",
2173
+ "_model_name": "LayoutModel",
2174
+ "_view_count": null,
2175
+ "_view_module": "@jupyter-widgets/base",
2176
+ "_view_module_version": "1.2.0",
2177
+ "_view_name": "LayoutView",
2178
+ "align_content": null,
2179
+ "align_items": null,
2180
+ "align_self": null,
2181
+ "border": null,
2182
+ "bottom": null,
2183
+ "display": null,
2184
+ "flex": null,
2185
+ "flex_flow": null,
2186
+ "grid_area": null,
2187
+ "grid_auto_columns": null,
2188
+ "grid_auto_flow": null,
2189
+ "grid_auto_rows": null,
2190
+ "grid_column": null,
2191
+ "grid_gap": null,
2192
+ "grid_row": null,
2193
+ "grid_template_areas": null,
2194
+ "grid_template_columns": null,
2195
+ "grid_template_rows": null,
2196
+ "height": null,
2197
+ "justify_content": null,
2198
+ "justify_items": null,
2199
+ "left": null,
2200
+ "margin": null,
2201
+ "max_height": null,
2202
+ "max_width": null,
2203
+ "min_height": null,
2204
+ "min_width": null,
2205
+ "object_fit": null,
2206
+ "object_position": null,
2207
+ "order": null,
2208
+ "overflow": null,
2209
+ "overflow_x": null,
2210
+ "overflow_y": null,
2211
+ "padding": null,
2212
+ "right": null,
2213
+ "top": null,
2214
+ "visibility": null,
2215
+ "width": null
2216
+ }
2217
+ },
2218
+ "e918575c17454484bb7ade0748dabe61": {
2219
+ "model_module": "@jupyter-widgets/base",
2220
+ "model_module_version": "1.2.0",
2221
+ "model_name": "LayoutModel",
2222
+ "state": {
2223
+ "_model_module": "@jupyter-widgets/base",
2224
+ "_model_module_version": "1.2.0",
2225
+ "_model_name": "LayoutModel",
2226
+ "_view_count": null,
2227
+ "_view_module": "@jupyter-widgets/base",
2228
+ "_view_module_version": "1.2.0",
2229
+ "_view_name": "LayoutView",
2230
+ "align_content": null,
2231
+ "align_items": null,
2232
+ "align_self": null,
2233
+ "border": null,
2234
+ "bottom": null,
2235
+ "display": null,
2236
+ "flex": null,
2237
+ "flex_flow": null,
2238
+ "grid_area": null,
2239
+ "grid_auto_columns": null,
2240
+ "grid_auto_flow": null,
2241
+ "grid_auto_rows": null,
2242
+ "grid_column": null,
2243
+ "grid_gap": null,
2244
+ "grid_row": null,
2245
+ "grid_template_areas": null,
2246
+ "grid_template_columns": null,
2247
+ "grid_template_rows": null,
2248
+ "height": null,
2249
+ "justify_content": null,
2250
+ "justify_items": null,
2251
+ "left": null,
2252
+ "margin": null,
2253
+ "max_height": null,
2254
+ "max_width": null,
2255
+ "min_height": null,
2256
+ "min_width": null,
2257
+ "object_fit": null,
2258
+ "object_position": null,
2259
+ "order": null,
2260
+ "overflow": null,
2261
+ "overflow_x": null,
2262
+ "overflow_y": null,
2263
+ "padding": null,
2264
+ "right": null,
2265
+ "top": null,
2266
+ "visibility": null,
2267
+ "width": null
2268
+ }
2269
+ },
2270
+ "ea85822683fc4e4eac2c77b2c7c08f41": {
2271
+ "model_module": "@jupyter-widgets/controls",
2272
+ "model_module_version": "1.5.0",
2273
+ "model_name": "DescriptionStyleModel",
2274
+ "state": {
2275
+ "_model_module": "@jupyter-widgets/controls",
2276
+ "_model_module_version": "1.5.0",
2277
+ "_model_name": "DescriptionStyleModel",
2278
+ "_view_count": null,
2279
+ "_view_module": "@jupyter-widgets/base",
2280
+ "_view_module_version": "1.2.0",
2281
+ "_view_name": "StyleView",
2282
+ "description_width": ""
2283
+ }
2284
+ },
2285
+ "ee793105258d46a7992d09d93351c28d": {
2286
+ "model_module": "@jupyter-widgets/base",
2287
+ "model_module_version": "1.2.0",
2288
+ "model_name": "LayoutModel",
2289
+ "state": {
2290
+ "_model_module": "@jupyter-widgets/base",
2291
+ "_model_module_version": "1.2.0",
2292
+ "_model_name": "LayoutModel",
2293
+ "_view_count": null,
2294
+ "_view_module": "@jupyter-widgets/base",
2295
+ "_view_module_version": "1.2.0",
2296
+ "_view_name": "LayoutView",
2297
+ "align_content": null,
2298
+ "align_items": null,
2299
+ "align_self": null,
2300
+ "border": null,
2301
+ "bottom": null,
2302
+ "display": null,
2303
+ "flex": null,
2304
+ "flex_flow": null,
2305
+ "grid_area": null,
2306
+ "grid_auto_columns": null,
2307
+ "grid_auto_flow": null,
2308
+ "grid_auto_rows": null,
2309
+ "grid_column": null,
2310
+ "grid_gap": null,
2311
+ "grid_row": null,
2312
+ "grid_template_areas": null,
2313
+ "grid_template_columns": null,
2314
+ "grid_template_rows": null,
2315
+ "height": null,
2316
+ "justify_content": null,
2317
+ "justify_items": null,
2318
+ "left": null,
2319
+ "margin": null,
2320
+ "max_height": null,
2321
+ "max_width": null,
2322
+ "min_height": null,
2323
+ "min_width": null,
2324
+ "object_fit": null,
2325
+ "object_position": null,
2326
+ "order": null,
2327
+ "overflow": null,
2328
+ "overflow_x": null,
2329
+ "overflow_y": null,
2330
+ "padding": null,
2331
+ "right": null,
2332
+ "top": null,
2333
+ "visibility": null,
2334
+ "width": null
2335
+ }
2336
+ },
2337
+ "f74afd3db88f4f0990c013b2b7737d11": {
2338
+ "model_module": "@jupyter-widgets/base",
2339
+ "model_module_version": "1.2.0",
2340
+ "model_name": "LayoutModel",
2341
+ "state": {
2342
+ "_model_module": "@jupyter-widgets/base",
2343
+ "_model_module_version": "1.2.0",
2344
+ "_model_name": "LayoutModel",
2345
+ "_view_count": null,
2346
+ "_view_module": "@jupyter-widgets/base",
2347
+ "_view_module_version": "1.2.0",
2348
+ "_view_name": "LayoutView",
2349
+ "align_content": null,
2350
+ "align_items": null,
2351
+ "align_self": null,
2352
+ "border": null,
2353
+ "bottom": null,
2354
+ "display": null,
2355
+ "flex": null,
2356
+ "flex_flow": null,
2357
+ "grid_area": null,
2358
+ "grid_auto_columns": null,
2359
+ "grid_auto_flow": null,
2360
+ "grid_auto_rows": null,
2361
+ "grid_column": null,
2362
+ "grid_gap": null,
2363
+ "grid_row": null,
2364
+ "grid_template_areas": null,
2365
+ "grid_template_columns": null,
2366
+ "grid_template_rows": null,
2367
+ "height": null,
2368
+ "justify_content": null,
2369
+ "justify_items": null,
2370
+ "left": null,
2371
+ "margin": null,
2372
+ "max_height": null,
2373
+ "max_width": null,
2374
+ "min_height": null,
2375
+ "min_width": null,
2376
+ "object_fit": null,
2377
+ "object_position": null,
2378
+ "order": null,
2379
+ "overflow": null,
2380
+ "overflow_x": null,
2381
+ "overflow_y": null,
2382
+ "padding": null,
2383
+ "right": null,
2384
+ "top": null,
2385
+ "visibility": null,
2386
+ "width": null
2387
+ }
2388
+ },
2389
+ "ff801a5352814910b0036da71c7f512c": {
2390
+ "model_module": "@jupyter-widgets/controls",
2391
+ "model_module_version": "1.5.0",
2392
+ "model_name": "HTMLModel",
2393
+ "state": {
2394
+ "_dom_classes": [],
2395
+ "_model_module": "@jupyter-widgets/controls",
2396
+ "_model_module_version": "1.5.0",
2397
+ "_model_name": "HTMLModel",
2398
+ "_view_count": null,
2399
+ "_view_module": "@jupyter-widgets/controls",
2400
+ "_view_module_version": "1.5.0",
2401
+ "_view_name": "HTMLView",
2402
+ "description": "",
2403
+ "description_tooltip": null,
2404
+ "layout": "IPY_MODEL_8eeb1b2975e441a8808eb0f11457bfad",
2405
+ "placeholder": "​",
2406
+ "style": "IPY_MODEL_ea85822683fc4e4eac2c77b2c7c08f41",
2407
+ "value": "100%"
2408
+ }
2409
+ }
2410
+ }
2411
+ }
2412
+ },
2413
+ "nbformat": 4,
2414
+ "nbformat_minor": 0
2415
+ }
README.md CHANGED
@@ -11,4 +11,78 @@ license: mit
11
  short_description: Grammar Correction for NLP course
12
  ---
13
 
14
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  short_description: Grammar Correction for NLP course
12
  ---
13
 
14
+ ---
15
+
16
+ **NLP Project**
17
+
18
+ This repository contains a Grammar Correction tool developed as part of the NLP project by **Software Group 2**. The tool leverages NLP techniques to detect and correct grammatical mistakes in user-provided text. It is designed to be user-friendly and provides two options for running the application: a Streamlit-based interactive app or a traditional web-based app.
19
+
20
+ ---
21
+
22
+ ## **Team Members**
23
+
24
+ - **AMANUEL YIHUNE HIBSTE** - UGR/8408/13
25
+ - **ARYAM WUBSHET BERHANU** - UGR/6357/13
26
+ - **BASLIEL AMSALU GELETU** - UGR/8569/13
27
+ - **BEREKET LEGESSE TADESSE** - UGR/7987/13
28
+ - **BETSELOT KIDANE BONSA** - UGR/8473/13
29
+
30
+ ---
31
+
32
+ ## **How to Run Locally**
33
+
34
+ ### **Step 1: Clone the Repository**
35
+
36
+ ```bash
37
+ git clone
38
+ cd repo
39
+ ```
40
+
41
+ ### **Step 2: Create a Virtual Environment**
42
+
43
+ Create a virtual environment to manage dependencies:
44
+
45
+ ```bash
46
+ python -m venv env
47
+ .\env\Scripts\activate
48
+ ```
49
+
50
+ ### **Step 3: Install Requirements**
51
+
52
+ Install all necessary dependencies:
53
+
54
+ ```bash
55
+ pip install -r requirements.txt
56
+ ```
57
+
58
+ ### **Step 4: Train the Model**
59
+
60
+ Run the training script to prepare the model:
61
+
62
+ ```bash
63
+ python model.py
64
+ ```
65
+
66
+ ### **Step 5: Run the App**
67
+
68
+ #### **Option 1: Run as a Traditional Web App**
69
+
70
+ To run the app locally and access it via an HTML page:
71
+
72
+ ```bash
73
+ python app.py
74
+ ```
75
+
76
+ #### **Option 2: Run as a Streamlit App**
77
+
78
+ For an interactive Streamlit-based application:
79
+
80
+ ```bash
81
+ streamlit run streamlit_app.py
82
+ ```
83
+
84
+ ---
85
+
86
+ ## **Features**
87
+
88
+ - Grammar error detection and correction
app.py ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import numpy as np
2
+ from flask import Flask, request, jsonify, render_template
3
+ import pickle
4
+
5
+ from happytransformer import TTSettings
6
+
7
+ app = Flask(__name__)
8
+
9
+ @app.route('/')
10
+ def home():
11
+ return render_template('index.html')
12
+
13
+ @app.route('/predict',methods=['POST'])
14
+ def predict():
15
+
16
+ int_features = str(request.form['Input_text'])
17
+ beam_settings = TTSettings(num_beams=5, min_length=1, max_length=20)
18
+
19
+ model = pickle.load(open('model.pkl', 'rb'))
20
+ output = model.generate_text(int_features, args=beam_settings)
21
+
22
+ return render_template('index.html', prediction_text='{}'.format(output.text))
23
+
24
+ if __name__ == "__main__":
25
+ app.run(host='0.0.0.0', debug=True)
dataset_preprocess.py ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import csv
3
+ from datasets import load_dataset
4
+
5
+ REPLACEMENTS = [
6
+ (" .", "."),
7
+ (" ,", ","),
8
+ (" '", "'"),
9
+ (" ?", "?"),
10
+ (" !", "!"),
11
+ (" :", ":"),
12
+ (" ;", ";"),
13
+ (" n't", "n't"),
14
+ ("2 0 0 6", "2006"),
15
+ ("5 5", "55"),
16
+ ("4 0 0", "400"),
17
+ ("1 7-5 0", "1750"),
18
+ ("2 0 %", "20%"),
19
+ ("5 0", "50"),
20
+ ("1 2", "12"),
21
+ ("1 0", "10"),
22
+ ('" ballast water', '"ballast water')
23
+ ]
24
+
25
+ def remove_excess_spaces(text):
26
+ for old, new in REPLACEMENTS:
27
+ text = text.replace(old, new)
28
+ return text
29
+
30
+ def generate_csv(csv_path, dataset):
31
+ os.makedirs(os.path.dirname(csv_path), exist_ok=True)
32
+ with open(csv_path, 'w', newline='', encoding='utf-8') as csvfile:
33
+ writer = csv.writer(csvfile)
34
+ writer.writerow(["input", "target"])
35
+ for case in dataset:
36
+ input_text = "grammar: " + case["sentence"]
37
+ input_text = remove_excess_spaces(input_text)
38
+ for correction in case["corrections"]:
39
+ correction = remove_excess_spaces(correction)
40
+ if input_text and correction:
41
+ writer.writerow([input_text, correction])
42
+
43
+ train_dataset = load_dataset("jfleg", split="validation[:]")
44
+ eval_dataset = load_dataset("jfleg", split="test[:]")
45
+
46
+ generate_csv("Dataset/JFLEG/train.csv", train_dataset)
47
+ generate_csv("Dataset/JFLEG/eval.csv", eval_dataset)
48
+
49
+ c4_dataset = load_dataset("liweili/c4_200m", split="train", streaming=True)
50
+
51
+ def c4_generate_csv(csv_path, iterator, num_examples):
52
+ os.makedirs(os.path.dirname(csv_path), exist_ok=True)
53
+ with open(csv_path, 'w', newline='', encoding='utf-8') as csvfile:
54
+ writer = csv.writer(csvfile)
55
+ writer.writerow(["input", "target"])
56
+ for _ in range(num_examples):
57
+ try:
58
+ data = next(iterator)
59
+ input_text = "grammar: " + data["input"]
60
+ input_text = remove_excess_spaces(input_text)
61
+ correction = remove_excess_spaces(data["output"])
62
+ if input_text and correction:
63
+ writer.writerow([input_text, correction])
64
+ except StopIteration:
65
+ break
66
+
67
+ c4_iterator = iter(c4_dataset)
68
+ c4_generate_csv("Dataset/C4_200M/c4data.csv", c4_iterator, num_examples=3500)
model.py ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pickle
2
+ from happytransformer import HappyTextToText, TTTrainArgs
3
+
4
+ happy_tt = HappyTextToText("T5", "t5-base")
5
+
6
+ train_args = TTTrainArgs(
7
+ batch_size=8,
8
+ num_train_epochs=5,
9
+ max_input_length=512,
10
+ max_output_length=150
11
+ )
12
+ happy_tt.train("Dataset/train.csv", args=train_args)
13
+
14
+ eval_args = TTTrainArgs(
15
+ batch_size=8,
16
+ max_input_length=512,
17
+ max_output_length=150
18
+ )
19
+
20
+ happy_tt.eval("Dataset/eval.csv", args=eval_args)
21
+
22
+ pickle.dump(happy_tt, open('model.pkl','wb'))
requirements.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ Flask==3.1.0
2
+ happytransformer==3.0.0
3
+ numpy== 2.2.0
4
+ st-annotated-text
5
+ bokeh
6
+ streamlit-bokeh-events
7
+ matplotlib
static/style.css ADDED
@@ -0,0 +1,120 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ @import url("https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500&display=swap");
2
+
3
+ body {
4
+ margin: 0;
5
+ padding: 0;
6
+ font-family: "Roboto", sans-serif;
7
+ background: #f9fafb;
8
+ display: flex;
9
+ justify-content: center;
10
+ align-items: center;
11
+ min-height: 100vh;
12
+ color: #2d3748;
13
+ }
14
+
15
+ .container {
16
+ width: 90%;
17
+ max-width: 500px;
18
+ padding: 20px;
19
+ background: #ffffff;
20
+ border-radius: 10px;
21
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
22
+ }
23
+
24
+ .header {
25
+ text-align: center;
26
+ margin-bottom: 20px;
27
+ }
28
+
29
+ .header h2 {
30
+ font-size: 1.6rem;
31
+ color: #1a202c;
32
+ margin: 0;
33
+ }
34
+
35
+ .header p {
36
+ font-size: 0.9rem;
37
+ color: #718096;
38
+ margin: 5px 0 0;
39
+ }
40
+
41
+ .form-wrapper {
42
+ text-align: center;
43
+ }
44
+
45
+ h1 {
46
+ font-size: 1.4rem;
47
+ font-weight: 500;
48
+ margin-bottom: 20px;
49
+ color: #1a202c;
50
+ }
51
+
52
+ textarea {
53
+ width: 90%;
54
+ height: 140px;
55
+ padding: 15px;
56
+ border: 1px solid #e2e8f0;
57
+ border-radius: 8px;
58
+ resize: none;
59
+ font-size: 16px;
60
+ color: #4a5568;
61
+ background: #f7fafc;
62
+ transition: border-color 0.3s, box-shadow 0.3s;
63
+ }
64
+
65
+ textarea:focus {
66
+ outline: none;
67
+ border-color: #4299e1;
68
+ box-shadow: 0 0 0 4px rgba(66, 153, 225, 0.3);
69
+ }
70
+
71
+ .btn {
72
+ display: inline-block;
73
+ width: 100%;
74
+ padding: 12px 20px;
75
+ background: #4299e1;
76
+ color: #ffffff;
77
+ font-size: 16px;
78
+ font-weight: 500;
79
+ text-transform: uppercase;
80
+ border: none;
81
+ border-radius: 8px;
82
+ cursor: pointer;
83
+ transition: background 0.3s ease;
84
+ margin-top: 15px;
85
+ }
86
+
87
+ .btn:hover {
88
+ background: #2b6cb0;
89
+ }
90
+
91
+ .prediction {
92
+ margin-top: 20px;
93
+ padding: 15px;
94
+ font-size: 16px;
95
+ background: #edf2f7;
96
+ border-radius: 8px;
97
+ border: 1px solid #e2e8f0;
98
+ color: #2d3748;
99
+ text-align: left;
100
+ }
101
+
102
+ .footer {
103
+ margin-top: 20px;
104
+ text-align: center;
105
+ }
106
+
107
+ .footer a {
108
+ text-decoration: none;
109
+ font-size: 14px;
110
+ color: #2b6cb0;
111
+ display: flex;
112
+ justify-content: center;
113
+ align-items: center;
114
+ gap: 8px;
115
+ }
116
+
117
+ .footer a img {
118
+ width: 20px;
119
+ height: 20px;
120
+ }
streamlit_app.py ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ from happytransformer import HappyTextToText, TTSettings
3
+
4
+ st.set_page_config(page_title="Grammar Correction Tool", layout="centered")
5
+
6
+ checkpoint = "team-writing-assistant/t5-base-c4jfleg"
7
+
8
+ @st.cache_resource
9
+ def get_happy_text(model_name):
10
+ return HappyTextToText("T5", model_name)
11
+
12
+ happy_tt = get_happy_text(checkpoint)
13
+ args = TTSettings(num_beams=5, min_length=1)
14
+
15
+ st.title(" NLP - Grammar Correction Tool")
16
+ st.subheader("Software - Group 2")
17
+ st.markdown("""
18
+ Simply enter your text below or use one of the example sentences to get started!
19
+ """)
20
+
21
+ col1, col2 = st.columns(2)
22
+
23
+ with col1:
24
+ if st.button("Example 1: Incorrect Grammar"):
25
+ st.session_state.input_text = "Speed of light is fastest then speed of sound"
26
+ with col2:
27
+ if st.button("Example 2: Common Mistake"):
28
+ st.session_state.input_text = "Who are the president?"
29
+
30
+ input_text = st.text_area("Enter your text here:", st.session_state.get("input_text", ""))
31
+
32
+ if st.button("Correct Grammar"):
33
+ if input_text.strip():
34
+ with st.spinner("Correcting grammar..."):
35
+ formatted_input = "grammar: " + input_text
36
+ result = happy_tt.generate_text(formatted_input, args=args)
37
+ st.markdown("### Corrected Text:")
38
+ st.write(result.text.strip())
39
+ else:
40
+ st.warning("Please enter text to correct.")
41
+
42
+ st.markdown("---")
templates/index.html ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>NLP - Grammar Correction</title>
7
+ <link
8
+ href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500&display=swap"
9
+ rel="stylesheet"
10
+ />
11
+ <link
12
+ rel="stylesheet"
13
+ href="{{ url_for('static', filename='style.css') }}"
14
+ />
15
+ </head>
16
+ <body>
17
+ <div class="container">
18
+ <div class="header">
19
+ <h2>NLP - Grammar Correction</h2>
20
+ <p>Software - Group 2</p>
21
+ </div>
22
+ <div class="form-wrapper">
23
+ <form action="{{ url_for('predict') }}" method="post">
24
+ <textarea
25
+ name="Input_text"
26
+ placeholder="Enter a sentence or paragraph to correct grammar..."
27
+ required="required"
28
+ ></textarea>
29
+ <button type="submit" class="btn">Correct</button>
30
+ </form>
31
+ {% if prediction_text %}
32
+ <div class="prediction">{{ prediction_text }}</div>
33
+ {% endif %}
34
+ </div>
35
+ <div class="footer"></div>
36
+ </div>
37
+ </body>
38
+ </html>