Which text clustering algorithms should I use to group free text fields in Python? I have a data set in which users have input free text (think "APPLE", "Apple", "apple", "appl") and I'm trying to group the input by response type (e.g. organize all of the preceding examples by "Apple"). What's the best way to do this in Python?
That is called "entity resolution" or "record linkage". It is a very hard problem. 

If it all possible, I would try to add "type ahead" to the form. That would encourage users to select already used categories.

fuzzywuzzy is a Python package for approximate string matching.

dedupe is "a Python library that uses machine learning to perform fuzzy matching, deduplication, and entity resolution quickly on structured data."