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?

2 Answers 2


ESRI has a tool for ArcMap, called Standardize Addresses which breaks up an address into parts (which appears to be based on somewhat on URISA's standards for addressing). From there, the fields can be concatenated and geocoded. If you didn't want the abbreviations, it's a lot easier to do a massive find and replace as the name is broken up into separate cells. I learned too quickly that replacing ave with avenue on the full street name will give annoying results such as Shaver -> Shavenuer. While that obviously won't help with all cases, it does account for a few.

It shouldn't be too tricky to determine when to expand St as Saint vs Street. A rough way to do it would be to split the string by spaces and then search the list of substrings for occurrences of the common post types (dr,ln,blvd,etc). If only one ST is found, then it generally is Street. If there is an ST found with another post type, then it generally is Saint.

  • That's the sort of thing I'm looking for, but not just on the streets (variations and abbreviations can be in any part of the address), not just US specific, and not in a proprietary "black box" program where it's not clear what data they are using and with no way to enhance it. Since I have historical addresses which often don't go down to street level (but sometimes do), guessing that if there is only one "St" in an address it means Street would mostly fail.
    – Rob Hoare
    Commented Jul 18, 2013 at 2:13
  • Do you need a single solution to tackle the entire project or can you do it in parts? For example street address validation services (google: "address validation") can knock out a bunch of them for you. If you've got a sample list, I'd be happy to take a stab at it for you. I work at SmartyStreets.
    – Jeffrey
    Commented Jul 18, 2013 at 3:41
  • I'm looking into generic algorithms and procedures for primarily historical records, and primarily at the town/village level, and outside the US as well as the US, rather than modern US streets. So it's what do do with the 5-30% of locations that don't match on existing geocode services. In many cases, simple manipulation of the name (abbreviations, apostrophes, small spelling changes) will help with a match (surely everybody with geocoding of old data needs to do that?). Another step is to look up name changes. So yes it is a series of steps, but modern street addresses are not a problem.
    – Rob Hoare
    Commented Jul 19, 2013 at 4:09

Mapzen has a pretty impressive international address parser, libpostal. https://mapzen.com/blog/inside-libpostal/

Have spent a lot of time searching for the same thing, and this is the best I've found so far.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.