Well you may have to think like human when programming that what string will be recognised by you first when you look at them.
For algorithm like these you should either use artificial intelligence or use google API for searching.
Lets take example of given words above. You have 5 letter words with number.
So probability of words with least number of numeric characters will easily be identified by Human. In your case i will follow this rule and would be creating a program for it.
Words having Higher Priority in Descending Order
Word with 5 alphabets are in higher priority.
Word with 4 alphabets (exception: Number should not be at first 4 place)
Word with 3 alphabets (exception: Number should not be at first 3 place)
and so on....
Last priority will be of word with special character at first or last place.
Word consisting special character in middle of word should not have priority.
I might be searching google using API and tried elnsv and result changed that word to ensv and
that is stock symbol of ENSERVCO CORP. So i will be either skipping this word or adding relationship.
In your case algorithm goes like that,
Make a statistical data of words that does make sense and what they look like, Is words having numbers make sense or not. Add them in array and use Insertion sort algorithm to sort them out. Use dictionary array to find relationship and forget words with special characters for dictionary.
For words that are left with special characters or number you should try a web based search if there exist meaning, basically words that are left at last should not be identified either by human or machine, So you should take help of any search engine.
Dont know if my answer is correct so will definitely try my code on list provided by you.