CS 5761 - Introduction to Natural Language Processing

Programming Assignment 3 - Demo in Lab on Monday, Feb 25 at 4pm
(submit code via email to patw0006@d.umn.edu before lab)

Objectives

To gain experience with spelling correction techniques and the generally useful and powerful idea of dynamic programming.

Specification

Implement a program to compute the minimum edit distance of two words. Assume the version of Levenshtein distance in which insertions and deletions each has a cost of 1, and substitutions have a cost of 2. (This is the algorithm presented in section 5.6 of the text.)

Your program should wait for the user to input two words. Then your program should output the minimum edit distance between these words. Your program should also display a table (similar to figure 5.6) that shows the intermediate computations that your program made. Please make sure this the table has a human-readable format (ie align columns, rows, etc).

Do not assume that the length of the two words are the same. Be able to handle the case where one word is longer than the other. Convert all alpha input to lower case.

Policies (from syllabus)

All programming assignments and your project will be demonstrated during designated lab sessions. You should also submit an electronic copy of your source code to the TA prior to the designated demo session. (His email address is patw0006@d.umn.edu.) There is no other way to submit your programming assignments or project. Failure to submit AND demo on time will result in a zero.

Any code you submit should be commented. I must be able to understand what your code does simply by reading the comments. This understanding should extend down to the details of your code. So do not simply describe the input and output, also include comments that describe your particular algorithm and coding techniques. Failure to comment to this degree will result in a zero.

All assignments and the project are to be done individually. You are required to write your own code. Unless otherwise specified, you must only turn in code that you personally wrote. The only possible exception to this is if I tell you to use a module that is available in a book or online archive. However, I will clearly indicate when this is permissible. Violations of this policy will result in severe grading penalties and/or failure in the class.