You are on page 1of 15

“Introduction to Programming

With Java”

Lecture - 11

UMESH PATIL (umesh@cse.iitb.ac.in)

nlp-ai@cse.iitb
Contents for Today’s Lecture

• Programming practice: Program for morphological


analysis of English nouns.

nlp-ai@cse.iitb
Problem
Write a Java program that finds out the root & suffix of the given noun
plural in English. Also print the morphology rule applied for forming
the plural.
Sample input & output –
Input: boys
Output:
root = boy
suffix = s
Morphology rule = [[W]]  [[W][s]]
Input: indices
Output:
root = index
suffix = ices
Morphology rule = [[W][ex]]  [[W][ices]]
nlp-ai@cse.iitb
Plurals in English
Example Morphology Rule
• boy  boys • W  Ws
• bus  buses • W  Wes
• lady  ladies • Wy  Wies
• leaf  leaves • Wf  Wves
• datum  data • Wum  Wa
• formula  formulae • W  We
• index  indices • Wex  Wices
• matrix  matrices • Wx  Wces
• radius  radii • Wus  Wi
• cherub  cherubim • W  Wim
nlp-ai@cse.iitb
Algorithm

1. Read the input word


2. Find the suffix
3. Remove suffix & get the root
4. If needed, prepare the correct root
eg. indices  ind  ind + ex = index
5. Print the output

nlp-ai@cse.iitb
Required Methods of String class

1. boolean endsWith(String suffix)


Returns true if the string ends with the specified suffix;
false otherwise.
Parameters: the String suffix.

eg. If s = “indices” then


s.endsWith(“ices”) will return true
s.endsWith(“s”) will return true
s.endsWith(“”) will return true
s.endsWith(“indices”) will return true
But
s.endsWith(“ice”) will return false

nlp-ai@cse.iitb
Required Methods of String class… continued
2. String substring(int beginIndex, int endIndex)
Returns a new string that is a substring of the current string. The
substring begins at the specified beginIndex and extends to the
character at index endIndex - 1. It will give error (throw exception) if
the beginIndex is negative, or endIndex is larger than the length the
string, or beginIndex is larger than endIndex.
Parameters:
beginIndex - the beginning index, inclusive.
endIndex - the ending index, exclusive.
eg. If s = “mississippi” then
s.substring(0,4) will return “miss”
s.substring(6,9) will return “sip”
s.substring(0,11) will return “mississippi”
s.substring(0,0) will return “”

nlp-ai@cse.iitb
Required Methods of String class… continued

3. int lastIndexOf(String str)


Returns the index within the current string of the
rightmost occurrence of the specified substring. If str does
not occur as a substring, -1 is returned.
Parameters: str - the substring to search for.
eg. If s = “mississippi” then
s.lastIndexOf(“is”) will return 4
s.lastIndexOf(“i”) will return 10
s.lastIndexOf(“”) will return 11
s.lastIndexOf(“mississippi”) will return 0
And
s.lastIndexOf(“abc”) will return -1

nlp-ai@cse.iitb
Required Methods of String class… continued

4. String concat(String str)


Returns a string after concatenating the specified string, ie.
str, to the end of the current string.
Parameters:
str - the string that is concatenated to the end of the current
string.
eg. if s = “man” then
s.concat(“go”) will return “mango”
s.concat(“”) will return “man”

Detailed explanation of the String class.

nlp-ai@cse.iitb
Core Part of the Program

Suppose input word = “indices”;

if (word.endsWith("ices")) { // word = “indices”


suffix = "ices";
i = word.lastIndexOf("ices"); // i = 3
root = word.substring(0,i); // root = “ind”
root = root.concat("ex"); // root = “index”
morphRule = "[[W][ex]]  [[W][ices]]";
}

nlp-ai@cse.iitb
Some Testing

1. matrix  matrices
2. life  lives
3. analysis  analyses
4. criterion  criteria
Does the program work for these examples?
If yes, how?
If no, why?

nlp-ai@cse.iitb
Assignment
1. Do the morphological analysis of the following inflected verbs
in English and write a Java program that finds out the root &
suffix of the given inflected verb. Also print the morphology
rule that is applied.
fetch  fetches, fetching, fetched
carry  carries, carrying, carried
enjoy  enjoys, enjoying, enjoyed
burn  burns, burning, burnt
beat  beats, beating, beaten
forbid  forbids, forbidding, forbided, forbidden
blow  blows, blowing, blowed, blown
save  saves, saving, saved
nlp-ai@cse.iitb
Assignment … continued
say  says, saying, said
drop  drops, dropping, dropped
admit  admits, admitting, admitted
repel  repels, repelling, repelled
dog  dogs, dogging, dogged
can  cans, canning, canned
spur  spurs, spurring, spurred
stem  stems, stemming, stemmed
stab  stabs, stabbing, stabbed
kid  kids, kidding, kidded
mimic  mimics, mimicking, mimicked
nlp-ai@cse.iitb
To Remind

The best way to learn programming


is writing a lot of programs on your
own.

nlp-ai@cse.iitb
End

Thank you 

nlp-ai@cse.iitb

You might also like