Are there any existing algorithms which can look through a list of words and split or combine words into their more common form?
For example, I have a list of many business names in the health care industry. The word "healthcare
" is often written "health care
". There are also business names which might be split or combined, such as "Walmart
" and "Wal mart
".
Are there any algorithms which can look at my list of words and identify that "healthcare
" is more often written as two words, and that "Wal mart
" is more often written as a single word?
I'm looking for the names of existing algorithms (which can help when searching the web), or links to existing white-papers or blog posts.
I'd prefer an algorithm that doesn't depend on a dictionary or other external list of words or business names.
EDITS:
Background:
I already have some code that is moderately successful at this task. The code was thrown together without much rigor. I hoped there were some established algorithms, which would likely be more academic and complete then what I've come up with. This question is not about the method I've come up with, but saying "it's impossible" doesn't convince me.
Clarification:
The "more common form" of a word is the way the word(s) are most often written. For example, "Walmart
" appeared many times, and "Wal mart
" appeared many times, but "Walmart
" appeared more often then "Wal mart
" and so "Walmart
" is the "more common form" of the word.
I don't expect this algorithm to produce perfect results. Like any machine learning problem, I expect the results to be dependent on the quality of data I give it, and how much data I have.