Comparing and Managing Names Using name-tools module in Python
While working with documents, we can have problems in which we need to work with Names. This article discusses the name-tools library which can help to perform this task. It can be used to manage and compare names. It currently includes English and Western Style names.
Installation:
Use the below command to install the name-tools library:
pip install name_tools
Example 1: Working with split()
The split(), is used to divide the name into 4 parts namely, prefix ( Mr, Dr, etc) , first name, middle name, and suffix (Jr., II, etc).
Python3
import name_tools # examples to split name name1 = name_tools.split( "Mr. Sandeep Jain Sr." ) print (name1) # examples to split name name2 = name_tools.split( "Mr. Manjeet Singh" ) print (name2) # examples to split name name3 = name_tools.split( "Dr. Robert D III" ) print (name3) |
Output :
('Mr.', 'Sandeep', 'Jain', 'Sr.') ('Mr.', 'Manjeet', 'Singh', '') ('Dr.', 'Robert', 'D', 'III')
Example 2: Working with canonicalize()
This function converts the name to its standard format: ‘Prefixes First Last, Suffixes’. The spaces are escaped and words are capitalized.
Python3
import name_tools print ( "Demonstrating Canonicalize : " ) # examples to canonicalize name # returns String name1 = name_tools.canonicalize( "mr. sandeep jain, sr." ) print (name1) # examples to canonicalize name # returns String name2 = name_tools.canonicalize( "mr. manjeet Singh" ) print (name2) # examples to canonicalize name # returns String name3 = name_tools.canonicalize( "dr. robert d 3" ) print (name3) |
Output :
Mr. Sandeep Jain, Sr. Mr. Manjeet Singh Dr. Robert D 3
Example 3: Comparing names
Comparison of names is done using match(), which takes 2 names and compares to factors such as word orders, initials, honorifics, and titles. Giving each factor a specific weight.
Python3
import name_tools print ( "Demonstrating Matching names : " ) # examples to match name # returns percentage similarity match1 = name_tools.match( "Mr Sandeep" , "Sandeep" ) print (match1) match2 = name_tools.match( "Mr. Sandeep Jain" , "Dr. Sandeep Jain" ) print (match2) match3 = name_tools.match( "Mr. Jain Sandeep" , "Mr. Sandeep Jain" ) print (match3) |
Output :
0.95 0.8999999999999999 0.0