File size: 4,695 Bytes
4a407cf
d67fed9
4a407cf
0741140
 
 
 
288a33f
 
0741140
5845720
 
0741140
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4a407cf
 
 
0741140
4a407cf
0741140
4a407cf
5d88cea
aa41049
 
 
 
 
 
 
 
5d88cea
 
 
aa41049
5d88cea
992fabb
 
4a407cf
 
3caa392
4a407cf
2128bd5
 
6976d44
4a407cf
d67fed9
 
 
 
6976d44
 
 
 
 
1622e27
6976d44
 
 
 
4a407cf
 
 
3b12ec4
4a407cf
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
---
license: cc-by-nc-sa-4.0
tags:
- grammar
- spelling
- punctuation
- error-correction
datasets:
- jfleg
widget:
- text: "i can has cheezburger"
  example_title: "cheezburger"
- text: "so em if we have an now so with fito ringina know how to estimate the tren given the ereafte mylite trend we can also em an estimate is nod s
i again tort watfettering an we have estimated the trend an
called wot to be called sthat of exty right now we can and look at
wy this should not hare a trend i becan we just remove the trend an and we can we now estimate
tesees ona effect of them exty"
  example_title: "Transcribed Audio Example 2"
- text: "I would like a peice of pie."
  example_title: "miss-spelling"
- text: "My coworker said he used a financial planner to help choose his stocks so he wouldn't loose money."
  example_title: "incorrect word choice (context)"
- text: "good so hve on an tadley i'm not able to make it to the exla session on monday this week e which is why i am e recording pre recording
an this excelleision and so to day i want e to talk about two things and first of all em i wont em wene give a summary er about
ta ohow to remove trents in these nalitives from time series"
  example_title: "lowercased audio transcription output"
- text: "Frustrated, the chairs took me forever to set up."
  example_title: "dangling modifier"
- text: "There car broke down so their hitching a ride to they're class."
  example_title: "compound-1"
- text: "Which part of Zurich was you going to go hiking in when we were there for the first time together? ! ?"
  example_title: "chatbot on Zurich"

parameters:
  max_length: 128
  min_length: 4
  num_beams: 4
  repetition_penalty: 1.21
  length_penalty: 1
  early_stopping: True
---


# grammar-synthesis-large - beta

A fine-tuned version of [google/t5-v1_1-large](https://huggingface.co/google/t5-v1_1-large) for grammar correction on an expanded version of the [JFLEG](https://paperswithcode.com/dataset/jfleg) dataset.

usage in Python (after `pip install transformers`):

```
from transformers import pipeline

corrector = pipeline(
              'text2text-generation',
              'pszemraj/grammar-synthesis-large',
              )
raw_text = 'i can has cheezburger'
results = corrector(raw_text)
print(results)
```

give it a spin in Colab at [this notebook](https://colab.research.google.com/gist/pszemraj/9b810e38a4d3bc766834df921818d782/scratchpad.ipynb)

## Model description

The intent is to create a text2text language model that successfully completes "single-shot grammar correction" on a potentially grammatically incorrect text **that could have a lot of mistakes** with the important qualifier of **it does not semantically change text/information that IS grammatically correct.**

Compare some of the heavier-error examples on [other grammar correction models](https://huggingface.co/models?dataset=dataset:jfleg) to see the difference :)

## Limitations

- dataset: `cc-by-nc-sa-4.0`
- model: `apache-2.0`
- this is **still a work-in-progress** and while probably useful for "single-shot grammar correction" in a lot of cases, **give the outputs a glance for correctness ok?**

## Use Cases

Obviously, this section is quite general as there are many things one can use "general single-shot grammar correction" for. Some ideas or use cases:

1. Correcting highly error-prone LM outputs. Some examples would be audio transcription (ASR) (this is literally some of the examples) or something like handwriting OCR. 
    - To be investigated further, depending on what model/system is used it _might_ be worth it to apply this after OCR on typed characters. 
2. Correcting/infilling text generated by text generation models to be cohesive/remove obvious errors that break the conversation immersion. I use this on the outputs of [this OPT 2.7B chatbot-esque model of myself](https://huggingface.co/pszemraj/opt-peter-2.7B).
  > TODO add an example
3. Somewhat related to #2 above, fixing/correcting so-called [tortured-phrases](https://arxiv.org/abs/2107.06751) that are dead giveaways text was generated by a language model. 


## Training and evaluation data

More information needed 😉

## Training procedure

### Training hyperparameters

The following hyperparameters were used during training:
- learning_rate: 8e-05
- train_batch_size: 4
- eval_batch_size: 1
- seed: 42
- distributed_type: multi-GPU
- gradient_accumulation_steps: 32
- total_train_batch_size: 128
- optimizer: Adam with betas=(0.9,0.999) and epsilon=1e-08
- lr_scheduler_type: cosine
- lr_scheduler_warmup_ratio: 0.02
- num_epochs: 1

### Framework versions

- Transformers 4.20.1
- Pytorch 1.11.0+cu113
- Datasets 2.3.2
- Tokenizers 0.12.1