{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/neuspell-a-neural-spelling-correction-toolkit","title":"NeuSpell: A Neural Spelling Correction Toolkit","arxiv_id":"2010.11085","date":"2020-10-21","proceeding":"EMNLP 2020 11","authors":["Sai Muralidhar Jayanthi","Danish Pruthi","Graham Neubig"],"abstract":"We introduce NeuSpell, an open-source toolkit for spelling correction in English. Our toolkit comprises ten different models, and benchmarks them on naturally occurring misspellings from multiple sources. We find that many systems do not adequately leverage the context around the misspelt token. To remedy this, (i) we train neural models using spelling errors in context, synthetically constructed by reverse engineering isolated misspellings; and (ii) use contextual representations. By training on our synthetic examples, correction rates improve by 9% (absolute) compared to the case when models are trained on randomly sampled character perturbations. Using richer contextual representations boosts the correction rate by another 3%. Our toolkit enables practitioners to use our proposed and existing spelling correction systems, both via a unified command line, as well as a web interface. Among many potential applications, we demonstrate the utility of our spell-checkers in combating adversarial misspellings. The toolkit can be accessed at neuspell.github.io. Code and pretrained models are available at http://github.com/neuspell/neuspell.","url_abs":"https://arxiv.org/abs/2010.11085v1","url_pdf":"https://arxiv.org/pdf/2010.11085v1.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"neuspell-a-neural-spelling-correction-toolkit","repo_url":"https://github.com/neuspell/neuspell","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"spelling-correction","task_name":"Spelling Correction"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2010.11085","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2010.11085"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"deterministic:regex_extraction","url":"https://github.com/neuspell/neuspell","reach":null}],"summary":{"ran_draft_wrong":1,"ran_violates":1,"unverified":2},"by_repo_kind":{"official":{"samples":4,"ran":2,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"5cfe3525aa07ec01","entry":"get_module_or_attr","repo":"neuspell/neuspell","repo_kind":"official","path":"neuspell/seq_modeling/models.py","file_url":"https://github.com/neuspell/neuspell/blob/HEAD/neuspell/seq_modeling/models.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"5cfe3525aa07ec01"}},{"code_sha256_prefix":"c392b89ed879cdbe","entry":"is_module_available","repo":"neuspell/neuspell","repo_kind":"official","path":"neuspell/seq_modeling/models.py","file_url":"https://github.com/neuspell/neuspell/blob/HEAD/neuspell/seq_modeling/models.py","link_basis":"first_harvest_node","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"c392b89ed879cdbe"}},{"code_sha256_prefix":"b27bdf379024ef87","entry":"ElmoSCLSTM","repo":"neuspell/neuspell","repo_kind":"official","path":"neuspell/seq_modeling/models.py","file_url":"https://github.com/neuspell/neuspell/blob/HEAD/neuspell/seq_modeling/models.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b27bdf379024ef87"}},{"code_sha256_prefix":"07f181b5d863802d","entry":"get_pretrained_elmo","repo":"neuspell/neuspell","repo_kind":"official","path":"neuspell/seq_modeling/models.py","file_url":"https://github.com/neuspell/neuspell/blob/HEAD/neuspell/seq_modeling/models.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"07f181b5d863802d"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}