예제 #1
0
def labeledSentiment():
    os.chdir('validation-results')

    accuracyMeasure = AccuracyMeasures('labeledSentiment')

    os.chdir('..')

    os.chdir('labeledSentiment')

    for filename in os.listdir('.'):
        if '.txt' in filename and not 'readme' in filename:
            f = open(filename, 'r');

            reader = csv.reader(f, delimiter='\t', quoting=csv.QUOTE_NONE)
            
            for line in reader:
                if line[1]:
                    se = SentimentEngine(line[0], 'simple')
                    sentimentSum = sum([sentence.getAggregatePolarizedSentenceSentiment() for sentence in se.getSentences()])
                    sentiment = 0
                    sentiment = 1 if sentimentSum > 0 else (0 if sentimentSum < 0 else -1)
                    if sentiment == -1:
                        # print("Skipping:", line[0])
                        accuracyMeasure.skipFile.write(line[0] + '\n')
                    else:
                        accuracyMeasure.itemCount += 1
                        # print(line[0], line[1], sentiment)

                        if int(line[1]) == 0 and sentiment == 0:
                            accuracyMeasure.trueNegative += 1
                            accuracyMeasure.trueNegativeFile.write(line[0] + '\n')
                        if int(line[1]) == 1 and sentiment == 0:
                            accuracyMeasure.falseNegative += 1
                            accuracyMeasure.falseNegativeFile.write(line[0] + '\n')
                        if int(line[1]) == 0 and sentiment == 1:
                            accuracyMeasure.falsePositive += 1
                            accuracyMeasure.falsePositiveFile.write(line[0] + '\n')
                        elif int(line[1]) == 1 and sentiment == 1:
                            accuracyMeasure.truePositive += 1
                            accuracyMeasure.truePositiveFile.write(line[0] + '\n')
                else:
                    accuracyMeasure.invalidFile.write(line[0] + '\n')
            f.close()


    accuracyMeasure.accuracyFile.write((tabulate([['Actual Positive', str(accuracyMeasure.truePositive), str(accuracyMeasure.falseNegative)], ['Actual Negative', str(accuracyMeasure.falsePositive), str(accuracyMeasure.trueNegative)]], headers=['', 'Classified Positive', 'Classified Negative'])) + '\n')

    precision = accuracyMeasure.truePositive / float(accuracyMeasure.truePositive + accuracyMeasure.falsePositive)
    recall = accuracyMeasure.truePositive / float(accuracyMeasure.truePositive + accuracyMeasure.falseNegative)

    accuracyMeasure.accuracyFile.write('numItems: ' + str(accuracyMeasure.itemCount) + '\n')
    accuracyMeasure.accuracyFile.write('Precision: ' + str(precision) + '\n')
    accuracyMeasure.accuracyFile.write('Recall: ' + str(recall) + '\n')
    accuracyMeasure.accuracyFile.write('PF: ' + str(accuracyMeasure.falsePositive/ float(accuracyMeasure.falsePositive + accuracyMeasure.trueNegative)) + '\n')
    accuracyMeasure.accuracyFile.write('F-Measure: ' + str(2.0 / ((1.0 / precision) + (1.0 / recall))) + '\n')

    accuracyMeasure.truePositiveFile.close()
    accuracyMeasure.trueNegativeFile.close()
    accuracyMeasure.falsePositiveFile.close()
    accuracyMeasure.falseNegativeFile.close()
    accuracyMeasure.skipFile.close()
    accuracyMeasure.invalidFile.close()

    os.chdir('..')
예제 #2
0
def proCons():
    os.chdir('validation-results')

    accuracyMeasure = AccuracyMeasures('pro-cons')

    os.chdir('..')

    os.chdir('pro-cons')
    consFile = open('IntegratedCons.txt', 'r', encoding = "ISO-8859-1")
    cons = re.findall(r'<Cons>(.*?)</Cons>', consFile.read())

    prosFile  = open('IntegratedPros.txt', 'r', encoding = "ISO-8859-1")
    pros = re.findall(r'<Pros>(.*?)</Pros>', prosFile.read())

    for con in cons:
        se = SentimentEngine(con, 'simple')
        sentimentSum = sum([sentence.getAggregatePolarizedSentenceSentiment() for sentence in se.getSentences()])
        sentiment = 0
        sentiment = 1 if sentimentSum > 0 else (0 if sentimentSum < 0 else -1)
        if sentiment == -1:
            # print("Skipping:", con)
            accuracyMeasure.skipFile.write(con + '\n')
        else:
            accuracyMeasure.itemCount += 1

            if sentiment == 0:
                accuracyMeasure.trueNegative += 1
                accuracyMeasure.trueNegativeFile.write(con + '\n')
            elif sentiment == 1:
                accuracyMeasure.falsePositive += 1
                accuracyMeasure.falsePositiveFile.write(con + '\n')

    for pro in pros:
        se = SentimentEngine(pro, 'simple')
        sentimentSum = sum([sentence.getAggregatePolarizedSentenceSentiment() for sentence in se.getSentences()])
        sentiment = 0
        sentiment = 1 if sentimentSum > 0 else (0 if sentimentSum < 0 else -1)
        if sentiment == -1:
            # print("Skipping:", pro)
            accuracyMeasure.skipFile.write(pro + '\n')
        else:
            accuracyMeasure.itemCount += 1

            if sentiment == 0:
                accuracyMeasure.falseNegative += 1
                accuracyMeasure.falseNegativeFile.write(pro + '\n')
            elif sentiment == 1:
                accuracyMeasure.truePositive += 1
                accuracyMeasure.truePositiveFile.write(pro + '\n')

    accuracyMeasure.accuracyFile.write((tabulate([['Actual Positive', str(accuracyMeasure.truePositive), str(accuracyMeasure.falseNegative)], ['Actual Negative', str(accuracyMeasure.falsePositive), str(accuracyMeasure.trueNegative)]], headers=['', 'Classified Positive', 'Classified Negative'])) + '\n')

    precision = accuracyMeasure.truePositive / float(accuracyMeasure.truePositive + accuracyMeasure.falsePositive)
    recall = accuracyMeasure.truePositive / float(accuracyMeasure.truePositive + accuracyMeasure.falseNegative)

    accuracyMeasure.accuracyFile.write('numItems: ' + str(accuracyMeasure.itemCount) + '\n')
    accuracyMeasure.accuracyFile.write('Precision: ' + str(precision) + '\n')
    accuracyMeasure.accuracyFile.write('Recall: ' + str(recall) + '\n')
    accuracyMeasure.accuracyFile.write('PF: ' + str(accuracyMeasure.falsePositive/ float(accuracyMeasure.falsePositive + accuracyMeasure.trueNegative)) + '\n')
    accuracyMeasure.accuracyFile.write('F-Measure: ' + str(2.0 / ((1.0 / precision) + (1.0 / recall))) + '\n')

    accuracyMeasure.truePositiveFile.close()
    accuracyMeasure.trueNegativeFile.close()
    accuracyMeasure.falsePositiveFile.close()
    accuracyMeasure.falseNegativeFile.close()
    accuracyMeasure.skipFile.close()
    accuracyMeasure.invalidFile.close()

    prosFile.close()
    consFile.close()
    
    os.chdir('..')
예제 #3
0
def reviewPolarity():
    os.chdir('validation-results')

    accuracyMeasure = AccuracyMeasures('review_polarity')

    os.chdir('..')

    os.chdir('review_polarity/txt_sentoken')

    os.chdir('neg')

    for filename in os.listdir('.'):
        if '.txt' in filename:
            f = open(filename, 'r')
            se = SentimentEngine(f.read(), 'simple')
            sentimentSum = sum([sentence.getAggregatePolarizedSentenceSentiment() for sentence in se.getSentences()])
            sentiment = 0
            sentiment = 1 if sentimentSum > 0 else (0 if sentimentSum < 0 else -1)
            if sentiment == -1:
                pass
                # print("Skipping:", con)
                # accuracyMeasure.skipFile.write(con + '\n')
            else:
                accuracyMeasure.itemCount += 1

                if sentiment == 0:
                    accuracyMeasure.trueNegative += 1
                    # accuracyMeasure.trueNegativeFile.write(con + '\n')
                elif sentiment == 1:
                    accuracyMeasure.falsePositive += 1
                    # accuracyMeasure.falsePositiveFile.write(con + '\n')
            f.close()

    os.chdir('..')

    os.chdir('pos')

    for filename in os.listdir('.'):
        if '.txt' in filename:
            f = open(filename, 'r')
            se = SentimentEngine(f.read(), 'simple')
            sentimentSum = sum([sentence.getAggregatePolarizedSentenceSentiment() for sentence in se.getSentences()])
            sentiment = 0
            sentiment = 1 if sentimentSum > 0 else (0 if sentimentSum < 0 else -1)
            if sentiment == -1:
                pass
                # print("Skipping:", pro)
                # accuracyMeasure.skipFile.write(pro + '\n')
            else:
                accuracyMeasure.itemCount += 1

                if sentiment == 0:
                    accuracyMeasure.falseNegative += 1
                    #accuracyMeasure.falseNegativeFile.write(pro + '\n')
                elif sentiment == 1:
                    accuracyMeasure.truePositive += 1
                    #accuracyMeasure.truePositiveFile.write(pro + '\n')

            f.close()

    os.chdir('..')

    accuracyMeasure.accuracyFile.write((tabulate([['Actual Positive', str(accuracyMeasure.truePositive), str(accuracyMeasure.falseNegative)], ['Actual Negative', str(accuracyMeasure.falsePositive), str(accuracyMeasure.trueNegative)]], headers=['', 'Classified Positive', 'Classified Negative'])) + '\n')

    precision = accuracyMeasure.truePositive / float(accuracyMeasure.truePositive + accuracyMeasure.falsePositive)
    recall = accuracyMeasure.truePositive / float(accuracyMeasure.truePositive + accuracyMeasure.falseNegative)

    accuracyMeasure.accuracyFile.write('numItems: ' + str(accuracyMeasure.itemCount) + '\n')
    accuracyMeasure.accuracyFile.write('Precision: ' + str(precision) + '\n')
    accuracyMeasure.accuracyFile.write('Recall: ' + str(recall) + '\n')
    accuracyMeasure.accuracyFile.write('PF: ' + str(accuracyMeasure.falsePositive/ float(accuracyMeasure.falsePositive + accuracyMeasure.trueNegative)) + '\n')
    accuracyMeasure.accuracyFile.write('F-Measure: ' + str(2.0 / ((1.0 / precision) + (1.0 / recall))) + '\n')

    accuracyMeasure.truePositiveFile.close()
    accuracyMeasure.trueNegativeFile.close()
    accuracyMeasure.falsePositiveFile.close()
    accuracyMeasure.falseNegativeFile.close()
    accuracyMeasure.skipFile.close()
    accuracyMeasure.invalidFile.close()


    os.chdir('../..')