Various fuzzy string match algorithms & Excellent video review

Fuzzy String Match

I’ve been studying up on fuzzy string match after controlling for misspellings, typos, dyslexia etc.  and I found a few articles discussing various approaches like:

Levenstein distance
Damerau–Levenshtein distance
n-gram
Soundex
Jaro-Winkler distance
Jaccard index

I found this video from two guys which took a process of checking to see if a name was on a terrorist watch lists which originally took 14 days to compute down to 5 minutes
What’s in a Name? Fast Fuzzy String Matching – Seth Verrinder & Kyle Putnam – Midwest.io 2015

Below are my notes from watching the fuzzy string match video (it is ~40 minutes long but very interesting)

1) throw more hardware
2) use another variable/field (zip code / country etc.)
3) n-grams
4) metric trees (example: Lowenstein distance)
5) Brute force (Jaro Winkler is pretty fast already) (5X down to 70hrs )
6) Filtering- estimate similarity first then filter (7x down to 50 hrs 18 minutes in video)
· Length of strings (name length often is not normally distributed so doesn’t rule out too much) Probably still look at 70%
· 26 Character filter- search for character that isn’t shared- This dropped out quite a bit but was slow (300x down to 65 minutes)
o Bitmap filter- use bitwise operations to get unmatched count- very fast! (340X down to 60 minutes 20 minutes in video)
o 64 character filter (used all bits)- checked for multiple occurrences of a given letter

7) Minimize recalculation (4,000x down to 5 minutes – 28 minutes in video)
· sort names and groups into segments
· common length and first character
· used WolframAlpha to help show formula

Learnings from Fuzzy String Match process

· Measure performance and focus on bottleneck
· Order of magnitude doesn’t always tell you about actual performance
· Favor simplicity

Approximate text matching – Wikipedia, the free encyclopedia

In computer science, approximate string matching (often colloquially referred to as fuzzy string searching) is the technique of finding strings that match a pattern …

kiyoka/fuzzy-text-match · GitHub

fuzzy string match library for ruby. Contribute to text-match development by creating an account on GitHub.

text-match | RubyGems.org | your community gem host

text-match 0.9.7. calculate Jaro Winkler distance. Versions: 0.9.7 – December 21, 2013 (13.5 KB); 0.9.6 – December 21, 2013 (13.5 KB); 0.9.5 – March 26, …

Excellent SciTE editor video documenting powerful features

SciTE editor

SciTE Editor demonstration

If you frequently use tools like Notepad, Notepad++,  Textpad, etc. I highly recommend you give the SciTE editor a try! Here is a great video demonstrating it’s powerful features and how it can save you a ton of time!  It is highly customizable (but there is a learning curve to making the tweaks to your user settings.  I love it because I have the property files (which provide IntelliSense & syntax highlighting for ~80 languages)

scite editor

The editor is free and can be downloaded from here.  If you’re using AutoHotKey you can get SciTE4AutoHotkey built by fincs here.

 

 

Using a strong Naming Convention & RegEx are keys to automating metrics!

naming conventions

Naming Convention and Regular Expression (RegEx)

Having a strong naming convention can make reporting on your metrics a breeze when you use a regular expression to break out-decrypt the naming scheme. This video shows how easy it is for us to extract: Region, Language, Campaign Type, etc. from our campaign names by using a regular expression. It also points out that there is no need to be stuck with poor acronyms for your reporting.Group of coworkers seated around a table in a bright office, talking together with a green reusable water bottle in front of them

In my above example I use AutoHotKey with Excel.  If you add the function, Excel can do RegEx itself however (for some crazy reason) it isn’t built into it.