Question: This coding problem (code is in java): In this activity you will write and test a method that will autogenerate a review based on the

This coding problem (code is in java):

In this activity you will write and test a method that will autogenerate a review based on the review used in Activity 2. The method will autogenerate a review by replacing adjectives in the given review with randomly selected adjectives from a list.

  1. Open your existing SimpleReview.txt file and annotate each adjective by adding a * at the beginning of the word. For example, the SimpleReview.txt from Activity 2 would be:

    This was a *terrible restaurant! The pizza crust was too *chewy, and I disliked the pasta. I would definitely not come back.
  2. Write the method fakeReview. The method signature is given below.

    public static String fakeReview(String fileName)

    The parameter fileName should be the name of the annotated review (with * at the beginning of the adjectives). The fakeReview method should loop over the String containing the contents of the marked-up review to build and return a fake review. Remember, you are replacing only the adjectives with a random positive or negative adjective, which are marcated with a *.

    You are going to want to take advantage of the method randomPositiveAdj that returns a random word from the positiveAdjective.txt files. Feel free to add more adjectives to those files if you want those words to be used!

Example:

A test file containing:

The *quick *brown fox jumps over the *lazy dog.

may produce as its output:

The speedy smoky fox jumps over the fast dog. 

What there is so far in code:

positiveAdjectives.txt

amazing awesome blithesome excellent fabulous fantastic favorable fortuitous gorgeous incredible ineffable mirthful outstanding perfect propitious remarkable rousing spectacular splendid stellar stupendous super upbeat unbelievable wondrous

Review.java

import java.util.Scanner; import java.io.File; import java.util.HashMap; import java.util.ArrayList; import java.util.Random; import java.io.*;

/** * Class that contains helper methods for the Review Lab **/ public class Review { private static HashMap sentiment = new HashMap(); private static ArrayList posAdjectives = new ArrayList(); private static ArrayList negAdjectives = new ArrayList(); private static final String SPACE = " "; static{ try { Scanner input = new Scanner(new File("cleanSentiment.csv")); while(input.hasNextLine()){ String[] temp = input.nextLine().split(","); sentiment.put(temp[0],Double.parseDouble(temp[1])); //System.out.println("added "+ temp[0]+", "+temp[1]); } input.close(); } catch(Exception e){ System.out.println("Error reading or parsing cleanSentiment.csv"); } //read in the positive adjectives in postiveAdjectives.txt try { Scanner input = new Scanner(new File("positiveAdjectives.txt")); while(input.hasNextLine()){ String temp = input.nextLine().trim(); System.out.println(temp); posAdjectives.add(temp); } input.close(); } catch(Exception e){ System.out.println("Error reading or parsing postitiveAdjectives.txt " + e); } //read in the negative adjectives in negativeAdjectives.txt try { Scanner input = new Scanner(new File("negativeAdjectives.txt")); while(input.hasNextLine()){ negAdjectives.add(input.nextLine().trim()); } input.close(); } catch(Exception e){ System.out.println("Error reading or parsing negativeAdjectives.txt"); } } /** * returns a string containing all of the text in fileName (including punctuation), * with words separated by a single space */ public static String textToString( String fileName ) { String temp = ""; try { Scanner input = new Scanner(new File(fileName)); //add 'words' in the file to the string, separated by a single space while(input.hasNext()){ temp = temp + input.next() + " "; } input.close(); } catch(Exception e){ System.out.println("Unable to locate " + fileName); } //make sure to remove any additional space that may have been added at the end of the string. return temp.trim(); } /** * @returns the sentiment value of word as a number between -1 (very negative) to 1 (very positive sentiment) */ public static double sentimentVal( String word ) { try { return sentiment.get(word.toLowerCase()); } catch(Exception e) { return 0; } } /** * Returns the ending punctuation of a string, or the empty string if there is none */ public static String getPunctuation( String word ) { String punc = ""; for(int i=word.length()-1; i >= 0; i--){ if(!Character.isLetterOrDigit(word.charAt(i))){ punc = punc + word.charAt(i); } else { return punc; } } return punc; } /** * Returns the word after removing any beginning or ending punctuation */ public static String removePunctuation( String word ) { while(word.length() > 0 && !Character.isAlphabetic(word.charAt(0))) { word = word.substring(1); } while(word.length() > 0 && !Character.isAlphabetic(word.charAt(word.length()-1))) { word = word.substring(0, word.length()-1); } return word; } /** * Randomly picks a positive adjective from the positiveAdjectives.txt file and returns it. */ public static String randomPositiveAdj() { int index = (int)(Math.random() * posAdjectives.size()); return posAdjectives.get(index); } /** * Randomly picks a negative adjective from the negativeAdjectives.txt file and returns it. */ public static String randomNegativeAdj() { int index = (int)(Math.random() * negAdjectives.size()); return negAdjectives.get(index); } /** * Randomly picks a positive or negative adjective and returns it. */ public static String randomAdjective() { boolean positive = Math.random() < .5; if(positive){ return randomPositiveAdj(); } else { return randomNegativeAdj(); } }

//Write your fakeReview method here. This method takes a .txt file and returns a new review //String with the adjectives randomly changed public static String fakeReview(String fileName) { } }

cleanSentiment.csv

1960s,0.09 1970s,-0.07 1980s,-0.15 1990s,0.05 aaron,-0.32 abandoned,-0.09 abby,0.64 ability,-0.03 able,-0.04 abnormal,-0.34 aboard,-0.15 above,0.2 abrupt,-0.83 abruptly,-1.11 abs,0.58 absence,-0.8 absent,0.08 absolute,-1.51 absolutely,0.57 abstract,-0.09 absurd,-1.23 abundant,0.83

(all of this a-z)

ReviewTester.java

public class ReviewTester { public static void main(String[] args) { //Test your fakeReview method here! } }

SimpleReview.txt

This was a terrible restaurant! The pizza crust was too chewy, and I disliked the pasta. I would definitely not come back.

negativeAdjectives.txt

aggressive arrogant belligerent bigoted blunt callous critical cynical dishonest distant envious greedy guarded hostile indifferent intolerant irresponsible jealous pessimistic prejudiced prideful resentful rude sad selfish skeptical suspicious thoughtless unemotional untrusting

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!