How to check if a word is an English word with Python?
Question: I want to check in a Python program if a word is in the English dictionary.

I believe nltk wordnet interface might be the way to go but I have no clue how
to use it for such a simple task.

    
    
    def is_english_word(word):
        pass # how to I implement is_english_word?
    
    is_english_word(token.lower())
    

In the future, I might want to check if the singular form of a word is in the
dictionary (e.g., properties -> property -> english word). How would I achieve
that?


Answer: For (much) more power and flexibility, use a dedicated spellchecking library
like [`PyEnchant`](http://pythonhosted.org/pyenchant/). There's a
[tutorial](http://pythonhosted.org/pyenchant/tutorial.html), 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](http://wiki.services.openoffice.org/wiki/Dictionaries) if you want more
languages.

There appears to be a pluralisation library called
[`inflect`](http://pypi.python.org/pypi/inflect), but I've no idea whether
it's any good.

