From a0ed7156a95b5304c582f306988acb9b54d27d3f Mon Sep 17 00:00:00 2001 From: sam <sam.neupane@huskers.unl.edu> Date: Mon, 6 Mar 2017 15:52:58 -0600 Subject: [PATCH] hw --- Unit_test.py | 17 ++++++ sentiment.py | 145 ++++++++++++++++++++++++++++------------------ test_method_11.py | 10 ---- 3 files changed, 106 insertions(+), 66 deletions(-) create mode 100644 Unit_test.py delete mode 100644 test_method_11.py diff --git a/Unit_test.py b/Unit_test.py new file mode 100644 index 0000000..444604a --- /dev/null +++ b/Unit_test.py @@ -0,0 +1,17 @@ +from unittest import TestCase +from sentiment import method_11 +from sentiment import first_input13 + + +class Unit_test(TestCase): + def test_method_11(self): + with open('sentiment.txt') as s: + reviews = list(s) + sentiments = {} + self.assertEqual(method_11(reviews,sentiments)['arty'], [3,1,1,0]) + + def test_first_Input13(self): + sentiments = {} + y=input() + self.assertEqual(first_input13(sentiments,y)['Invalid input']) + diff --git a/sentiment.py b/sentiment.py index 37dff73..5c45a26 100644 --- a/sentiment.py +++ b/sentiment.py @@ -1,14 +1,16 @@ from __future__ import print_function, division from builtins import input +import numpy as np def main(): reviews = list() + try: with open('sentiment.txt') as s: reviews = list(s) - # print(len(reviews)) + except OSError: print('Does not exist') sentiments = {} @@ -25,7 +27,7 @@ def main(): # y=x, num=0, av='None' # ) # print(output) - y = None + #y = None while True: print('Enter your choice: \n' @@ -45,67 +47,98 @@ def main(): if y == 5: print('Goodbye') break - if y == 1: - x = input("Enter a word") - if x in sentiments: + first_input13(sentiments, y) - output = 'The word "{y}" appears "{num}" times with an average sentiment of {av}. '.format( - y=x, num=len(sentiments[x]), av=sum(sentiments[x]) / len(sentiments[x])) - - else: - output = 'The word "{y}" appears "{num}" times with an average sentiment of {av}. '.format( - y=x, num=0, av='None' - ) - print(output) - average = list() - if y == 2 or y == 3: + if y == 2 or y == 3 or y==4: + average = list() file = input('Enter a file') try: with open(file) as file_words: user_file = file_words.read().split() - for word_in_file in user_file: - if word_in_file in sentiments.keys(): - average.append(sum(sentiments[word]) / len(sentiments[word])) - - if y == 2: - average.append(sum(sentiments[word_in_file]) / len(sentiments[word_in_file])) - if not average: - print('The average score of words in {y} is None '.format(y=file)) - else: - average_words = sum(average) / len(average) - - if average_words >= 2.01: - print('The average score of words in {y} is {av}'.format(y=file, av=average_words)) - print('The overall sentiment of {y} is positive'.format(y=file)) - elif average_words <= 1.99: - print('The average score of words in {y} is {av}'.format(y=file, av=average_words)) - print('The overall sentiment of {y} is negative'.format(y=file)) - else: - print('The average score of words in {y} is {av}'.format(y=file, av=average_words)) - print('The overall sentiment of {y} is neutral'.format(y=file)) - - if y == 3: - # rating = sum(sentiments[x])/len(sentiments[x]) - split_file = file.split() - # - highest_score = max(average) - lowest_score = min(average) - p = average.append(sum_word) - - for check_word in split_file: - if check_word in sentiments: - method_11(check_word) - sum_word = sum(method_11(check_word)) / len(method_11(check_word)) - - for file_word, rate in sum_word.items(): - if rate == highest_score: - j = file_word - if rate == lowest_score: - j == file_word - print('The most positive word is {phrase} with a score of {j}'.format(phrase=j, j=highest_score)) - print('The most negative word is {phrase} with a score of {min}'.format(phrase=j, min=lowest_score)) except IOError: + raise print('File could not be found') + for word_in_file in user_file: + if word_in_file in sentiments.keys(): + average.append(sum(sentiments[word]) / len(sentiments[word])) + + if y == 2: + average.append(sum(sentiments[word_in_file]) / len(sentiments[word_in_file])) + if not average: + print('The average score of words in {y} is None '.format(y=file)) + else: + one_word_average = sum(average) / len(average) + + if one_word_average >= 2.01: + print('The average score of words in {y} is {av}'.format(y=file, av=one_word_average)) + print('The overall sentiment of {y} is positive'.format(y=file)) + elif one_word_average <= 1.99: + print('The average score of words in {y} is {av}'.format(y=file, av=one_word_average)) + print('The overall sentiment of {y} is negative'.format(y=file)) + else: + print('The average score of words in {y} is {av}'.format(y=file, av=one_word_average)) + print('The overall sentiment of {y} is neutral'.format(y=file)) + + if y == 3: + + max_score = None + min_score = None + max_word = None + min_Word = None + number = 0 + score_of_one_word = sum(sentiments[word_in_file]) / len(sentiments[word_in_file]) + for word_in_file in user_file: + if word_in_file in sentiments.keys(): + + + if max_score is None: + + max_score = score_of_one_word + max_word = word_in_file + if score_of_one_word> max_score: + max_score = score_of_one_word + max_word = word_in_file + if min_score is None: + min_score = score_of_one_word + min_Word = word_in_file + if score_of_one_word < min_score: + min_score = word_in_file + min_Word = word_in_file + + print('The most positive word is {phrase} with a score of {max}'.format(phrase=max_word, max=max_score)) + print('The most negative word is {phrase} with a score of {min}'.format(phrase=min_Word, min=min_score)) + if y == 4: + lowest_scores= [] + largest_scores =[] + + score_of_one_word = sum(sentiments[word_in_file]) / len(sentiments[word_in_file]) + for word_in_file in user_file: + if word_in_file in sentiments.keys(): + if score_of_one_word <= 1.99: + lowest_scores.append(word_in_file) + elif one_word_average>= 2.01: + largest_scores.append(word_in_file) + lowest_scores = str([lowest_scores]) + largest_scores = str([largest_scores]) + with open('negative.txt', 'w') as negative_file: + negative_file.write(lowest_scores) + with open('positive.txt', 'w') as positive_file: + positive_file.write(largest_scores) + + +def first_input13(sentiments, y): + if y == 1: + x = input("Enter a word") + if x in sentiments: + + output = 'The word "{y}" appears "{num}" times with an average sentiment of {av}. '.format( + y=x, num=len(sentiments[x]), av=sum(sentiments[x]) / len(sentiments[x])) + + else: + output = 'The word "{y}" appears "{num}" times with an average sentiment of {av}. '.format( + y=x, num=0, av='None' + ) + print(output) def method_11(reviews, sentiments): diff --git a/test_method_11.py b/test_method_11.py deleted file mode 100644 index 523c3c2..0000000 --- a/test_method_11.py +++ /dev/null @@ -1,10 +0,0 @@ -from unittest import TestCase -from sentiment import method_11 - - -class TestMethod_11(TestCase): - def test_method_11(self): - reviews = ['John', "jack "] - sentiments = [2,2] - self.assertEqual(method_11(reviews,sentiments)[3,0,1,1], ['arty']) - -- GitLab