What supervised machine learning algorithm to classify words in Python? I am working with a problem where I receive a free-text field where a user describes the attributes of the car it is selling. I want to make this into structured pre-defined attributes. 
An example is that in the field for tires the customer could write:


*

*studded tyres  

*spike tires

*spiked tires


These should result in my pre-defined attribute: studded tires
Hence, I would feed my training model with:
╔═════════════════╦═══════════════╗
║ Free text input ║    Answer     ║
╠═════════════════╬═══════════════╣
║ studded tyres   ║ studded tires ║
║ spike tires     ║ studded tires ║
║ spiked tires    ║ studded tires ║
╚═════════════════╩═══════════════╝

Since I have to make the classifications for the training data by myself I wont have that many observations.
What machine learning algorithm in Python would you recommend in my case?
Edit - The language the application is runnig on is not English. Hence, I cant use any methods that relies on English dictionary.
 A: In order to apply supervised learning you, in most cases, need a relatively large set of data. Therefore I think it might be more useful to use Fuzzy/Approximate string matching, where strings are compared using the Levenshtein distance.
A python package that does fuzzy string matching is FuzzyWuzzy, which you can install with:
pip install fuzzywuzzy

Then you can use it to get for example the two most equal strings to the user input:
>>> from fuzzywuzzy import process
>>> choices = ['tires', 'doors', 'windows']
>>> userInput = 'spiked tires'
>>> process.extract(userInput, choices, limit=2)
[('tires', 90), ('doors', 36)]

For more information see this answer.

Edit: Another (maybe not optimal) method could be a Naive Bayes classifier which calculate the probability of a class based on the features.
In python you can use textblob, which uses which words are in the string as feature:

By default, the NaiveBayesClassifier uses a simple feature extractor that indicates which words in the training set are contained in a document.
For example, the sentence “I feel happy” might have the features contains(happy): True or contains(angry): False.

you can install by:
pip install textblob

and to get the corpora data:
python -m textblob.download_corpora

Then using the data:
train = [ ('studded tyres', 'studded tires'), ('spike tires', 'studded tires'), ('spiked tires', 'studded tires'), ('blinded windows', 'windows'), ('widows', 'windows') ]
test = [('studded tyres', 'studded tires'), ('dark windows', 'windows'), ('big window', 'windows')]

Then you can train it:
from textblob.classifiers import NaiveBayesClassifier
cl = NaiveBayesClassifier(train)

and use it to predict a category:
>>> cl.classify('big windows')
'windows'
>>> cl.classify('big tir')
'studded tires'
>>> cl.classify('widows')
'windows'
>>> cl.classify('big window')
'studded tires'

And as accuracy (using test) it gives:
>>> cl.accuracy(test)
0.6666666666666666

For small data sets this might not work well, also with incorrectly written words there are problems (if they not occur often).
Also see: A simple explanation of Naive Bayes Classification
