Are there any placename-specific matching algorithms, routines or services available? By placename specific I mean not just a simple string-difference match, or soundex/metaphone, but something that understands geographic abbreviations and conventions.
For example, match "W. Mt Washington Pkwy" with "West Mount Washington Parkway"; or "Oxon" with "Oxfordshire"; or "Oxford-st" with "Oxford Street"; or "N.S.W." with "New South Wales"; or "1234 Main St NW" with "1234 Apartment 345, North West Main Street", or "St. John's Ferry" with "Saint John Ferry".
Most of the addresses I'm dealing with (to geocode, to plot on maps for historical GIS) are at the town level. In most cases there are further elements of the address available (country, state, province, country) to avoid too many false positives. I do have data to match against, the challenge is to get the names to match, allowing for varied spellings and abbreviations.
There are several stages to match, assuming we're in the same state/province, including but not limited to:
- simple string matches, allowing for differing word order
- expand basic geographic abbreviations (W, St, Cty, and so on), based on the language(s) and conventions of the country, really just a bunch of look-up tables
- expand local admin area abbreviations and codes (NY, NSW, Oxon, and so on)
- look up placename changes and language alternatives
This is all basic stuff (the later three depend more on data than on an algorithm). Although some parts are tricky, like working out when to expand St as Saint, or Street (or try both).
So I assume this widely needed problem has been solved many times before (by people much more expert than me!), so I shouldn't re-invent the wheel.
But, even limiting it to English language countries (UK, Canada and so on, as well as the US), I haven't been able to find any published work or software for this. I must be looking in the wrong places. Does anybody have any suggestions for existing work I can build on?