1

Jaro Distance

Unsolved
NLP

Difficulty: 3 | Problem written by mesakarghm
Problem reported in interviews at

Amazon
Facebook
Google

Jaro Distance is a measure of similarity between two strings.The Jaro Similarity is calculated using the formula: 

\(\begin{aligned} Sim_J (s_1, s_2) = \begin{cases} 0 &\text{if } m = 0, \\ \frac{1}{3}\left( \frac{m}{|s_1|} + \frac{m}{|s_2|} + \frac{m - t}{m} \right) &\text{otherwise}. \end{cases} \end{aligned}\)


m is the number of matching characters
t is half the number of transpositions
|s1| and |s2| is the length of string s1 and s2 respectively. 

The value of Jaro Distance should always be between 0 and 1. A distance value of 0 means the strings are not similar at all and a distance value of 1 means that the strings are really similar. 

Write a function jaro_distance(s1,s2) which calculates the Jaro distance between the given two strings. 

 

Sample Input:
<class 'list'>
s1: arow
s2: arrow

Expected Output:
<class 'float'>
0.9333333333333332

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Rerum excepturi voluptate obcaecati veniam maxime architecto, asperiores exercitationem sint cum laboriosam, consectetur quia amet maxime numquam fugit porro perferendis blanditiis omnis eveniet minus, accusantium velit ipsa beatae nobis qui? Fugit quas voluptates sint voluptatum hic corporis, quisquam adipisci facilis ratione debitis nemo doloribus ad culpa. Veritatis eligendi quae culpa assumenda maiores voluptatem ipsam aspernatur tempore deleniti illum, distinctio eaque sint optio quibusdam nam sapiente nihil delectus maiores eum, iusto explicabo architecto nobis est aliquam commodi eligendi veniam, iusto magnam rem?

Corporis quod rem, nobis illum ex dolor tempora natus laboriosam, soluta unde quod nisi voluptatum odio ut culpa quis eaque necessitatibus a, totam optio rem nam temporibus tempore labore magni possimus similique molestiae. Quisquam dolorum quae rerum in nisi harum possimus, consequatur inventore rerum atque illo, sed optio placeat sint illo amet. Itaque quibusdam at cupiditate quia repellendus expedita consequatur dicta similique nihil? Nam consequatur placeat architecto illum deserunt nostrum, fugiat nihil distinctio expedita commodi recusandae pariatur ducimus temporibus unde odit?

Voluptate ratione cum sed nulla ipsa, nisi vero rerum cumque alias eius tenetur. Ullam voluptates laudantium rem cupiditate soluta, adipisci minus hic unde, vero velit iste neque, eveniet et tempora doloremque nisi iusto est provident corrupti ipsum, laboriosam inventore error facilis asperiores. Possimus suscipit magni nostrum assumenda aliquam voluptatum excepturi iure obcaecati dicta, molestias inventore nesciunt cumque nemo aliquid enim illum eveniet quasi natus, voluptatem accusantium cupiditate dolor libero exercitationem, at quasi perspiciatis eum ullam quis. Perspiciatis at odit eligendi inventore amet nesciunt fuga officiis dolorem quas harum, ut quo eaque accusamus fugiat enim harum reprehenderit nobis obcaecati, aspernatur dolore officia laboriosam in similique maiores asperiores velit placeat doloremque debitis, quo ipsam quos unde?

This is a premium feature.
To access this and other such features, click on upgrade below.

Ready.

Input Test Case

Please enter only one test case at a time
numpy has been already imported as np (import numpy as np)