Я не уверен, что это будет работать хорошо на имена по сравнению с проблемой псевдонимов, но наиболее распространенный алгоритм в этом виде области был бы расстояние редактирования / расстояние Левенштейна алгоритм. Это - в основном количество количества символьных изменений, дополнений и удалений, требуемых превратить один объект в другого.
Для имен, я не уверен, что Вы когда-либо собираетесь получить хорошие результаты с чисто алгоритмическим подходом - В чем Вы действительно нуждаетесь, массы данных. Возьмите, например, сколько лучшие предложения написания Google, чем предложения в нормальном настольном приложении. Это вызвано тем, что Google может обработать миллиарды веб-запросов и посмотреть на то, что запросы приводят друг к другу, что 'сделало Вы подразумеваете, что' на ссылки на самом деле нажимают и т.д.
существует несколько компаний, которые специализируются на проблеме соответствия имени (главным образом для национальной безопасности и приложений мошенничества). Тот, который я мог помнить, Search Software Америка, кажется, был выкуплен этими парнями http://www.informatica.com/products_services/identity_resolution/Pages/index.aspx , но я подозреваю, что любой из этих видов решений был бы далек к дорогому для приложения контактов.
Вы можете использовать стандартные модули Python StringIO
или cStringIO
, чтобы получить буфер в памяти, который реализует файловый интерфейс .
cStringIO
реализован на C и будет работать быстрее, поэтому вам следует использовать эту версию, если это возможно.
Если у вас есть используя Python 3, вы должны использовать io.