def analiasar_sentimento(): nova_fachada = Fachada() resenha = request.form['txtResenha'] documento = nova_fachada.analisar_sentimento_documento(resenha) if documento.categoria == 'pos': sentimento = 'positivo' elif documento.categoria == 'neg': sentimento = 'negativo' # sentimento = documento.categoria # Dispoẽ os elementos no template html 'resultado_analise' (gráfico, tweets) return render_template('home.html', sentimento=sentimento, resenha=resenha)
def analisar_sentimento_conjunto(): paths = {PERCY_JACKSON: "/home/lucas/Documents/mineracao_opiniao/resenhas_percy_jackson", JOGOS_VORAZES: "/home/lucas/Documents/mineracao_opiniao/resenhas_jogos_vorazes", CONVERGENTE: "/home/lucas/Documents/mineracao_opiniao/resenhas_convergente", CIDADES_DE_PAPEL: "/home/lucas/Documents/mineracao_opiniao/resenhas_cidades_de_papel"} diretorio_destino_grafico = "/home/lucas/Documents/mineracao_opiniao/graficos" titulo_livro = request.form['titulo_livro'] documentos_path = paths[titulo_livro] documentos = ArquivoUtil().ler_documentos(documentos_path, None) documentos_classificados = [] # Pequena correção no título do livro documento = Documento(titulo_livro, None, None, None) titulo_livro = DivideCamelCaseCommand().execute(documento).texto data_analise = time.strftime("%d/%m/%Y") horario_analise = time.strftime("%H:%M:%S") nova_fachada = Fachada() qtde_pos = 0 qtde_neg = 0 for documento in documentos: documento_classificado = nova_fachada.analisar_sentimento_documento(documento.texto) documento_classificado.texto = documento.texto # Substitui o texto processado pelo original documentos_classificados.append(documento_classificado) if documento_classificado.categoria == "pos": qtde_pos += 1 elif documento_classificado.categoria == "neg": qtde_neg += 1 # Calcula porcentagem de resenhas positivas e negativas porcentagens = CalculoUtil().calcular_porcentagem_opinioes(qtde_pos, qtde_neg) porcentagem_pos = porcentagens[CalculoUtil().PORCENTAGEM_POSITIVA] porcentagem_neg = porcentagens[CalculoUtil().PORCENTAGEM_NEGATIVA] grafico = GraficoUtil() nome_grafico = grafico.construir_grafico_pizza(porcentagem_pos, porcentagem_neg, titulo_livro, diretorio_destino_grafico) '''nome_grafico = grafico.salvar_grafico(grafico_pizza, titulo_livro, diretorio_destino_grafico)''' return render_template('resultado_analise.html', documentos=documentos_classificados, titulo_livro=titulo_livro, data_analise=data_analise, horario_analise=horario_analise, grafico_pizza=nome_grafico)
#!/usr/bin/python # -*- coding: utf-8 -*- from controle.fachada import Fachada from dominio.entidades import Documento from util.classificador_util import ClassificadorUtil from util.corpus_util import CorpusUtil import codecs import os from random import shuffle from util.arquivo_util import ArquivoUtil if __name__ == '__main__': texto = raw_input("Resenha: ") nova_fachada = Fachada() # texto = "Incrível apaixonante emocionante." # texto = u"""Imprestável Puro lixo!""" # texto = u"livro cansativo, massante." # texto = "livro apaixonante, lindo!" # texto = u"péssimo horrível desisti enfadonho" # texto = u"livro muito chato" documento = nova_fachada.analisar_sentimento_documento(texto) print "-- sentimento: %s." % documento.categoria
# -*- coding: utf-8 -*- """ Created on Thu Aug 20 09:05:00 2015 @author: lucas """ import codecs from controle.fachada import Fachada from dominio.entidades import Documento DIRETORIO_ARQUIVO = "/home/lucas/Desktop" # NOME_ARQUIVO = "a_arte_de_fazer_acontecer_resenha18920039_-_5_estrelas.txt" # NOME_ARQUIVO = "teste_negacao.txt" NOME_ARQUIVO = "dez_leis.txt" documento = Documento('', "sem_categoria", None, "") with codecs.open(DIRETORIO_ARQUIVO + "/" + NOME_ARQUIVO, "r", "utf-8") as f: documento.texto = f.read() print documento.texto nova_fachada = Fachada() documento = nova_fachada.processar_documento(documento)
def analisar_sentimento_conjunto(): paths = { PERCY_JACKSON: "/home/lucas/Documents/mineracao_opiniao/resenhas_percy_jackson", JOGOS_VORAZES: "/home/lucas/Documents/mineracao_opiniao/resenhas_jogos_vorazes", CONVERGENTE: "/home/lucas/Documents/mineracao_opiniao/resenhas_convergente", CIDADES_DE_PAPEL: "/home/lucas/Documents/mineracao_opiniao/resenhas_cidades_de_papel" } diretorio_destino_grafico = "/home/lucas/Documents/mineracao_opiniao/graficos" titulo_livro = request.form['titulo_livro'] documentos_path = paths[titulo_livro] documentos = ArquivoUtil().ler_documentos(documentos_path, None) documentos_classificados = [] # Pequena correção no título do livro documento = Documento(titulo_livro, None, None, None) titulo_livro = DivideCamelCaseCommand().execute(documento).texto data_analise = time.strftime("%d/%m/%Y") horario_analise = time.strftime("%H:%M:%S") nova_fachada = Fachada() qtde_pos = 0 qtde_neg = 0 for documento in documentos: documento_classificado = nova_fachada.analisar_sentimento_documento( documento.texto) documento_classificado.texto = documento.texto # Substitui o texto processado pelo original documentos_classificados.append(documento_classificado) if documento_classificado.categoria == "pos": qtde_pos += 1 elif documento_classificado.categoria == "neg": qtde_neg += 1 # Calcula porcentagem de resenhas positivas e negativas porcentagens = CalculoUtil().calcular_porcentagem_opinioes( qtde_pos, qtde_neg) porcentagem_pos = porcentagens[CalculoUtil().PORCENTAGEM_POSITIVA] porcentagem_neg = porcentagens[CalculoUtil().PORCENTAGEM_NEGATIVA] grafico = GraficoUtil() nome_grafico = grafico.construir_grafico_pizza(porcentagem_pos, porcentagem_neg, titulo_livro, diretorio_destino_grafico) '''nome_grafico = grafico.salvar_grafico(grafico_pizza, titulo_livro, diretorio_destino_grafico)''' return render_template('resultado_analise.html', documentos=documentos_classificados, titulo_livro=titulo_livro, data_analise=data_analise, horario_analise=horario_analise, grafico_pizza=nome_grafico)
# -*- coding: utf-8 -*- from controle.fachada import Fachada from util.arquivo_util import ArquivoUtil documento_path = "/home/lucas/Documents/mineracao_opiniao" nova_fachada = Fachada() # Lê documento documentos = ArquivoUtil().ler_documentos(documento_path, "INDEFINIDA") print "-- processando todos os documentos." print " -- Texto original" print documentos[0].texto nova_fachada.processar_documento(documentos[0])
from util.corpus_util import CorpusUtil import codecs import os from random import shuffle from util.arquivo_util import ArquivoUtil if __name__ == '__main__': # texto = raw_input("Resenha: ") raiz_corpus = "/home/lucas/Documents/mineracao_opiniao/corpus_resenhas_livros_processado_sem_stem_e_negacao" classificador_path = "/home/lucas/Documents/mineracao_opiniao/classificadores_treinados/" \ "classificadores_resenhas_livros/" \ "classificador_naive_bayes_resenhas_livros_3860_sem_stem_negacao_2015-09-23.16.17.32.802909.pickle" nova_fachada = Fachada() corpus = CorpusUtil(raiz_corpus) # texto = "Excelente livro, recomendo! Muito bom, vale a pena." '''texto = """Quando terminei de ler o livro fiquei admirada com o autor! Ele é simplesmente magnifico. Não vou negar que depois de começar a ler a segunda parte da obra fiquei entediada, mas não fui capaz de abandona-la, ainda bem, mas quando cheguei no final do livro entendi o motivo da segunda parte. O livro é muito bem bolado e vale a pena ler!"""''' documentos_path = raiz_corpus + "/pos" nomes = os.listdir(documentos_path) shuffle(nomes) documentos = [] for nome_documento in nomes:
#!/usr/bin/python # -*- coding: utf-8 -*- """ Created on Mon Aug 24 22:34:21 2015 @author: lucas """ from controle.fachada import Fachada from util.classificador_util import ClassificadorUtil CORPUS_RAIZ = "/home/lucas/Documents/mineracao_opiniao/corpus_resenhas_livros_processadas_c" DIRETORIO_DESTINO = "/home/lucas/Documents/mineracao_opiniao/classificadores_treinados" nova_fachada = Fachada() classificador = nova_fachada.treinar_classificador(CORPUS_RAIZ) resultado = ClassificadorUtil().salvar_classificador_treinado( classificador, "3860_resenhas_negacao", DIRETORIO_DESTINO) if resultado: print "-- Classificador salvo com sucesso."
#!/usr/bin/python # -*- coding: utf-8 -*- """ Created on Mon Aug 24 22:34:21 2015 @author: lucas """ from controle.fachada import Fachada from util.classificador_util import ClassificadorUtil CORPUS_RAIZ = "/home/lucas/Documents/mineracao_opiniao/corpus_resenhas_livros_processadas_c" DIRETORIO_DESTINO = "/home/lucas/Documents/mineracao_opiniao/classificadores_treinados" nova_fachada = Fachada() classificador = nova_fachada.treinar_classificador(CORPUS_RAIZ) resultado = ClassificadorUtil().salvar_classificador_treinado(classificador, "3860_resenhas_negacao", DIRETORIO_DESTINO) if resultado: print "-- Classificador salvo com sucesso."
# -*- coding: utf-8 -*- from controle.fachada import Fachada from util.arquivo_util import ArquivoUtil RESENHAS_RAIZ = "/home/lucas/Documents/mineracao_opiniao/resenhas_percy_jackson" RESENHAS_POS = RESENHAS_RAIZ + "/pos" RESENHAS_NEG = RESENHAS_RAIZ + "/neg" diretorio_destino_raiz = "/home/lucas/Documents/mineracao_opiniao/resenhas_percy_jackson_processadas" diretorio_destino_pos = diretorio_destino_raiz + "/pos" diretorio_destino_neg = diretorio_destino_raiz + "/neg" nova_fachada = Fachada() print "-- lendo todos os documentos." documentos = ArquivoUtil().ler_documentos(RESENHAS_RAIZ, "INDEFINIDA") print "-- processando todos os documentos." nova_fachada.processar_documentos_corpus(documentos, diretorio_destino_raiz) # print "-- lendo documentos positivos" # documentos_pos = ArquivoUtil().ler_documentos(RESENHAS_POS, 'pos') # print "-- processando documentos positivos" # nova_fachada.processar_documentos_corpus(documentos_pos, diretorio_destino_pos) # print "-- lendo documentos negativos" # documentos_neg = ArquivoUtil().ler_documentos(RESENHAS_NEG, 'neg') # print "-- processando documentos negativos"