Exemplo n.º 1
0
def classification_metrics(gold, predict):
    '''
    This function compute and print the classification metrics
    precision, recall and f1 score for different classes using
    the confusion matrix provided by NLTK.
    
    gold- the gold standard/actual values 
    predict- the predicted values

    ''' 
    cm = ConfusionMatrix(gold, predict)

    model_file = open('classification_metrics.txt', 'w')
    sys.stdout = model_file

    print("\t\t---------------------------------------")
    print("\t\t\t\tConfusion Matrix 1")
    print("\t\t---------------------------------------\n")
    print(cm)

    print("\t\t---------------------------------------")
    print("\t\t\t\tConfusion Matrix 2")
    print("\t\t----------------------------------------\n")
    print(cm.pretty_format(sort_by_count=True, show_percents=True, truncate=10))

    labels = tag_set

    true_positives = Counter()
    false_negatives = Counter()
    false_positives = Counter()

    for i in labels:
        for j in labels:
            if i == j:
                true_positives[i] += cm[i, j]
            else:
                false_negatives[i] += cm[i, j]
                false_positives[j] += cm[i, j]

    print("\t---------------------------------------")
    print("\tPrecision Recall F-score")
    print("\t---------------------------------------\n")

    for i in sorted(labels):
        if true_positives[i] == 0:
            fscore = 0
        else:
            precision = true_positives[i] / float(true_positives[i] + false_positives[i])
            recall = true_positives[i] / float(true_positives[i] + false_negatives[i])
            fscore = 2 * (precision * recall) / float(precision + recall)

        print(i, "\t", "%.2f" % precision, "\t", "%.2f" % recall, "\t", "%.2f" % fscore)
def print_ConfusionMatrix(ref, predicted):
    '''Prints confusion matrix with reference as row and predicted as column
    :param ref:
        List of actual genres of tests
    :param predicted:
        List of predicted genres of tests
    :return:
        None
        prints a confusion matrix
    '''
    cm = ConfusionMatrix(ref, predicted)
    Conf_mat = cm.pretty_format(sort_by_count=False, truncate=15)
    print(Conf_mat)
Exemplo n.º 3
0
def two_int(list1, list2):
    matrix = ConfusionMatrix(list1, list2)
    print(matrix)

    labelSet = set(list1 + list2)

    true_positives = Counter()
    false_negatives = Counter()
    false_positives = Counter()

    for i in labelSet:
        for j in labelSet:
            if i == j:
                true_positives[i] += matrix[i, j]
            else:
                false_negatives[i] += matrix[i, j]
                false_positives[j] += matrix[i, j]

    print("TP:", sum(true_positives.values()), true_positives)
    print("FN:", sum(false_negatives.values()), false_negatives)
    print("FP:", sum(false_positives.values()), false_positives)
    print()

    for i in sorted(labelSet):
        if true_positives[i] == 0:
            fscore = 0
        else:
            precision = true_positives[i] / float(true_positives[i] +
                                                  false_positives[i])
            recall = true_positives[i] / float(true_positives[i] +
                                               false_negatives[i])
            fscore = 2 * (precision * recall) / float(precision + recall)
        print("fscore")
        print(i, fscore)
Exemplo n.º 4
0
def eval2(ref, tagged):
    cm = ConfusionMatrix(ref, tagged)

    print cm

    labels = set(ref)

    true_positives = Counter()
    false_negatives = Counter()
    false_positives = Counter()

    for i in labels:
        for j in labels:
            if i == j:
                true_positives[i] += cm[i, j]
            else:
                false_negatives[i] += cm[i, j]
                false_positives[j] += cm[i, j]

    print "TP:", sum(true_positives.values()), true_positives
    print "FN:", sum(false_negatives.values()), false_negatives
    print "FP:", sum(false_positives.values()), false_positives
    print

    for i in sorted(labels):
        if true_positives[i] == 0:
            fscore = 0
        else:
            precision = true_positives[i] / float(true_positives[i] +
                                                  false_positives[i])
            recall = true_positives[i] / float(true_positives[i] +
                                               false_negatives[i])
            fscore = 2 * (precision * recall) / float(precision + recall)
        print i, precision, recall, fscore
Exemplo n.º 5
0
def precision_recall(classifier, testfeats):
    refsets = collections.defaultdict(set)
    testsets = collections.defaultdict(set)

    ref = []
    pred = []
    for i, (feats, label) in enumerate(testfeats):
        refsets[label].add(i)
        observed = classifier.classify(feats)
        testsets[observed].add(i)
        # Create 2 lists for Confusion Matrix
        pred.append(observed)
        ref.append(label)

    cm = ConfusionMatrix(ref, pred)
    print(cm)

    precisions = {}
    recalls = {}

    for label in classifier.labels():
        precisions[label] = precision(refsets[label], testsets[label])
        recalls[label] = recall(refsets[label], testsets[label])

    return precisions, recalls
Exemplo n.º 6
0
def mp(t, clf, k=None):
    trainI, testI = t
    if k:
        ch2 = SelectKBest(chi2, k=k)
        #do chi2 fit on train data
        best = ch2.fit(feat_vecs[trainI], labels[trainI])
        # test data reduced to same k features
        test_feats = best.transform(feat_vecs[testI]).toarray()
        # train data reduced to same k features
        train_feats = best.transform(feat_vecs[trainI]).toarray()
    else:
        test_feats = feat_vecs[testI]
        train_feats = feat_vecs[trainI]
    train_labels = labels[trainI]
    test_labels = labels[testI]
    # make NB model on train data
    fitted = clf.fit(train_feats, train_labels)
    pred = fitted.predict(test_feats)  # predict labels for test
    #set_trace()
    f1 = f1_score(test_labels, pred, average='weighted')
    pre = precision_score(test_labels, pred)
    rec = recall_score(test_labels, pred)
    prf1 = [pre, rec, f1]
    r = []
    m = confusion_matrix(test_labels, pred)
    r.append(m)
    r.append(ConfusionMatrix(test_labels.tolist(), pred.tolist()))
    r.append(classification_report(test_labels, pred))
    r.append(prf1)
    return r
Exemplo n.º 7
0
def metrics_array(complete_base_test, classified):
    expected = []
    provided = []
    for (phrase, classes) in complete_base_test:
        result = classified.classify(phrase)
        expected.append(classes)
        provided.append(result)
    return ConfusionMatrix(expected, provided)
Exemplo n.º 8
0
def main():

    output_file = sys.argv[1]  #passing my-line-answers.txt
    key_file = sys.argv[2]  #passing line-answers.txt

    with open(output_file) as file:  #read my-line-answers.txt
        f1 = [line.rstrip('\n') for line in file
              ]  #each line of file is converted into each element of list
        var1 = [i.split(':"', 1)
                for i in f1]  #each line is split based on colon and quotes
        predicted = {}  #declaring dictionary

    for a in range(
            1, len(var1)
    ):  #dictionary is created is passed instance id as key and sense id as value
        key = var1[a][0]
        value = var1[a][1]
        predicted[key] = value

#Assuming a list and then using for loop reading the values from predicted and then appending them in the new list which is predicted_list.#
    predicted_list = []
    for v in predicted:
        predicted_list.append(predicted[v])

    with open(key_file) as myf1:  #read line-answers.txt
        f2 = [line.rstrip('\n') for line in myf1
              ]  #each line of f1 is converted into each element of list
        var2 = [i.split(':"', 1)
                for i in f2]  #each line is split based on colon and quotes
        observed = {}  #declaring dictionary

    for a in range(1, len(var2)):  # every value from key and value are read
        key = var2[a][
            0]  #for every line in sentence, first part is considered as key
        value = var2[a][1]  #second part is considered as sentence
        observed[key] = value
    #Assuming a list and then using for loop reading the values from observed. and then appending them in the new list which is observed_list.#
    observed_list = []
    for v in observed:
        observed_list.append(observed[v])

    cm = ConfusionMatrix(observed_list,
                         predicted_list)  #calculating the consfusion matrix
    x = 0
    for i in range(len(predicted_list)):
        if predicted_list[i] == observed_list[
                i]:  #comparing both the list values and if it is equal x gets incremented.
            x += 1
    accuracy = (x / len(predicted_list) * 100)  #calculating the accuracy

    #Accuracy and confusion matrix is stored in output file viz wsdreport.txt
    print(
        'Accuracy of the classifier is:',
        accuracy,
        '\n\n'
        'Confusion Matrix: ',
        str(cm),
    )
Exemplo n.º 9
0
def print_confusion_matrix(classificador, base):
   from nltk.metrics import ConfusionMatrix
   esperado = []
   previsto = []
   for (frase, classe) in base:
      resultado = classificador.classify(frase)
      previsto.append(resultado)
      esperado.append(classe)
   print(ConfusionMatrix(esperado, previsto))
Exemplo n.º 10
0
def printConfusionMatrix(classifier, testSet):
    refList = []
    testList = []
    for (features, label) in testSet:
        refList.append(label)
        testList.append(classifier.classify(features))
    print("---------Confusion Matrix---------")
    confMat = ConfusionMatrix(refList, testList)
    print(confMat)
Exemplo n.º 11
0
def display_confusion_matrix(classifier_type, test_set):
    reflist = []
    testlist = []
    for (features, label) in test_set:
        reflist.append(label)
        testlist.append(classifier_type.classify(features))
    print "The confusion matrix"
    cm = ConfusionMatrix(reflist, testlist)
    print cm
Exemplo n.º 12
0
 def MatrizConfusao(base):
     Esperado = []
     Previsto = []
     for (frase, classe) in base:
         result = Classifier.classify(frase)
         Previsto.append(result)
         Esperado.append(classe)
     MatrixConfus = ConfusionMatrix(Esperado, Previsto)
     return MatrixConfus
Exemplo n.º 13
0
def gerarMatrizConfusao(classificador, baseCompletaTeste):
    esperado = []
    previsto = []
    for (frase, classe) in baseCompletaTeste:
        resultado = classificador.classify(frase)
        previsto.append(resultado)
        esperado.append(classe)

    matriz = ConfusionMatrix(esperado, previsto)
    print(matriz)
Exemplo n.º 14
0
 def calculate_confusion_matrix(self, test_data):
     """
     calculate confusion_matrix
     """
     correct_tags = [l for txt, l in test_data]
     predicted_tags = [self.classify(txt) for txt, l in test_data]
     cm = ConfusionMatrix(correct_tags, predicted_tags)
     logger.info(cm)
     self.__confusion_matrix = cm
     return cm
Exemplo n.º 15
0
 def mount_confusion_matrix(self, test_database, suicidal_label,
                            non_suicidal_label):
     result_list = []
     expected_list = []
     to_label = lambda result: suicidal_label if result else non_suicidal_label
     for (phrase, expected_class) in test_database:
         result = to_label(self.is_suicidal(phrase))
         result_list.append(result)
         expected_list.append(to_label(expected_class))
     return ConfusionMatrix(expected_list, result_list, True)
Exemplo n.º 16
0
def confusion(delta, column):

    gold = list()
    test = list()
    for col1, col2 in delta:
        if col1 != '+' and col2 != '-' and 'newsent' not in col1:
            gold.append(col1[column[0]])
            test.append(col2[column[1]])

    cm = ConfusionMatrix(gold, test)
    return cm
Exemplo n.º 17
0
    def training(self, dataset, cv=1, n_iter=1):

        if isinstance(dataset, basestring):
            labeled_symbols, labeled_sequence, codes, labels = self.get_data(
                dataset)
        else:
            labeled_symbols, labeled_sequence, codes, labels = dataset

        self.model = self.learning_model.train(labeled_symbols)

        if cv > 1:
            cv_scores = []
            for i in range(n_iter):
                skf = cross_validation.KFold(len(labels),
                                             n_folds=10,
                                             shuffle=True)

                iter_score = []
                for train_index, test_index in skf:
                    train_data = list(
                        numpy.array(labeled_symbols)[train_index])
                    test_data = list(numpy.array(labeled_symbols)[test_index])
                    self.model = self.learning_model.train(train_data)
                    fold_score = self.model.evaluate(test_data)
                    iter_score.append(fold_score)

                cv_scores.append(numpy.mean(iter_score))

            return cv_scores
        else:
            skf = cross_validation.ShuffleSplit(len(labels),
                                                n_iter=n_iter,
                                                test_size=0.2,
                                                random_state=0)
            training_score = []
            test_score = []
            for train_index, test_index in skf:
                train_data = list(numpy.array(labeled_symbols)[train_index])
                test_data = list(numpy.array(labeled_symbols)[test_index])
                self.model = self.learning_model.train(train_data)
                training_score.append(self.model.evaluate(train_data))
                test_score.append(self.model.evaluate(test_data))

                if n_iter == 1:
                    predict_labels = []
                    for i in range(len(list(codes[test_index]))):
                        predicted_states = self.model.tag(
                            list(codes[test_index])[i])
                        predict_labels.append(predicted_states[0][1])
                    self.ConfusionMatrix = ConfusionMatrix(
                        list(labels[test_index]), predict_labels)

            return training_score, test_score
Exemplo n.º 18
0
def imprimir_matriz_confusao_base_teste():
    sequencia_classes_esperadas = []
    sequencia_palavras_obtidas = []

    for (frase, classe) in base_teste_classificada:
        sequencia_classes_esperadas.append(classe)

        resultado_classificacao = classificador_treinamento.classify(frase)
        sequencia_palavras_obtidas.append(resultado_classificacao)

    matriz_cofusao = ConfusionMatrix(sequencia_classes_esperadas,
                                     sequencia_palavras_obtidas)
    print(matriz_cofusao)
Exemplo n.º 19
0
def analiseSentimento(messageSenti):

    frasescomstemmingtreinamento = aplicastemmer(basetreinamento) 
    frasescomstemmingteste = aplicastemmer(baseteste)

    palavrastreinamento = buscapalavras(frasescomstemmingtreinamento)
    palavrasteste = buscapalavras(frasescomstemmingteste)

    frequenciatreinamento = buscafrequencia(palavrastreinamento) 
    frequenciateste = buscafrequencia(palavrasteste)
    print(frequenciatreinamento)
    print(frequenciateste)

    #caracteristicasfrase = extratorpalavras(['am', 'nov', 'dia'])

    basecompletatreinamento = nltk.classify.apply_features(extratorpalavras, frasescomstemmingtreinamento) 
    basecompletateste = nltk.classify.apply_features(extratorpalavras, frasescomstemmingteste)

    classificador = nltk.NaiveBayesClassifier.train(basecompletatreinamento) 
    print(classificador.labels())
    print(nltk.classify.accuracy(classificador, basecompletateste))

    erros = [] 
    for (frase, classe) in basecompletateste: 
        resultado = classificador.classify(frase) 
        if resultado != classe: 
            erros.append((classe, resultado, frase))

    
    esperado = [] 
    previsto = [] 
    for (frase, classe) in basecompletateste: 
        resultado = classificador.classify(frase) 
        previsto.append(resultado) 
        esperado.append(classe)

    matriz = ConfusionMatrix(esperado, previsto) 
    print(matriz)


    testestemming = [] 
    stemmer = nltk.stem.RSLPStemmer() 
    for (palavrastreinamento) in messageSenti.split(): 
        comstem = [p for p in palavrastreinamento.split()] 
        testestemming.append(str(stemmer.stem(comstem[0])))

    novo = extratorpalavras(testestemming) 
    distribuicao = classificador.prob_classify(novo)
    resultado = classificador.classify(novo)
    return resultado
Exemplo n.º 20
0
    def testing(self, inputFile, outputFile):
        "fungsi testing menguji "

        fileModel = xlrd.open_workbook(self.fileModel)
        dataModel = fileModel.sheet_by_index(0)

        fileResult = openpyxl.Workbook()
        dataResult = fileResult.active

        fileTest = xlrd.open_workbook(inputFile)
        dataTest = fileTest.sheet_by_index(0)
        dataTestLen = dataTest.nrows - 1

        decisionTrue = 0
        decisionError = 0
        allCategory = []
        allDec = []

        for i in range(1, dataTestLen + 1):
            # print (i)
            article = dataTest.cell(i, 0).value
            decision_actually = dataTest.cell(i, 1).value
            decision_test = self.classify(article, dataModel)

            dataResult.append([article, decision_actually, decision_test])

            if decision_test == 'ERROR':
                decisionError += 1
            elif decision_actually == decision_test:
                decisionTrue += 1

            allCategory.append(decision_actually)
            allDec.append(decision_test)

        confisionMatrix = ConfusionMatrix(allCategory, allDec)
        print(confisionMatrix)

        accuracy = (decisionTrue / (dataTestLen - decisionError)) * 100
        dataResult.append([
            ' ', 'DECISION TRUE', 'DECISION FALSE', 'DECISION ERROR',
            'ACCURACY'
        ])
        dataResult.append([
            ' ', decisionTrue, (dataTestLen - decisionError - decisionTrue),
            decisionError, accuracy
        ])
        fileResult.save(outputFile)
        return
Exemplo n.º 21
0
def evaluate(model, loss_fn, data_iterator, metrics, params, num_steps,hash_tb={}):
    # set model to evaluation mode
    model.eval()

    # summary for current eval loop
    summ = []
    true = []
    predicted = []
    # compute metrics over the dataset
    for _ in range(num_steps):
        # fetch the next evaluation batch
        data_batch, labels_batch = next(data_iterator)
        
        # compute model output
        output_batch = model(data_batch)
        loss = loss_fn(output_batch, labels_batch)
        var = labels_batch.view(-1).numpy().tolist()
        var_indx = [var.index(i) for i in var if i >= 0]
        pred = [torch.argmax(i).item() for i in output_batch]
        tru = [var[i] for i in var_indx]
        pre = [pred[i] for i in var_indx]
        true += tru
        predicted += pre
        # extract data from torch Variable, move to cpu, convert to numpy arrays
        output_batch = output_batch.data.cpu().numpy()
        labels_batch = labels_batch.data.cpu().numpy()

        # compute all metrics on this batch
        summary_batch = {metric: metrics[metric](output_batch, labels_batch)
                         for metric in metrics}
        summary_batch['loss'] = loss.item()
        summ.append(summary_batch)

    hash_t = dict((v,k) for k,v in hash_tb.items())
    true = [hash_t[i] for i in true]
    predicted = [hash_t[i] for i in predicted]
    conf = ConfusionMatrix(true, predicted)
    print(conf)
    #print(Counter(true))
    #print(Counter(predicted))
    #print(len(predicted))
    #print(len(true))
    # compute mean of all metrics in summary
    metrics_mean = {metric:np.mean([x[metric] for x in summ]) for metric in summ[0]} 
    metrics_string = " ; ".join("{}: {:05.3f}".format(k, v) for k, v in metrics_mean.items())
    logging.info("- Eval metrics : " + metrics_string)
    return metrics_mean
Exemplo n.º 22
0
    def _confusion_cached(self, gold):
        """
        Inner function used after ``gold`` is converted to a
        ``tuple(tuple(tuple(str, str)))``. That way, we can use caching on
        creating a ConfusionMatrix.

        :param gold: The list of tagged sentences to run the tagger with,
            also used as the reference values in the generated confusion matrix.
        :type gold: tuple(tuple(tuple(str, str)))
        :rtype: ConfusionMatrix
        """

        tagged_sents = self.tag_sents(untag(sent) for sent in gold)
        gold_tokens = [token for _word, token in chain.from_iterable(gold)]
        test_tokens = [
            token for _word, token in chain.from_iterable(tagged_sents)
        ]
        return ConfusionMatrix(gold_tokens, test_tokens)
Exemplo n.º 23
0
def evaluate3(ref, tagged):
    print '\n Confusion matrix:\n',
    cm = ConfusionMatrix(ref, tagged)
    print cm
    print
    print 'Accuracy:', accuracy_score(ref, tagged)
    print
    print "Macro Averaged measures:"
    print 'F1 score Macro:', f1_score(ref, tagged, average='macro')
    print 'Recall Macro:', recall_score(ref, tagged, average='macro')
    print 'Precision Macro:', precision_score(ref, tagged, average='macro')
    print
    print "Micro Averaged measures:"
    print 'F1 score Micro:', f1_score(ref, tagged, average='micro')
    print 'Recall Micro:', recall_score(ref, tagged, average='micro')
    print 'Precision Micro:', precision_score(ref, tagged, average='micro')
    print
    print '\n Clasification report:\n', classification_report(ref, tagged)
    print
Exemplo n.º 24
0
def testOneFile(fileName):
    fileResult = openpyxl.Workbook()
    dataResult = fileResult.active

    fileTest = xlrd.open_workbook(fileName)
    dataTest = fileTest.sheet_by_index(0)
    dataTestLen = dataTest.nrows - 1

    decisionTrue = 0
    decisionError = 0
    allCategory = []
    allDec = []

    for i in range(1, dataTestLen + 1):
        # print (i)
        article = dataTest.cell(i, 0).value
        decision_actually = dataTest.cell(i, 1).value
        decision_test = testOneData(article)

        # print decision_actually, decision_test

        # print decision_actually, '----------', decision_test
        dataResult.append([article, decision_actually, decision_test])

        if decision_test == 'ERROR':
            decisionError += 1
        elif decision_actually == decision_test:
            decisionTrue += 1

        allCategory.append(decision_actually)
        allDec.append(decision_test)

    confisionMatrix = ConfusionMatrix(allCategory, allDec)
    print(confisionMatrix)

    accuracy = (decisionTrue / (dataTestLen - decisionError)) * 100
    dataResult.append(
        [' ', 'DECISION TRUE', 'DECISION FALSE', 'DECISION ERROR', 'ACCURACY'])
    dataResult.append([
        ' ', decisionTrue, (dataTestLen - decisionError - decisionTrue),
        decisionError, accuracy
    ])
    fileResult.save("RESULT_train-train.xlsx")
Exemplo n.º 25
0
def evaluate_f1(y_true, y_pred, verbose=False, preMsg=None):
    print('verbose value is ', verbose)
    if verbose:
        print ConfusionMatrix(y_true, y_pred)
    z_true = y_true
    z_pred = y_pred
    label_dict = {x: i for i, x in enumerate(list(set(z_true) | set(z_pred)))}
    freq_dict = collections.Counter(z_true)
    z_true = [label_dict[x] for x in z_true]
    z_pred = [label_dict[x] for x in z_pred]
    f1s = f1_score(z_true, z_pred, average=None)
    print(str(preMsg) + 'F1 score' + str(f1s))
    rs = recall_score(z_true, z_pred, average=None)
    ps = precision_score(z_true, z_pred, average=None)
    results = []
    f1_none = []
    print(str(preMsg) + str(label_dict))
    for i in label_dict:
        print(
            "{5} The tag \'{0}\' has {1} elements and recall,precision,f1 ={3},{4}, {2}"
            .format(i, freq_dict[i], f1s[label_dict[i]], rs[label_dict[i]],
                    ps[label_dict[i]], preMsg))
        if i != 'None' and i != '|O':
            f1_none = f1_none + [
                (rs[label_dict[i]], ps[label_dict[i]], f1s[label_dict[i]],
                 freq_dict[i]),
            ]
    all_medical_words = sum([z[3] for z in f1_none])
    macro_averaged_recall = sum([float(z[0]) * float(z[3]) for z in f1_none
                                 ]) / sum([float(z[3]) for z in f1_none])
    macro_averaged_precision = sum(
        [float(z[1]) * float(z[3])
         for z in f1_none]) / sum([float(z[3]) for z in f1_none])
    if (macro_averaged_recall + macro_averaged_precision) == 0.0:
        macro_averaged_f = 0.0
    else:
        macro_averaged_f = 2.0 * macro_averaged_recall * macro_averaged_precision / (
            macro_averaged_recall + macro_averaged_precision)
    print(
        "{4} All medical tags  have {0} elements and recall,precision,f1 ={1},{2}, {3}"
        .format(all_medical_words, macro_averaged_recall,
                macro_averaged_precision, macro_averaged_f, preMsg))
    return macro_averaged_f
def classification_result(classifier, test_set):
    refsets = collections.defaultdict(set)
    testsets = collections.defaultdict(set)
    reflist = []
    testlist = []
    for i, (tweet, label) in enumerate(test_set):
        refsets[label].add(i)
        reflist.append(label)
        observed = classifier.classify(tweet)
        testsets[observed].add(i)
        testlist.append(observed)
    print(len(refsets['1']))
    print("Accuracy : ", nltk.classify.accuracy(classifier, test_set) * 100)
    print("Precision Pos: ", precision(refsets['1'], testsets['1']) * 100)
    print("Recall Pos: ", recall(refsets['1'], testsets['1']) * 100)
    print("F Measure Pos: ", f_measure(refsets['1'], testsets['1']) * 100)
    print("Precision Neg: ", precision(refsets['0'], testsets['0']) * 100)
    print("Recall Neg: ", recall(refsets['0'], testsets['0']) * 100)
    print("F Measure Neg: ", f_measure(refsets['0'], testsets['0']) * 100)
    print("Confusion Metrics : \n", ConfusionMatrix(reflist, testlist))
Exemplo n.º 27
0
    def measuring_accuracy(self):
        """Testing the model *accuracy*"""
        print(
            "Accuracy:", nltk.classify.accuracy(self.classifier, self.test_set)
        )
        self.classifier.show_most_informative_features(20)
        """Measuring **Precision,Recall,F-Measure** of a classifier.
             Finding **Confusion matrix**"""
        actual_set = collections.defaultdict(set)
        predicted_set = collections.defaultdict(set)
        # cm here refers to confusion matrix
        actual_set_cm = []
        predicted_set_cm = []
        for i, (feature, label) in enumerate(self.test_set):
            actual_set[label].add(i)
            actual_set_cm.append(label)
            predicted_label = self.classifier.classify(feature)
            predicted_set[predicted_label].add(i)
            predicted_set_cm.append(predicted_label)

        for category in self.data.keys():
            print(
                category,
                "precision :",
                precision(actual_set[category], predicted_set[category]),
            )
            print(
                category,
                "recall :",
                recall(actual_set[category], predicted_set[category]),
            )
            print(
                category,
                "f-measure :",
                f_measure(actual_set[category], predicted_set[category]),
            )
        confusion_matrix = ConfusionMatrix(actual_set_cm, predicted_set_cm)
        print("Confusion Matrix")
        print(confusion_matrix)
Exemplo n.º 28
0
    print "Loading test data..."
    testset = np.load(path)

    # Load model
    print "Loading model..."
    with open(model, 'rb') as fmodel:
        cls = pickle.load(fmodel)

    # Run test
    sys.stdout.write("Testing:")
    pred = []
    idx = 0
    for i in testset[:, 0]:
        idx += 1
        if idx % 1000 == 0:
            sys.stdout.write(".")
            sys.stdout.flush()
        pred.append(str(cls.classify(i)))

    # Result
    #  * Convert Ref Label to ASCII
    ref = [str(label) for label in testset[:, 1]]
    accuracy = scores.accuracy(ref, pred)
    print "\nAccuracy: %.4f" % accuracy
    cm = ConfusionMatrix(ref, pred)
    print "Confusion Matrix: "
    print (cm.pretty_format(sort_by_count=True, show_percents=True, truncate=9))

    # Finished?
    print "DONE!!"
Exemplo n.º 29
0
def get_ConfusionMatrix(true, predicted):
    print "Confusion Matrix of combined folds (partial evaluation)"
    true_chain = list(itertools.chain.from_iterable(true))
    predicted_chain = list(itertools.chain.from_iterable(predicted))
    print ConfusionMatrix(true_chain, predicted_chain)
Exemplo n.º 30
0
class TestAnalyser:

    if __name__ == "__main__":
        #método construtor
        print("Teste de análise de sentimentos!")

        sessionTemp = Sessao()

        emailsTemp = sessionTemp.query()

        #impressão dos result sets da query
        print("Lista de emails")
        print(emailsTemp)
        '''
        base = [('eu sou admirada por muitos','alegria'),
                ('me sinto completamente amado','alegria'),
                ('amar e maravilhoso','alegria'),
                ('estou me sentindo muito animado novamente','alegria'),
                ('eu estou muito bem hoje','alegria'),
                ('que belo dia para dirigir um carro novo','alegria'),
                ('o dia está muito bonito','alegria'),
                ('estou contente com o resultado do teste que fiz no dia de ontem','alegria'),
                ('o amor e lindo','alegria'),
                ('nossa amizade e amor vai durar para sempre', 'alegria'),
                ('estou amedrontado', 'medo'),
                ('ele esta me ameacando a dias', 'medo'),
                ('isso me deixa apavorada', 'medo'),
                ('este lugar e apavorante', 'medo'),
                ('se perdermos outro jogo seremos eliminados e isso me deixa com pavor', 'medo'),
                ('tome cuidado com o lobisomem', 'medo'),
                ('se eles descobrirem estamos encrencados', 'medo'),
                ('estou tremendo de medo', 'medo'),
                ('eu tenho muito medo dele', 'medo'),
                ('estou com medo do resultado dos meus testes', 'medo')]

        '''

        #print(base[1])

        basetreinamento = [
            ('eu sou admirada por muitos', 'alegria'),
            ('me sinto completamente amado', 'alegria'),
            ('amar e maravilhoso', 'alegria'),
            ('estou me sentindo muito animado novamente', 'alegria'),
            ('eu estou muito bem hoje', 'alegria'),
            ('que belo dia para dirigir um carro novo', 'alegria'),
            ('o dia está muito bonito', 'alegria'),
            ('estou contente com o resultado do teste que fiz no dia de ontem',
             'alegria'),
            ('o amor e lindo', 'alegria'),
            ('estou muito satisfeito com seu trabalho', 'alegria'),
            ('sinto prazer em trabalhar com voces', 'alegria'),
            ('sua equipe e otima', 'alegria'),
            ('recomendo seu trabalho', 'alegria'),
            ('voces são muito competentes', 'alegria'),
            ('ótimo trabalho', 'alegria'),
            ('se precisar é só chamar', 'alegria'),
            ('conte comigo', 'alegria'),
            ('obrigado', 'alegria'),
            ('estou feliz', 'alegria'),
            ('estou contente', 'alegria'),
            ('estou alegre', 'alegria'),
            ('tenha um bom dia', 'alegria'),
            ('voce é importante para nós', 'alegria'),
            ('nossa amizade e amor vai durar para sempre', 'alegria'),
            ('estou feliz', 'alegria'),
            ('estou tranquilo', 'alegria'),
            ('estou animado', 'alegria'),
            ('estou ótimo', 'alegria'),
            ('estou entusiasmado', 'alegria'),
            ('estou contente', 'alegria'),
            ('você e abominável', 'desgosto'),
            ('abomino a maneira como você age', 'desgosto'),
            ('estou adoentado', 'desgosto'),
            ('meu pai esta adoentado', 'desgosto'),
            ('estamos todos doentes', 'desgosto'),
            ('essa situação e muito amarga', 'desgosto'),
            ('disse adeus amargamente', 'desgosto'),
            ('tenho antipatia por aquela pessoa', 'desgosto'),
            ('como pode ser tão antipática!', 'desgosto'),
            ('que horrível seu asqueroso', 'desgosto'),
            ('tenho aversão agente como você', 'desgosto'),
            ('isso tudo e só chateação', 'desgosto'),
            ('estou muito chateada com suas mentiras', 'desgosto'),
            ('tão desagradável', 'desgosto'),
            ('isso me desagrada completamente', 'desgosto'),
            ('te desagrada isso', 'desgosto'),
            ('estou com enjôos terríveis', 'desgosto'),
            ('todos estão enfermos', 'desgosto'),
            ('foi uma enfermidade terrível', 'desgosto'),
            ('isso e muito grave', 'desgosto'),
            ('não seja tão grosseiro', 'desgosto'),
            ('você fez uma manobra ilegal', 'desgosto'),
            ('sua indecente, não tem vergonha?', 'desgosto'),
            ('você e malvado com as crianças', 'desgosto'),
            ('que comentário maldoso', 'desgosto'),
            ('sem escrúpulos você manipula a tudo', 'desgosto'),
            ('sinto repulsa por você', 'desgosto'),
            ('e repulsivo a maneira como olha para as pessoas', 'desgosto'),
            ('estou indisposta', 'desgosto'),
            ('a indisposição me atacou hoje', 'desgosto'),
            ('acho que vou vomitar', 'desgosto'),
            ('tem muito vomito lá', 'desgosto'),
            ('que incomodo essa dor', 'desgosto'),
            ('não me incomode nunca mais', 'desgosto'),
            ('suas bobagens estão nos incomodando', 'desgosto'),
            ('que nojo olha toda essa sujeira', 'desgosto'),
            ('como isso está sujo', 'desgosto'),
            ('tenho náuseas só de lembrar', 'desgosto'),
            # ('me sinto nauseada com o cheiro desta comida','desgosto'),
            # ('você esta obstruindo a passagem de ar','desgosto'),
            # ('você esta terrivelmente doente','desgosto'),
            # ('olhe que feia esta roupa','desgosto'),
            # ('que atitude deplorável','desgosto'),
            # ('nossa como você e feio','desgosto'),
            # ('muito mau tudo isso','desgosto'),
            # ('estou desgostoso com você','desgosto'),
            # ('você cortou o meu assunto','desgosto'),
            # ('para que tanta chateação?','desgosto'),
            # ('esse perfume e enjoativo','desgosto'),
            # ('ser perigoso não nada bom','desgosto'),
            # ('você e perigoso demais para minha filhas','desgosto'),
            # ('que fetido este esgoto','desgosto'),
            # ('que fedido você esta','desgosto'),
            # ('que cachorro malcheiroso','desgosto'),
            # ('hora que ultraje','desgosto'),
            # ('e ultrajante da sua parte','desgosto'),
            # ('situação desagradável essa','desgosto'),
            # ('você só me da desgosto','desgosto'),
            # ('tenho aversão a pessoas assim','desgosto'),
            # ('antipatia e um mal da sociedade','desgosto'),
            # ('que criatura abominável','desgosto'),
            # ('e depressiva a maneira como você vê o mundo','desgosto'),
            # ('me desagrada sua presença na festa','desgosto'),
            # ('sinto asco dessa coisa','desgosto'),
            # ('que hediondo!','desgosto'),
            # ('vou golfar o cafe fora','desgosto'),
            # ('hora que garota detestável!','desgosto'),
            # ('estou nauseada','desgosto'),
            # ('isso que você disse foi muito grave','desgosto'),
            # ('não seja obsceno na frente das crianças','desgosto'),
            # ('não seja rude com as visitas','desgosto'),
            # ('esse assunto me da repulsa','desgosto'),
            # ('que criança terrivelmente travessa','desgosto'),
            # ('que criança mal educada','desgosto'),
            # ('estou indisposta te dar o divorcio','desgosto'),
            # ('tão patetico, não tem nada mais rude para dizer?','desgosto'),
            # ('por motivo torpe, com emprego de meio cruel e com impossibilidade de defesa para a vítima','desgosto'),
            # ('a inveja e tão vil e vergonhosa que ninguem se atreve a confessá-la','desgosto'),
            # ('o miserável receio de ser sentimental e o mais vil de todos os receios modernos','desgosto'),
            # ('travesso gato quando fica com saudades do dono mija no sapato','desgosto'),
            # ('isso e um ato detestável e covarde','desgosto'),
            # ('revelam apenas o que e destrutivo e detestável para o povo','desgosto'),
            # ('não sei como e a vida de um patife, mais a de um homem honesto e abominável','desgosto'),
            # ('há coisas que temos que suportar para não acharmos a vida insuportável','desgosto'),
            # ('as injurias do tempo e as injustiças do homem','desgosto'),
            # ('odioso e desumano','desgosto'),
            # ('você não publicará conteúdo odiento, pornográfico ou ameaçador','desgosto'),
            # ('rancoroso e reprimido','desgosto'),
            # ('não há animal mais degradante, estúpido, covarde, lamentável, egoísta, rancoroso e invejoso do que o homem','desgosto'),
            # ('o virulento debate ente políticos','desgosto'),
            ('por favor não me abandone', 'tristeza'),
            ('não quero ficar sozinha', 'tristeza'),
            ('não me deixe sozinha', 'tristeza'),
            ('estou abatida', 'tristeza'),
            ('ele esta todo abatido', 'tristeza'),
            ('tão triste suas palavras', 'tristeza'),
            ('seu amor não e mais meu', 'tristeza'),
            ('estou aborrecida', 'tristeza'),
            ('isso vai me aborrecer', 'tristeza'),
            ('estou com muita aflição', 'tristeza'),
            ('me aflige o modo como fala', 'tristeza'),
            ('estou em agonia com meu intimo', 'tristeza'),
            ('não quero fazer nada', 'tristeza'),
            ('me sinto ansiosa e tensa', 'tristeza'),
            ('não consigo parar de chorar', 'tristeza'),
            ('não consigo segurar as lagrimas', 'tristeza'),
            # ('e muita dor perder um ente querido','tristeza'),
            # ('estou realmente arrependida','tristeza'),
            # ('acho que o carma volta, pois agora sou eu quem sofro','tristeza'),
            # ('você não cumpriu suas promessas','tristeza'),
            # ('me sinto amargurada','tristeza'),
            # ('coitado esta tão triste','tristeza'),
            # ('já e tarde de mais','tristeza'),
            # ('nosso amor acabou','tristeza'),
            # ('essa noite machuca só para mim','tristeza'),
            # ('eu não estou mais no seu coração','tristeza'),
            # ('você mudou comigo','tristeza'),
            # ('quando eu penso em você realmente dói','tristeza'),
            # ('como se fosse nada você vê minhas lagrimas','tristeza'),
            # ('você disse cruelmente que não se arrependeu','tristeza'),
            # ('eu nunca mais vou te ver','tristeza'),
            # ('ela esta com depressão','tristeza'),
            # ('a depressão aflige as pessoas','tristeza'),
            # ('estar depressivo e muito ruim','tristeza'),
            # ('estou derrotada e deprimida depois deste dia','tristeza'),
            # ('e comovente te ver dessa maneira','tristeza'),
            # ('e comovente ver o que os filhos do brasil passam','tristeza'),
            # ('como me sinto culpada','tristeza'),
            # ('estou abatida','tristeza'),
            # ('a ansiedade tomou conta de mim','tristeza'),
            # ('as pessoas não gostam do meu jeito','tristeza'),
            # ('adeus passamos bons momentos juntos','tristeza'),
            # ('sinto sua falta','tristeza'),
            # ('ele não gostou da minha comida','tristeza'),
            # ('estou sem dinheiro para a comida','tristeza'),
            # ('queria que fosse o ultimo dia da minha vida','tristeza'),
            # ('você está com vergonha de mim','tristeza'),
            # ('ela não aceitou a minha proposta','tristeza'),
            # ('era o meu ultimo centavo','tristeza'),
            # ('reprovei de ano na faculdade','tristeza'),
            # ('afinal você só sabe me desfazer','tristeza'),
            # ('eu falhei em tudo nessa vida','tristeza'),
            # ('eu fui muito humilhado','tristeza'),
            # ('e uma história muito triste','tristeza'),
            # ('ninguem acredita em mim','tristeza'),
            # ('eu não sirvo para nada mesmo','tristeza'),
            # ('droga, não faço nada direito','tristeza'),
            # ('sofrimento em dobro na minha vida','tristeza'),
            # ('fui demitida essa semana','tristeza'),
            ('as crianças sofrem ainda mais que os adultos', 'tristeza'),
            ('pra mim um dia e ruim, o outro e pior', 'tristeza'),
            ('de repente perdi o apetite', 'tristeza'),
            ('oh que dia infeliz', 'tristeza'),
            ('estamos afundados em contas', 'tristeza'),
            ('nem um milagre pode nos salvar', 'tristeza'),
            ('só me resta a esperança', 'tristeza'),
            ('pior que isso não pode ficar', 'tristeza'),
            ('meu salário e baixo', 'tristeza'),
            ('não passei no vestibular', 'tristeza'),
            ('ninguem se importa comigo', 'tristeza'),
            ('ninguem lembrou do meu aniversário', 'tristeza'),
            ('tenho tanto azar', 'tristeza'),
            # ('o gosto da vingança e amargo','tristeza'),
            # ('sou uma mulher amargurada depois de que você me deixou','tristeza'),
            # ('estou desanimada com a vida','tristeza'),
            # ('e um desanimo só coitadinha','tristeza'),
            # ('a derrota e depressiva','tristeza'),
            # ('discriminar e desumano','tristeza'),
            # ('que desanimo','tristeza'),
            # ('e uma desonra para o pais','tristeza'),
            # ('a preocupação deveria nos levar a ação não a depressão','tristeza'),
            # ('passamos ao desalento e a loucura','tristeza'),
            # ('aquele que nunca viu a tristeza nunca reconhecerá a alegria','tristeza'),
            # ('cuidado com a tristeza ela e um vicio','tristeza'),
            ('eu imploro, não me matem!', 'medo'),
            ('tem certeza que não e perigoso?', 'medo'),
            ('não tenho certeza se e seguro', 'medo'),
            ('tenho que correr pra não me pegarem', 'medo'),
            ('socorro! ele queria roubar os meus doces!', 'medo'),
            ('esse cara está me perseguindo', 'medo'),
            ('não entro lá, e um lugar muito perigoso', 'medo'),
            ('este lugar continua assustador', 'medo'),
            ('na selva tem muitos animais perigosos', 'medo'),
            ('avancem com cautela', 'medo'),
            ('este lugar está silencioso de mais, cuidado!', 'medo'),
            ('por favor, deixe-me viver!', 'medo'),
            ('vou ficar sem mesada se tirar nota baixa', 'medo'),
            ('parece que tem olhos nos vigiando', 'medo'),
            ('eu temo que a sentença do juiz possa ser negativa', 'medo'),
            ('mas essa missão e arriscada', 'medo'),
            ('salvem-se quem puder!', 'medo'),
            ('meu plano pode ser descoberto', 'medo'),
            ('não tive culpa, juro não fui eu', 'medo'),
            ('tenho que tomar cuidado com o lobisomem', 'medo'),
            ('se eu não achar, ele vai descobrir a verdade', 'medo'),
            ('meu deus, ele desapareceu!', 'medo'),
            ('tomara que eles não me vejam daqui!', 'medo'),
            ('mantenha isso em segredo, se descobrirem estaremos ferrados',
             'medo'),
            ('por favor, me soltem, eu sou inocente', 'medo'),
            ('estou ouvindo passos atrás de mim', 'medo'),
            ('eu vou pedir socorro!', 'medo'),
            ('cuidado com as curvas na estrada', 'medo'),
            ('não sei não, parece perigoso', 'medo'),
            ('estou tremendo de medo!', 'medo'),
            ('socorro, eu vou cair!', 'medo'),

            # ('eu não vou ate a floresta negra, e muito perigoso','medo'),
            # ('ouço passos na minha direção','medo'),
            # ('acho que está arriscado de mais','medo'),
            # ('vamos voltar, e muito perigoso','medo'),
            # ('fuja, se não acabaremos mortos','medo'),
            # ('receio por não me livrar desta situação','medo'),
            # ('socorro! ele está armado!','medo'),
            # ('ei cuidado, você vai bater no poste!','medo'),
            # ('socorro, nós estamos afundando','medo'),
            # ('e serio, cuidado com essa arma!','medo'),
            # ('os tubarões estão atacando!','medo'),
            # ('sinto arrepios quando fico sozinho no escuro','medo'),
            # ('calma, eu não estou com o dinheiro','medo'),
            # ('eu acho que estou sendo enganado','medo'),
            # ('ligeiro, temos que fugir depressa','medo'),
            # ('tem um crocodilo selvagem vindo para cá','medo'),
            # ('se ficarmos quietos eles não vão nos achar','medo'),
            # ('fuja! o tigre parece faminto','medo'),
            # ('estou sem saída, preciso de um milagre','medo'),
            # ('tire isso de mim! socorro!','medo'),
            # ('não sei nadar, vou me afogar!','medo'),
            # ('não tenho certeza se e seguro','medo'),
            # ('vou apanhar se meus pais verem meu boletim','medo'),
            # ('não consigo sair daqui!','medo'),
            # ('se sair tão tarde, poderei ser assaltada','medo'),
            # ('não me deixe por favor!','medo'),
            # ('espere, não pode me largar aqui sozinho','medo'),
            # ('temo pela sua segurança','medo'),
            # ('eu te entrego o dinheiro, por favor não me mate!','medo'),
            # ('ele vai levar todo o meu dinheiro','medo'),
            # ('não dirija tão rápido assim','medo'),
            # ('me descobriram, irão me prender!','medo'),
            # ('só espero que não me façam nenhum mal','medo'),
            # ('vou me afogar, me ajudem a sair da água','medo'),
            # ('não estaremos a salvo aqui','medo'),
            # ('não quero nem pensar no que pode acontecer','medo'),
            # ('nessa cidade e uma desgraça atrás da outra','medo'),
            # ('alguem esta me ligando, estou assustado','medo'),
            # ('isso não e remedio, não me matem','medo'),
            # ('eu não confio nele, tenho que ter cautela','medo'),
            # ('muita cautela','medo'),
            # ('vou ser descoberto, meu deus','medo'),
            # ('receio que terei de ir','medo'),
            # ('a noite e muito perigosa','medo'),
            # ('estou estremecendo com essa casa','medo'),
            # ('olha aquela criatura se movendo monstruosamente','medo'),
            # ('não agüento este suspense','medo'),
            # ('afugente os cães','medo'),
            # ('estou chocado e amedrontado com este assassinato brutal','medo'),
            # ('e preciso afugenta com ímpeto este medo do inferno','medo'),
            # ('seu políticos usam suas forças para afugentar e amedrontar o povo','medo'),
            # ('o objetivo disso e apenas me amedrontar mais','medo'),
            ('isso me apavora', 'medo')
        ]

        baseteste = [
            ('muito obrigado por tudo', 'alegria'),
            ('agradeço de coração', 'alegria'),
            ('desejo paz', 'alegria'),
            ('desejo felicidades', 'alegria'),
            ('desejo afeto', 'alegria'),
            ('desejo carinho', 'alegria'),
            ('desejo respeito', 'alegria'),
            ('desejo um feliz aniversário', 'alegria'),
            ('sempre às ordens', 'alegria'),
            ('nosso trabalho é ajuda-lo', 'alegria'),
            ('vocês são excelente', 'alegria'),
            ('vocês são ótimos', 'alegria'),
            ('vocês são recomendáveis', 'alegria'),
            ('sempre vou recomendar vocês', 'alegria'),
            ('paragebéns pela equipe', 'alegria'),
            ('bela equipe vocês tem', 'alegria'),
            ('estou muito feliz', 'alegria'),
            ('estou muito contente', 'alegria'),
            ('estou muito alegre', 'alegria'),
            ('estou alegre', 'alegria'),
            ('se precisar é só chamar', 'alegria'),
            ('conte comigo', 'alegria'),
            ('obrigado', 'alegria'),
            ('estou feliz', 'alegria'),
            ('estou contente', 'alegria'),
            ('estou alegre', 'alegria'),
            ('tenha um bom dia', 'alegria'),
            ('voce é importante para nós', 'alegria'),
            ('nossa amizade e amor vai durar para sempre', 'alegria'),
            ('estou feliz', 'alegria'),
            ('estou tranquilo', 'alegria'),
            ('estou animado', 'alegria'),
            ('estou ótimo', 'alegria'),
            ('estou entusiasmado', 'alegria'),
            ('estou contente', 'alegria'),
            ('o mundo e feio como o pecado', 'desgosto'),
            ('a coisa mais difícil de esconder e aquilo que não existe',
             'desgosto'),
            ('você errou feio aquele gol', 'desgosto'),
            ('nunca vou me casar sou muito feia', 'desgosto'),
            ('os golpes da adversidade são terrivelmente amargos', 'desgosto'),
            ('os homem ficam terrivelmente chatos', 'desgosto'),
            ('abominavelmente convencido', 'desgosto'),
            ('terrivelmente irritado', 'desgosto'),
            ('as instituições publicas estão terrivelmente decadentes',
             'desgosto'),
            ('a população viveu em isolamento por muito tempo', 'desgosto'),
            ('estou terrivelmente preocupada', 'desgosto'),
            ('o nacionalismo e uma doença infantil', 'desgosto'),
            ('se me es antipático a minha negação esta pronta', 'desgosto'),
            ('muitos documentários sobre esse casal antipático', 'desgosto'),
            ('sua beleza não desfaça sua antipatia', 'desgosto'),
            ('esta e uma experiência desagradável', 'desgosto'),
            ('desagradável estrago nos banheiros', 'desgosto'),
            ('o mais irritante no amor e que se trata de um crime que precisa de um cúmplice',
             'desgosto'),
            ('a situação nos causa grande incomodo', 'desgosto'),
            ('estou preocupado com o incomodo na garganta', 'desgosto'),
            ('simplesmente não quero amolação da policia', 'desgosto'),
            ('você e uma criaturinha muito impertinente', 'desgosto'),
            ('o peso e a dor da vida', 'desgosto'),
            ('me arrependo amargamente de minhas ações', 'desgosto'),
            ('o destino e cruel e os homens não são dignos de compaixão',
             'desgosto'),
            ('o ódio conduz ao isolamento cruel e ao desespero', 'desgosto'),
            ('encerrou com o massacre mais repudiável e asqueroso que se conhece',
             'desgosto'),
            ('de mal gosto e asqueroso', 'desgosto'),
            ('tudo e inserto neste mundo hediondo', 'desgosto'),
            ('o crime de corrupção e um crime hediondo', 'desgosto'),
            ('o rio esta fetido e de cor escura', 'desgosto'),
            ('muito lixo no rio o deixa malcheiroso', 'desgosto'),
            ('existe uma laranja podre no grupo e já desconfiamos quem e',
             'desgosto'),
            ('foi de repente estou machucado e me sentindo enjoado',
             'desgosto'),
            ('eu fiquei enojado', 'desgosto'),
            ('daqui alguns meses vou embora deste pais que já estou nauseado',
             'desgosto'),
            ('isso tudo e um erro', 'tristeza'),
            ('eu sou errada eu sou errante', 'tristeza'),
            ('tenho muito dó do cachorro', 'tristeza'),
            ('e dolorida a perda de um filho', 'tristeza'),
            ('essa tragedia vai nos abalar para sempre', 'tristeza'),
            ('perdi meus filhos', 'tristeza'),
            ('perdi meu curso', 'tristeza'),
            ('sou só uma chorona', 'tristeza'),
            ('você e um chorão', 'tristeza'),
            ('se arrependimento matasse', 'tristeza'),
            ('me sinto deslocado em sala de aula', 'tristeza'),
            ('foi uma passagem fúnebre', 'tristeza'),
            ('nossa condolências e tristeza a sua perda', 'tristeza'),
            ('desanimo, raiva, solidão ou vazies, depressão', 'tristeza'),
            ('vivo te desanimando', 'tristeza'),
            ('estou desanimado', 'tristeza'),
            ('imperador sanguinário, depravado e temeroso', 'tristeza'),
            ('meu ser esta em agonia', 'tristeza'),
            ('este atrito entre nos tem que acabar', 'tristeza'),
            ('a escuridão desola meu ser', 'tristeza'),
            ('sua falsa preocupação', 'tristeza'),
            ('sua falsidade me entristece', 'tristeza'),
            ('quem esta descontente com os outros esta descontente consigo próprio',
             'tristeza'),
            ('a torcida esta descontente com a demissão do tecnico',
             'tristeza'),
            # ('estou bastante aborrecido com o jornal','tristeza'),
            # ('me sinto solitário e entediado','tristeza'),
            # ('a vida e solitária para aqueles que não são falsos','tristeza'),
            # ('como com compulsão depois da depressão','tristeza'),
            # ('estou me desencorajando a viver','tristeza'),
            # ('ele desencoraja minhas vontades','tristeza'),
            # ('isso vai deprimindo por dentro','tristeza'),
            # ('acho que isso e defeituoso','tristeza'),
            # ('os remedios me derrubam na cama','tristeza'),
            # ('a depressão vai me derrubar','tristeza'),
            # ('suas desculpas são falsas','tristeza'),
            # ('não magoe as pessoas','tristeza'),
            ('que abominável esse montro!', 'medo'),
            ('vamos alarmar a todos sobre a situação', 'medo'),
            ('estou amedrontada', 'medo'),
            ('estou com muito medo da noite', 'medo'),
            ('ele esta me ameaçando a dias', 'medo'),
            ('quanta angustia', 'medo'),
            ('estou angustiada', 'medo'),
            ('angustiadamente vou sair e casa', 'medo'),
            ('isso me deixa apavorada', 'medo'),
            ('você esta me apavorando', 'medo'),
            ('estou desconfiada de você', 'medo'),
            ('não confio em você', 'medo'),
            ('ate o cachorro está apavorado', 'medo'),
            ('estou assustado com as ações do meu colega', 'medo'),
            ('agora se sente humilhado, apavorado', 'medo'),
            ('assustou a população e provocou mortes', 'medo'),
            ('estou com dificuldades para respirar e muito assustado', 'medo'),
            ('os policiais se assustaram quando o carro capotou', 'medo'),
            ('o trabalhador e assombrado pelo temor do desemprego', 'medo'),
            ('este lugar e mal assombrado', 'medo'),
            ('estou assombrado pela crise financeira', 'medo'),
            ('mesmo aterrorizado lembro de você', 'medo'),
            ('aterrorizado e suando frio', 'medo'),
            ('um grupo de elefantes selvagens tem aterrorizado vilas', 'medo'),
            ('me sinto intimidada pela sua presença', 'medo'),
            ('tenho medo de ser advertida novamente', 'medo'),
            ('estou correndo o risco de ser advertido', 'medo'),
            ('estou correndo riscos de saúde', 'medo'),
            ('os riscos são reais', 'medo'),
            ('podemos perder muito dinheiro com essa investida', 'medo'),
            ('socorro, fui intimado a depor', 'medo'),
            ('fui notificado e estou com medo de perde a guarda da minha filha',
             'medo'),
            ('estou angustiada com meus filhos na rua', 'medo'),
            ('e abominável o que fazem com os animais', 'medo'),
            ('foi terrível o tigre quase o matou', 'medo'),
            ('me advertiram sobre isso', 'medo')
        ]

        stopwords = [
            'a', 'agora', 'algum', 'alguma', 'aquele', 'aqueles', 'de', 'deu',
            'do', 'e', 'estou', 'esta', 'esta', 'ir', 'meu', 'muito', 'mesmo',
            'no', 'nossa', 'o', 'outro', 'para', 'que', 'sem', 'talvez', 'tem',
            'tendo', 'tenha', 'teve', 'tive', 'todo', 'um', 'uma', 'umas',
            'uns', 'vou'
        ]

        stopwordsnltk = nltk.corpus.stopwords.words('portuguese')
        stopwordsnltk.append('vou')
        stopwordsnltk.append('tão')

        #print(stopwordsnltk)

        def removestopwords(texto):
            frases = []
            for (palavras, emocao) in texto:
                semstop = [
                    p for p in palavras.split() if p not in stopwordsnltk
                ]
                frases.append((semstop, emocao))
            return frases

        #print(removestopwords(base))

        def aplicastemmer(texto):
            stemmer = nltk.stem.RSLPStemmer()
            frasessstemming = []
            for (palavras, emocao) in texto:
                comstemming = [
                    str(stemmer.stem(p)) for p in palavras.split()
                    if p not in stopwordsnltk
                ]
                frasessstemming.append((comstemming, emocao))
            return frasessstemming

        frasescomstemmingtreinamento = aplicastemmer(basetreinamento)
        frasescomstemmingteste = aplicastemmer(baseteste)

        #print(frasescomstemming)

        def buscapalavras(frases):
            todaspalavras = []
            for (palavras, emocao) in frases:
                todaspalavras.extend(palavras)
            return todaspalavras

        palavrastreinamento = buscapalavras(frasescomstemmingtreinamento)
        palavrasteste = buscapalavras(frasescomstemmingteste)

        #print(palavras)

        def buscafrequencia(palavras):
            palavras = nltk.FreqDist(palavras)
            return palavras

        frequenciatreinamento = buscafrequencia(palavrastreinamento)
        frequenciateste = buscafrequencia(palavrasteste)

        #print(frequencia.most_common(50))

        def buscapalavrasunicas(frequencia):
            freq = frequencia.keys()
            return freq

        palavrasunicastreinamento = buscapalavrasunicas(frequenciatreinamento)
        palavrasunicasteste = buscapalavrasunicas(frequenciateste)

        #print(palavrasunicastreinamento)

        #print(palavrasunicas)

        def extratorpalavras(documento):
            doc = set(documento)
            caracteristicas = {}
            for palavras in palavrasunicastreinamento:
                caracteristicas['%s' % palavras] = (palavras in doc)
            return caracteristicas

        caracteristicasfrase = extratorpalavras(['am', 'nov', 'dia'])
        #print(caracteristicasfrase)

        basecompletatreinamento = nltk.classify.apply_features(
            extratorpalavras, frasescomstemmingtreinamento)
        basecompletateste = nltk.classify.apply_features(
            extratorpalavras, frasescomstemmingteste)
        #print(basecompleta[15])

        # constroi a tabela de probabilidade
        classificador = nltk.NaiveBayesClassifier.train(
            basecompletatreinamento)
        print(classificador.labels())
        #print(classificador.show_most_informative_features(20))

        print(nltk.classify.accuracy(classificador, basecompletateste))

        erros = []
        for (frase, classe) in basecompletateste:
            #print(frase)
            #print(classe)
            resultado = classificador.classify(frase)
            if resultado != classe:
                erros.append((classe, resultado, frase))
        #for (classe, resultado, frase) in erros:
        #    print(classe, resultado, frase)

        from nltk.metrics import ConfusionMatrix
        esperado = []
        previsto = []
        for (frase, classe) in basecompletateste:
            resultado = classificador.classify(frase)
            previsto.append(resultado)
            esperado.append(classe)

        #esperado = 'alegria alegria alegria alegria medo medo surpresa surpresa'.split()
        #previsto = 'alegria alegria medo surpresa medo medo medo surpresa'.split()
        matriz = ConfusionMatrix(esperado, previsto)
        print(matriz)

        # 1. Cenário
        # 2. Número de classes - 16%
        # 3. ZeroRules - 21,05%

        teste = 'Boa Tarde, Favor verificar porque não consigo cadastrar um país, nem com senha mestre Aguardo'
        testestemming = []
        stemmer = nltk.stem.RSLPStemmer()
        for (palavrastreinamento) in teste.split():
            comstem = [p for p in palavrastreinamento.split()]
            testestemming.append(str(stemmer.stem(comstem[0])))
        print(testestemming)

        novo = extratorpalavras(testestemming)
        print(novo)

        print(classificador.classify(novo))
        distribuicao = classificador.prob_classify(novo)
        for classe in distribuicao.samples():
            print("%s: %f" % (classe, distribuicao.prob(classe)))
Exemplo n.º 31
0
        erros.append((classe, resultado, frase))

#for (classe, resultado, frase) in erros:
#	print(classe, resultado, frase)

from nltk.metrics import ConfusionMatrix
esperado = []
previsto = []
for (frase, classe) in baseCompletaTeste:
    resultado = classificador.classify(frase)
    esperado.append(classe)
    previsto.append(resultado)

#esperado = 'alegria alegria alegria alegria medo medo surpresa surpresa'.split()
#previsto = 'alegria alegria medo surpresa medo medo medo surpresa'.split()
matrix = ConfusionMatrix(esperado, previsto)
print(matrix)

teste = 'eu sinto amor por voce'
testeStemming = []
stemmer = nltk.stem.RSLPStemmer()
for palavras in teste.split():
    comStem = [p for p in palavras.split()]
    testeStemming.append(str(stemmer.stem(comStem[0])))
#print(testeStemming)

novo = extratorPalavras(testeStemming)
#print(novo)
'''
print(classificador.classify(novo))
distribuicao = classificador.prob_classify(novo)
Exemplo n.º 32
0
    def process(self, posWords, negWords, posI, negI, tokenizedComm,
        train_file="./resources/train.txt", test_file="./resources/test.txt"):
        comments = self.loadComments()
        (train, test) = self.load_train_test_set(train_file, test_file)

        N = 20
        train_set = []

        for i in train:
            (com, value) = comments[i]
            if value != self.Exc:
                if value < 3:
                    splitted = tokenizedComm[i]
                    train_set.append((self.feature(N, com, splitted, posWords,
                        negWords, posI, negI), "neg"))
                else:
                    splitted = tokenizedComm[i]
                    train_set.append((self.feature(N, com, splitted, posWords,
                        negWords, posI, negI), "pos"))

        # clasificador
        classifier = nltk.NaiveBayesClassifier.train(train_set)

        # Para testing se han excluido comentarios con puntuacion 3, es decir
        # se evaluan comentarios positivos y negativos.

        dev_set = []
        errorComments = []
        refset = collections.defaultdict(set)
        testset = collections.defaultdict(set)
        ref_list = []
        test_list = []

        it = 0
        for i in test:
            (com, value) = comments[i]
            if value != self.Exc:
                it = it + 1
                splitted = tokenizedComm[i]
                evaluate = self.feature(N, com, splitted, posWords, negWords,
                    posI, negI)
                if value < 3:
                    dev_set.append((evaluate, "neg"))
                    refset["neg"].add(it)
                    ref_list.append("neg")
                else:
                    dev_set.append((evaluate, "pos"))
                    refset["pos"].add(it)
                    ref_list.append("pos")
                res = classifier.classify(evaluate)
                testset[res].add(it)
                test_list.append(res)
                if res == "neg":
                    if value < 3:
                        message = "OK"
                    else:
                        message = "ERROR"
                else:
                    if value > 3:
                        message = "OK"
                    else:
                        message = "ERROR"

                if(message == "ERROR"):
                    errorComments.append((com, value))

        classifier.show_most_informative_features(50)

        # confusion matrix
        cm = ConfusionMatrix(ref_list, test_list)
        cm = '\n' + cm.pp(sort_by_count=True, show_percents=False, truncate=9)

        # data metrics
        accuracy = nltk.classify.accuracy(classifier, dev_set)
        pPos = nltk.metrics.precision(refset['pos'], testset['pos'])
        rPos = nltk.metrics.recall(refset['pos'], testset['pos'])
        pNeg = nltk.metrics.precision(refset['neg'], testset['neg'])
        rNeg = nltk.metrics.recall(refset['neg'], testset['neg'])
        Metrics = {'Accuracy': accuracy,
            'Precision Pos': pPos,
            'Recall Pos': rPos,
            'Precision Neg': pNeg,
            'Recall Neg': rNeg,
            'Confusion Matrix': cm}

        for m in sorted(Metrics.keys()):
            print m, Metrics[m]

        num = [accuracy, pPos, rPos, pNeg, rNeg]
        return (Metrics, num)