How to check if a word is an English word with Python?
For (much) more power and flexibility, use a dedicated spellchecking library like PyEnchant
. There's a tutorial, or you could just dive straight in:
>>> import enchant>>> d = enchant.Dict("en_US")>>> d.check("Hello")True>>> d.check("Helo")False>>> d.suggest("Helo")['He lo', 'He-lo', 'Hello', 'Helot', 'Help', 'Halo', 'Hell', 'Held', 'Helm', 'Hero', "He'll"]>>>
PyEnchant
comes with a few dictionaries (en_GB, en_US, de_DE, fr_FR), but can use any of the OpenOffice ones if you want more languages.
There appears to be a pluralisation library called inflect
, but I've no idea whether it's any good.
It won't work well with WordNet, because WordNet does not contain all english words.Another possibility based on NLTK without enchant is NLTK's words corpus
>>> from nltk.corpus import words>>> "would" in words.words()True>>> "could" in words.words()True>>> "should" in words.words()True>>> "I" in words.words()True>>> "you" in words.words()True
Using NLTK:
from nltk.corpus import wordnetif not wordnet.synsets(word_to_test): #Not an English Wordelse: #English Word
You should refer to this article if you have trouble installing wordnet or want to try other approaches.