I want to write a program that looks at abbreviated words, then figures out what the words are. For example, the abbreviation is "blk comp", and the translation is "black computer".

In order to give it context for more ambiguous terms, I will be inputting sets of words with each request. So, if I input the set "keyboard, software, mouse, monitor", I would expect to get "black computer". On the other hand, if I input "Honda, transmission, mileage, Ford", I then would expect to get "black compact", or at least something that has anything to do with cars.

Basing on the above case scenario, what kind of an algorithm should be applied in this case?


1 Answer 1


Take a look at using a skip gram model to find what the abbreviated text is. The skip gram model turns a word into a vector, which allows it to be processed by other machine learning algorithms. Or, alternatively you can do some really cool addition and subtraction problems with the resulting vectors. With the skip gram model in your case you could generate a vector for your input and then compare it with other skip gram vectors and once you have found a near perfect match then that is the unabbreviated word.

You could also look at using sparse distributed representations of words to do this. This approach is similar to the skip gram model except that instead of a vector with maybe 500 values a sparse representation may contain thousands of binary digits of which only a couple are positive or 1.

If you would like to look at this approach take a look at cortical.io which has free API that you can use.

So, you could use a deep neural network in combination with the skip gram model to produce your output.

  • $\begingroup$ Thank you, Aiden! This sounds like a good starting point to try to solve this problem. $\endgroup$
    – Neo_999
    Mar 7, 2017 at 16:39

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .