Answered step by step
Verified Expert Solution
Question
1 Approved Answer
You will create a java file titled Markov.java. The program will read a text file, generate a collection of words and words that follow that
You will create a java file titled Markov.java. The program will read a text file, generate a collection of words and words that follow that word, and will then use those words to generate new text. Please see the methods descriptions and the example output below. UML Diagram Markov PUNCTUATION String A PUNCTUATION_MARKS String words HashMap> prevword String Markov() m o m m o getWords () HashMap> m 1 addFromFile(String) void addLine(String) void o addword (String) void getSentence() String o randomword(String) String endsWithPunctuation(String) boolean m 1 toString() String . m 1 Field Details Constant Fields PUNCTUATION This field is used as a key to store words that end in punctuation. It is set to " $" PUNCTUATION_MARKS This is used to store punctuation marks that we will look for in our words. Members HashMap> words This stores a list of all the words found in the text file as the key of the HashMap. The ArrayList is the list of words that directly follow the key. For example given the phrase: It is raining when it is cloudy. Our structure will looks something like the following: __$= [It], It=[is, is], is=[raining, cloudy], raining=[when], cloudy.=[] Another way to visualize this is as a json string: [ "it": {"is", "is"}, "is":{"raining", "cloudy"}, "raining": {"when"}, "cloudy.":{ ] Note: It is important to ensure that ALL words are stored. Storing duplicates is a proxy for frequency. This way when we are selecting a word from our list it will, somewhat, match the frequency of the original document. String preyWord This will store the previous word that had been read from the text file. This is used to determine how to process the current word. If the previous word ended in something from PUNCTUATION_MARKS then this should be set to PUNCTUATION Method Details Markov() The constructor for this class will initialize the HashMap words with the key PUNCTUATION and a value of a new ArrayList. This method will also set prevWord = PUNCTUATION. getWords() This is a getter that returns the list of words addFromFile(String) Others methods called: addLine(String) This method takes a String called filename that represents the file that will be parsed into the words HashMap. This method opens the file and calls the addLine method to parse the individual lines from the filename. This method should catch any errors that are generated from file operations. addLine(String) Other methods called: addWord(String) This is a simple method that performs two very important operations. First it ensures that the line being read is not 0 length. This is important because without this functionality an empty string (blank line) will break the program. Once a String is determined to have content, the String is split into individual words. These words are then passed to the addWord(String) method. endsWith Punctuation(String) This method takes a String and checks if the last character of the String exists in PUNCTUATION_MARKS. If the last character does exist in PUNCTUATION_MARKS the method returns true, otherwise it returns false This method should also catch any errors that may occur when checking for punctuation. If an error is caught, print the word that caused the error along with an error message. toStringh) The toString will return the toString of the HashMap words. Sample run 1 Called with spam.txt: spam. txt I like poptarts and 42 and spam. Will I get spam and poptarts for the holidays? I like spam poptarts! Main.java public static void main(String[] args) { Markov markov = new Markov(); markov.addFromFile("spam. txt"); System.out.println(markov); for (int i = 0; i
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started