There has actually been a lot of research on this, and people have used many different kinds of machine learning algorithms for this. I've in person tried genetic programming, which worked reasonably well, however in person I still value more highly to tune matching manually.
I have a few references for research papers on this subject. StackOverflow doesn't want too many links, but here is bibliographic info that should be sufficient using Google:
Unsupervised Learning of Link Discovery Configuration, Andriy Nikolov, Mathieu d’Aquin, Enrico Motta
A Machine Learning Approach for Instance Matching Based on Similarity Metrics, Shu Rong1, Xing Niu1, Evan Wei Xiang2, Haofen Wang1, Qiang Yang2, and Yong Yu1
Learning Blocking Schemes for Record Linkage, Matthew Michelson and Craig A. Knoblock
Learning Linkage Rules victimization Genetic Programming, Robert Isele, and Christian Bizer
That's all research, though. If you are looking for a sensible answer to your drawback I've designed an open-source engine for this kind of deduplication, called Duke. It indexes the information with Lucene, and then searches for matches before doing a more detailed comparison. It needs manual setup, though there's a script that may use genetic programming (see link above) to make a setup for you. There's also a guy who wants to make an ElasticSearch plugin for Duke (see thread), but nothing's done so far.
Anyway, that's the approach I'd take in your case.
Also, if you are looking to learn all the concepts of Machine Learning, then you can join Machine learning Certification course.