Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Submit Levenshtein .java Write a program that computes the edit distance (also called the Levenshtein distance) between two words. The edit distance between two strings

Submit Levenshtein.java

Write a program that computes the edit distance (also called the Levenshtein distance) between two words. The edit distance between two strings is the minimum number of operations that are needed to transform one string into the other. For this program, an operation is a substitution of a single character, such as from brisk to brick. The edit distance between the words dog and cat is 3, following the chain of dot, cot, and cat to transform dog into cat. When you compute the edit distance between two words, each intermediate word must be an actual valid word. Edit distances are useful in applications that need to determine how similar two strings are, such as spelling checkers.

Read your input from a test.txt file or a dictionary.text file. From this file, compute a map from every word to its immediate neighbors, that is, the words that have an edit distance of 1 from it. Once this map is built, you can walk it to find paths from one word to another.

A good way to process paths to walk the neighbor map is to use a linked list of words to visit, starting with the beginning word, such as dog. Your algorithm should repeatedly remove the front word of the list and add all of its neighbors to the end of the list, until the ending word (such as cat) is found or until the list becomes empty, which indicates that no path exists between the two words.

Your Levenshtein class has to have a private Map> field so the following test code works:

Levenshtein.java

// section of code to read data file Scanner file = new Scanner(new File("test.txt")); ArrayList words = new ArrayList(); while (file.hasNext()) words.add(file.next()); file.close(); // section of code to test your data structure Levenshtein structure = new Levenshtein(words); // builds Map from List of words System.out.println(structure.getMap()); // displays the Map from above System.out.println(structure.getMap().size()); // size of above Map System.out.println(structure.getPath("dog","cat")); // displays path as described in text System.out.println(structure.getDistance("dog","cat")); // the "distance" as described in text

test.txt

dog dot cot cat fat mat rat rut

image text in transcribed

The first line is the whole Map, which has a size of 8 key items (second line).

And the third line is the "path of how to change "dog" into a "cat" which is 3 steps.

Additional considerations:

  • If we pass two words with different lengths, then define path as -1 and an empty path
  • getPath should return a List
  • getDistance returns an int that is one less than the size from getPath
  • Above test is with test.txtimage text in transcribed but I will use dictionary.txtimage text in transcribed for my final testing, results will vary
  • Using dictionary.txtimage text in transcribed in above example, you should get a Map size of 19911 and path:
    [dog, cog, cot, cat]

Transcribed image text

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Microsoft Visual Basic 2008 Comprehensive Concepts And Techniques

Authors: Gary B. Shelly, Corinne Hoisington

1st Edition

1423927168, 978-1423927167

More Books

Students also viewed these Databases questions

Question

Decision Making in Groups Leadership in Meetings

Answered: 1 week ago