Comparing and Managing Names Using name-tools module in Python
Last Updated :
04 Jul, 2021
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