def processa(): ''' Realiza a classificação dos tweets armazenados utilizando o Filtro Bayesiano treinado e armazena o resultado em um formato de dados legível pela biblioteca gráfica D3.js. ''' g = thomas.Bayes() g.load('treinamento/treino.dat') dias = {"Domingo": ('dom.professor.pickle', 'dom.professora.pickle'), "Segunda": ('seg.professor.pickle', 'seg.professora.pickle'), "Terça": ('ter.professor.pickle', 'ter.professora.pickle'), "Quarta": ('qua.professor.pickle', 'qua.professora.pickle'), "Quinta": ('qui.professor.pickle', 'qui.professora.pickle'), "Sexta": ('sex.professor.pickle', 'sex.professora.pickle'), "Sábado": ('sab.professor.pickle', 'sab.professora.pickle'), } tweets = {"name": "", "children": []} total_tw_dias = 0 for dia in dias: m = dias[dia][0] f = dias[dia][1] dados_m = [d for d in pickle.load(open('tweets/' + m)) if hora(d[-1])] dados_f = [d for d in pickle.load(open('tweets/' + f)) if hora(d[-1])] tweets_dia = len(dados_m + dados_f) total_tw_dias += tweets_dia classif_m = {'POS': 0, 'NEG': 0, 'NEU': 0} classif_f = {'POS': 0, 'NEG': 0, 'NEU': 0} for t in dados_m: classif = thomas.classifica(g.guess(t[1])) total = t[2] classif_m[classif] += total for t in dados_f: classif = thomas.classifica(g.guess(t[1])) total = t[2] classif_f[classif] += total l = {"name": "{0} ({1})".format(dia, tweets_dia), "children": [ {"name": 'Professor ({0})'.format(len(dados_m)), "children": [{"name": "Positivo: {0} tweets".format(classif_m['POS'])}, {"name": "Negativo: {0} tweets".format(classif_m['NEG'])}, {"name": "Neutro: {0} tweets".format(classif_m['NEU'])}]}, {"name": 'Professora ({0})'.format(len(dados_f)), "children": [{"name": "Positivo: {0} tweets".format(classif_f['POS'])}, {"name": "Negativo: {0} tweets".format(classif_f['NEG'])}, {"name": "Neutro: {0} tweets".format(classif_f['NEU'])}]} ]} tweets['children'].append(l) tweets['name'] = "{0} Tweets".format(total_tw_dias) json.dump(tweets, open('grafico/arvore.json','wb'))
def teste_validacao_classificador(self): total_tweets = len(self.tweets_validacao) acertos = 0 for tw in self.tweets_validacao: texto = twitter.preprocessa_tweet(tw[0].lower()) if thomas.classifica(self.classificador.guess(texto)) == tw[1]: acertos += 1 # Exige um índice de acerto de pelo menos 80% self.assertTrue(acertos * 100 / total_tweets >= 80)
def teste_treinamento_classificador(self): total_tweets = len(self.tweets_treino) acertos = 0 for tw in self.tweets_treino: texto = twitter.preprocessa_tweet(tw[0].lower()) if thomas.classifica(self.classificador.guess(texto)) == tw[1]: acertos += 1 else: self.classificador.train(tw[1], texto) self.classificador.save('../treinamento/treino.dat') self.assertTrue(acertos == total_tweets)
def processa(): ''' Realiza a classificação dos tweets armazenados utilizando o Filtro Bayesiano treinado e armazena o resultado em um formato de dados legível pela biblioteca gráfica D3.js. ''' g = thomas.Bayes() g.load('treinamento/treino.dat') dias = { "Domingo": ('dom.professor.pickle', 'dom.professora.pickle'), "Segunda": ('seg.professor.pickle', 'seg.professora.pickle'), "Terça": ('ter.professor.pickle', 'ter.professora.pickle'), "Quarta": ('qua.professor.pickle', 'qua.professora.pickle'), "Quinta": ('qui.professor.pickle', 'qui.professora.pickle'), "Sexta": ('sex.professor.pickle', 'sex.professora.pickle'), "Sábado": ('sab.professor.pickle', 'sab.professora.pickle'), } tweets = {"name": "", "children": []} total_tw_dias = 0 for dia in dias: m = dias[dia][0] f = dias[dia][1] dados_m = [d for d in pickle.load(open('tweets/' + m)) if hora(d[-1])] dados_f = [d for d in pickle.load(open('tweets/' + f)) if hora(d[-1])] tweets_dia = len(dados_m + dados_f) total_tw_dias += tweets_dia classif_m = {'POS': 0, 'NEG': 0, 'NEU': 0} classif_f = {'POS': 0, 'NEG': 0, 'NEU': 0} for t in dados_m: classif = thomas.classifica(g.guess(t[1])) total = t[2] classif_m[classif] += total for t in dados_f: classif = thomas.classifica(g.guess(t[1])) total = t[2] classif_f[classif] += total l = { "name": "{0} ({1})".format(dia, tweets_dia), "children": [{ "name": 'Professor ({0})'.format(len(dados_m)), "children": [{ "name": "Positivo: {0} tweets".format(classif_m['POS']) }, { "name": "Negativo: {0} tweets".format(classif_m['NEG']) }, { "name": "Neutro: {0} tweets".format(classif_m['NEU']) }] }, { "name": 'Professora ({0})'.format(len(dados_f)), "children": [{ "name": "Positivo: {0} tweets".format(classif_f['POS']) }, { "name": "Negativo: {0} tweets".format(classif_f['NEG']) }, { "name": "Neutro: {0} tweets".format(classif_f['NEU']) }] }] } tweets['children'].append(l) tweets['name'] = "{0} Tweets".format(total_tw_dias) json.dump(tweets, open('grafico/arvore.json', 'wb'))