pszemraj
flan-t5-large-grammar-synthesis
A fine-tuned version of google/flan-t5-large for grammar correction on an expanded version of the JFLEG dataset. Demo on HF spaces. > There's a colab notebook that already has this basic version implemented (click on the Open in Colab button) After `pip install transformers` run the following code: For Batch Inference: see this discussion thread for details, but essentially the dataset consists of several sentences at a time, and so I'd recommend running inference in the same fashion: batches of 64-96 tokens ish (or, 2-3 sentences split with regex) - it is also helpful to first check whether or not a given sentence needs grammar correction before using the text2text model. You can do this with BERT-type models fine-tuned on CoLA like `textattack/roberta-base-CoLA` - I made a notebook demonstrating batch inference here 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 to see the difference :) This model has been converted to ONNX and can be loaded/used with huggingface's `optimum` library. If trading a slight decrease in grammatical correction quality for faster inference speed makes sense for your use case, check out the base and small checkpoints fine-tuned from the relevant t5 checkpoints. - 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? 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. > An example of this model running on CPU with beam search: Note: that I have some other logic that removes any periods at the end of the final sentence in this chatbot setting to avoid coming off as passive aggressive 3. Somewhat related to #2 above, fixing/correcting so-called tortured-phrases that are dead giveaways text was generated by a language model. Note that SOME of these are not fixed, especially as they venture into domain-specific terminology (i.e. irregular timberland instead of Random Forest). If you find this fine-tuned model useful in your work, please consider citing it :)