Dealing with noisy features in a classification problem I'm working on a classification problem whose features are very noisy. I have a table with the 'official' feature levels, but the actual data loosely resemble them. For example, to represent a value of "11001 BOGOTA", the following can be found in the data:
"100100BOGOT"  "100100BOGOTA" "11001" "1100100BOG" "1100100 BOGOT" "1100100BOGOT" "1100100BOGOTA" "11001Bogot\U3e31653c" "11001 BOGOTA" "11001BOGOTA," "11001BOGOTA" "11001CONV.ES" "11100100BOGO" "0 BOGOT" "1100100BGTA" "11001Bogot" "1111001 BOGOT" "BOGOT" "BOGOTA01" "BOGOTA COLOMB" "BOGOTA D.C." "00000BOGOTA" 

The number of "real" levels is around 1000, while the number of observed levels is about 4000. Before attemtping any classification, this data should be de-noised to their "official" values... What would be the best approach to achieve this? 
1.-By hand? (crazy, but possible)
2.-Some set of rules? How could I define them? 
3.-Training some classifier? Which one would be the best option?
Here a similar problem is explained, but it is not categorical data and has no "official" referent.
Thanks a lot for reading this.
 A: Maybe first try to encode your features, then try to find a solution for denoising? Have a look at here it might help.
Once you encoded the features, you can apply denoising techniques which is common with numerical data in machine learning. For example, a simple linear regression or a neural network as an unsupervised feature learning can be useful.
Although, encoding a noisy categorical data might not be easy.
A: You can use n-grams perhaps. This approach is a bit crude, and you are perhaps willing to more directly model what's the noise, but this approach might work fine for classification purposes. 
See https://en.wikipedia.org/wiki/N-gram for example, but in short, you encode all length three or two substrings ('BOG', 'OGO', 'OTA', .. '10B') etcetera, then use one-hot encoding to create features of that, 
featurename | 'BOG' | 'OGO' | 'OTA' .. | .. | 10B |
row_1       | 1     | 0     |  1    .. | .. | 0   |
row_2       | 0     | 1     |  1    .. | .. | 0   |     

This way, observations that have similar labels are close in terms of features, and this might work well for a classifier. An unwanted side effect is that similarly named cities such as Santa Monica and Santa Cruz will produce at least some similar n-grams. 
