def untrained(self, cr, uid, ids, context=None): for id in ids: record = self.read(cr, uid, id, ['category_id','description']) if record['description']: group_obj = self.pool.get('crm.bayes.group') cat_obj = self.pool.get('crm.bayes.categories') cat_rec = cat_obj.read(cr, uid, record['category_id'][0],[]) guesser = Bayes() data = "" for rec in group_obj.browse(cr, uid, [cat_rec['group_id'][0]]): if rec['train_data']: data += rec['train_data'] if data : myfile = file(file_path+"crm_bayes.bay", 'w') myfile.write(data) myfile.close() guesser.load(file_path+"crm_bayes.bay") guesser.untrain(cat_rec['name'],record['description']) guesser.save(file_path+"crm_bayes.bay") myfile = file(file_path+"crm_bayes.bay", 'r') data= "" for fi in myfile.readlines(): data += fi group_obj.write(cr, uid, cat_rec['group_id'][0], {'train_data': data}) cat_obj.write(cr, uid, record['category_id'][0], {'train_messages':int(cat_rec['train_messages']) - 1 }) cr.execute("select sum(train_messages) as tot_train,sum(guess_messages) as tot_guess from crm_bayes_categories where group_id=%d"% cat_rec['group_id'][0]) rec = cr.dictfetchall() if rec[0]['tot_guess']: percantage = float(rec[0]['tot_guess'] *100) / float(rec[0]['tot_guess'] + rec[0]['tot_train']) else : percantage = 0.0 group_obj.write(cr, uid, cat_rec['group_id'][0], {'train_data': data,'automate_test':percantage}) self.write(cr, uid, id, {'state_bayes':'untrained'}) return True
def retrain(request): # Retrain your brain user = User.objects.get(user=request.user) posts = Post.objects.filter(user=user) bayes = Brain.objects.get(user=user) brain = Bayes() #brain.loads(base64.decodestring(bayes.data)) tagcount = 0 # retrain the brain based on existing tags for post in posts: print post.title, "::", for tag in post.tags.all(): text = "%s %s %s" % (post.title, post.author, post.summary) brain.train(tag, text) tagcount += 1 print tag, print brain.save('%s.db' % user) bayes.data = base64.encodestring(brain.saves()) bayes.save() message = 'Found %s tags' % tagcount params = {'Messages': [message,]} return response(request, 'mainapp/index.html', params)
def main(): """ Build aggregator report pages with Bayes rating links. """ # Create a new Bayes guesser guesser = Bayes() # Attempt to load Bayes data, ignoring IOError on first run. try: guesser.load(BAYES_DATA_FN) except IOError: pass # Open up the databases, load the subscriptions, get new entries. feed_db, entry_db = openDBs(FEED_DB_FN, ENTRY_DB_FN) feeds = [x.strip() for x in open(FEEDS_FN, "r").readlines()] entries = getNewFeedEntries(feeds, feed_db, entry_db) # Score the new entries using the Bayesian guesser entries = scoreEntries(guesser, entries) # Write out the current run's aggregator report. out_fn = time.strftime(HTML_FN) writeAggregatorPage(entries, out_fn, DATE_HDR_TMPL, FEED_HDR_TMPL, ENTRY_TMPL, PAGE_TMPL) # Close the databases and save the current guesser's state to disk. closeDBs(feed_db, entry_db) guesser.save(BAYES_DATA_FN)
def treinar(): print """>>> Carregando categorias...""" CATEGORIAS = os.listdir('./data') if '.svn' in CATEGORIAS: CATEGORIAS.remove('.svn') print ">>> Instanciando treinador\n" guesser = Bayes() try: for categoria in CATEGORIAS: print ">>> Treinando categoria %s" % categoria arquivos = os.listdir("%s/%s" % (CAMINHO_CATEGORIAS, categoria)) if '.svn' in arquivos: arquivos.remove('.svn') for arquivo in arquivos: arquivo = open('%s/%s/%s' % (CAMINHO_CATEGORIAS, categoria, arquivo), 'r') texto = arquivo.read() guesser.train(categoria, texto) print "\n>>> Salvando base de conhecimento...\n" guesser.save("conhecimento.bay") print "Voil?!\n" except: print "N?o foi poss?vel treinar a base"
def __init__(self,name): Bayes.__init__(self) self.brain = name + '.bay' try: Bayes.load(self,self.brain) print "[Bayes] Brain loaded ok" except: print "[Alert] Failed to load bayesian brain - %s, creating it now" % self.brain Bayes.save(self,self.brain) Bayes.load(self,self.brain)
def train(self,bucket,words): """ Nominate a bucket to which the words apply, and train accordingly """ if bucket != "" and words != "": try: Bayes.train(self,bucket,words) Bayes.save(self,self.brain) except: print "Failed to learn" else: return None
def __init__(self, name): Bayes.__init__(self) self.brain = name + '.bay' try: Bayes.load(self, self.brain) print "[Bayes] Brain loaded ok" except: print "[Alert] Failed to load bayesian brain - %s, creating it now" % self.brain Bayes.save(self, self.brain) Bayes.load(self, self.brain)
def train(self, bucket, words): """ Nominate a bucket to which the words apply, and train accordingly """ if bucket != "" and words != "": try: Bayes.train(self, bucket, words) Bayes.save(self, self.brain) except: print "Failed to learn" else: return None
def action_train(self, cr, uid, ids, context=None): cat_obj = self.pool.get('crm.bayes.categories') group_obj = self.pool.get('crm.bayes.group') message_obj = self.pool.get('crm.bayes.test.guess') for id in ids: cat_id = self.read(cr, uid, id, ['category_id','name']) cat_id = cat_id[0]['category_id'] if result : max_list = max(result, key=lambda k: k[1]) if cat_id: cat_guess_msg = cat_obj.read(cr, uid, cat_id, ['train_messages']) cat_obj.write(cr, uid, cat_id, {'train_messages' :cat_guess_msg['train_messages'] + 1}) if max_list[1] > 0 and not cat_id: cat_id = cat_obj.search(cr, uid, [('name','=',max_list[0])])[0] cat_guess_msg = cat_obj.read(cr, uid, cat_id, ['guess_messages']) cat_obj.write(cr, uid, cat_id, {'guess_messages' :cat_guess_msg['guess_messages'] + 1}) self.write(cr, uid, ids, {'category_id':cat_id}) if cat_id : cat_rec = cat_obj.read(cr, uid, cat_id, []) guesser = Bayes() data = "" for rec in group_obj.browse(cr, uid, [cat_rec['group_id'][0]]): if rec['train_data']: data += rec['train_data'] if data : myfile = file(file_path+"crm_bayes.bay", 'w') myfile.write(data) myfile.close() guesser.load(file_path+"crm_bayes.bay") guesser.train(cat_rec['name'], message_obj.read(cr, uid, id)[0]['name']) guesser.save(file_path+"crm_bayes.bay") myfile = file(file_path+"crm_bayes.bay", 'r') data="" for fi in myfile.readlines(): data += fi cr.execute("select sum(train_messages) as tot_train,sum(guess_messages) as tot_guess from crm_bayes_categories where group_id=%d"% cat_rec['group_id'][0]) rec = cr.dictfetchall() if not rec[0]['tot_guess']: rec[0]['tot_guess'] =0 percantage = float(rec[0]['tot_guess'] *100) / float(rec[0]['tot_guess'] + rec[0]['tot_train']) group_obj.write(cr, uid, cat_rec['group_id'][0], {'train_data': data,'automate_test':percantage}) else : raise osv.except_osv(_('Error !'),_('Please Select Category! ')) return { 'view_type': 'form', "view_mode": 'form', 'res_model': 'crm.bayes.train.message', 'type': 'ir.actions.act_window', 'target':'new', }
def treino (self): banco_do_jornal = Server() genero=[banco_do_jornal[doc] for doc in GENEROS] #treinando o reverend from reverend.thomas import Bayes guesser = Bayes() guesser.train('artigo', ' '.join(genero[0][doc]['texto'] for doc in genero[0])) guesser.train('resenha',' '.join(genero[6][doc]['texto'] for doc in genero[6])) guesser.train('noticia',' '.join(genero[1][doc]['texto'] for doc in genero [1])) guesser.train('cronica',' '.join(genero[5][doc]['texto']for doc in genero[5] if 'texto' in genero[5][doc] )) guesser.train('horoscopo',' '.join(genero[3][doc]['texto']for doc in genero[3])) guesser.train('manchete',' '.join(genero[2][doc]['titulo']for doc in genero[2])) guesser.train('receita',' '.join(genero[4][doc]['texto']for doc in genero[4])) guesser.save('my_guesser.bay') variavel = guesser.guess('Cidad?o se descuidou e roubaram seu celular. Como era um executivo e n?o sabia mais viver sem celular, ficou furioso. Deu parte do roubo, de Quara?.? Pois ?.? Carol.? Hein?? Meu nome. ? Carol.? Ah. Voc?s s?o...? N?o, n?o. Nos conhecemos h? pouco.? Escute Carol. Eu trouxe uma encomenda para o Amleto. De Quara?. Uma pessegada, mas n?o me lembro do endere?o.') print 'Resultado = ', variavel
def treino (self): banco_do_jornal = Server() genero=[banco_do_jornal[doc] for doc in GENEROS] #treinando o reverend from reverend.thomas import Bayes guesser = Bayes() guesser.train('artigo', ' '.join(genero[0][doc]['texto'] for doc in genero[0])) guesser.train('resenha',' '.join(genero[6][doc]['texto'] for doc in genero[6])) guesser.train('noticia',' '.join(genero[1][doc]['texto'] for doc in genero [1])) guesser.train('cronica',' '.join(genero[5][doc]['texto']for doc in genero[5] if 'texto' in genero[5][doc] )) guesser.train('horoscopo',' '.join(genero[3][doc]['texto']for doc in genero[3])) guesser.train('manchete',' '.join(genero[2][doc]['titulo']for doc in genero[2])) guesser.train('receita',' '.join(genero[4][doc]['texto']for doc in genero[4])) guesser.save('my_guesser.bay') variavel = guesser.guess('Bolo de chocolate :ingredientes : 6 ovos, 2 xicaras de farinha, 1 colher de achocolatado, 1 lata de leite condensado, 2 copos de leite e 3 colheres de açucar') print 'Resultado = ', variavel
def get_db(private_path, username): path = os.path.join(os.path.join(private_path, username), 'spam.bayes') guesser = Bayes() # load the spam DB try: guesser.load(path) except IOError: print "Creating a new spam filter database" parent_directory = os.path.dirname(path) if not os.path.isdir(parent_directory): os.makedirs(parent_directory) guesser.save(path) return guesser, path
def trained(self, cr, uid, ids, context=None): for id in ids: record = self.read(cr, uid, id, ['category_id', 'description']) if not record['description']: raise osv.except_osv(_('Error!'), _("Description Not Define!")) if not record['category_id']: raise osv.except_osv(_('Error!'), _("Statistics Category Not Define!")) group_obj = self.pool.get('crm.bayes.group') cat_obj = self.pool.get('crm.bayes.categories') cat_rec = cat_obj.read(cr, uid, record['category_id'][0], []) guesser = Bayes() data = "" for rec in group_obj.browse(cr, uid, [cat_rec['group_id'][0]]): if rec['train_data']: data += rec['train_data'] if data: myfile = file(file_path + "crm_bayes.bay", 'w') myfile.write(data) myfile.close() guesser.load(file_path + "crm_bayes.bay") guesser.train(cat_rec['name'], record['description']) guesser.save(file_path + "crm_bayes.bay") myfile = file(file_path + "crm_bayes.bay", 'r') data = "" for fi in myfile.readlines(): data += fi cat_obj.write( cr, uid, record['category_id'][0], {'train_messages': int(cat_rec['train_messages']) + 1}) cr.execute( "select sum(train_messages) as tot_train,sum(guess_messages) as tot_guess from crm_bayes_categories where group_id=%d" % cat_rec['group_id'][0]) rec = cr.dictfetchall() if not rec[0]['tot_guess']: rec[0]['tot_guess'] = 0 percantage = float( rec[0]['tot_guess'] * 100) / float(rec[0]['tot_guess'] + rec[0]['tot_train']) group_obj.write(cr, uid, cat_rec['group_id'][0], { 'train_data': data, 'automate_test': percantage }) self.write(cr, uid, id, {'state_bayes': 'trained'}) return True
def treino (self): banco_do_jornal = Server() genero=[banco_do_jornal[doc] for doc in GENEROS] #dicionários dicionario_artigo={'enunciados de opiniao':'eu acredito''eu acho''nós entendemos que'} dicionario_resenha={'auxiliar modal':'pode''deve','lexico':'filme''peça''livro''artista'} dicionario_horoscopo={'lexico':'signo''peixes''áries''capricórnio''escorpião''cancer''gêmeos''touro''libra''sargitário''aquario''planeta''mercurio''vênus''marte''jupter''saturno''urano''netuno''ascendente''amor''saúde''trabalho''carta''sorte''dinheiro'} dicionario_noticia={'marcadores de data':'janeiro''fevereiro''março''abril''maio''junho''julho''agosto''setembro''outubro''novembro''dezenbro'} #treinando o reverend from reverend.thomas import Bayes guesser = Bayes() guesser.train('artigo', ' '.join(genero[0][doc]['texto'] for doc in genero[0]) ) guesser.train('resenha',' '.join(genero[6][doc]['texto'] for doc in genero[6])) guesser.train('noticia',' '.join(genero[1][doc]['texto'] for doc in genero [1])) guesser.train('cronica',' '.join(genero[5][doc]['texto']for doc in genero[5] if 'texto' in genero[5][doc] )) guesser.train('horoscopo',' '.join(genero[3][doc]['texto']for doc in genero[3])) guesser.train('manchete',' '.join(genero[2][doc]['titulo']for doc in genero[2])) guesser.train('receita',' '.join(genero[4][doc]['texto']for doc in genero[4])) guesser.save('my_guesser.bay') variavel = guesser.guess('Lía, Claudia e Dourado se enfrentam no oitavo paredão do BBB10, que acontecerá nesta terça (2)Lia foi a escolha do líder Michel, que justificou que sua opinião vem sendo formada ao longo do jogo. Cacau foi eliminada, pois foram 80% dos votos contra ela, então ela saiu, muitas pessoas não queriam que ela saisse mais foram os votos que decidiram a derrota da cacau (Cláudia)') print 'Resultado = ', variavel
def untrain(self, bucket, words): """ Remove nominated words from the relevant bucket """ Bayes.untrain(self, bucket, words) Bayes.save(self, self.brain)
class BayesianClassifier: POSITIVE = POSITIVE NEGATIVE = NEGATIVE NEUTRAL = NEUTRAL THRESHHOLD = 0.1 guesser = None def __init__(self): self.guesser = Bayes() def train(self, example_tweets): for t in example_tweets: self.guesser.train(t.sentiment, t.text) self.guesser.train(POSITIVE, "cool") self.guesser.train(POSITIVE, "Woo") self.guesser.train(POSITIVE, "quite amazing") self.guesser.train(POSITIVE, "thks") self.guesser.train(POSITIVE, "looking forward to") self.guesser.train(POSITIVE, "damn good") self.guesser.train(POSITIVE, "frickin ruled") self.guesser.train(POSITIVE, "frickin rules") self.guesser.train(POSITIVE, "Way to go") self.guesser.train(POSITIVE, "cute") self.guesser.train(POSITIVE, "comeback") self.guesser.train(POSITIVE, "not suck") self.guesser.train(POSITIVE, "prop") self.guesser.train(POSITIVE, "kinda impressed") self.guesser.train(POSITIVE, "props") self.guesser.train(POSITIVE, "come on") self.guesser.train(POSITIVE, "congratulation") self.guesser.train(POSITIVE, "gtd") self.guesser.train(POSITIVE, "proud") self.guesser.train(POSITIVE, "thanks") self.guesser.train(POSITIVE, "can help") self.guesser.train(POSITIVE, "thanks!") self.guesser.train(POSITIVE, "pumped") self.guesser.train(POSITIVE, "integrate") self.guesser.train(POSITIVE, "really like") self.guesser.train(POSITIVE, "loves it") self.guesser.train(POSITIVE, "yay") self.guesser.train(POSITIVE, "amazing") self.guesser.train(POSITIVE, "epic flail") self.guesser.train(POSITIVE, "flail") self.guesser.train(POSITIVE, "good luck") self.guesser.train(POSITIVE, "fail") self.guesser.train(POSITIVE, "life saver") self.guesser.train(POSITIVE, "piece of cake") self.guesser.train(POSITIVE, "good thing") self.guesser.train(POSITIVE, "hawt") self.guesser.train(POSITIVE, "hawtness") self.guesser.train(POSITIVE, "highly positive") self.guesser.train(POSITIVE, "my hero") self.guesser.train(POSITIVE, "yummy") self.guesser.train(POSITIVE, "awesome") self.guesser.train(POSITIVE, "congrats") self.guesser.train(POSITIVE, "would recommend") self.guesser.train(POSITIVE, "intellectual vigor") self.guesser.train(POSITIVE, "really neat") self.guesser.train(POSITIVE, "yay") self.guesser.train(POSITIVE, "ftw") self.guesser.train(POSITIVE, "I want") self.guesser.train(POSITIVE, "best looking") self.guesser.train(POSITIVE, "imrpessive") self.guesser.train(POSITIVE, "positive") self.guesser.train(POSITIVE, "thx") self.guesser.train(POSITIVE, "thanks") self.guesser.train(POSITIVE, "thank you") self.guesser.train(POSITIVE, "endorse") self.guesser.train(POSITIVE, "clearly superior") self.guesser.train(POSITIVE, "superior") self.guesser.train(POSITIVE, "really love") self.guesser.train(POSITIVE, "woot") self.guesser.train(POSITIVE, "w00t") self.guesser.train(POSITIVE, "super") self.guesser.train(POSITIVE, "wonderful") self.guesser.train(POSITIVE, "leaning towards") self.guesser.train(POSITIVE, "rally") self.guesser.train(POSITIVE, "incredible") self.guesser.train(POSITIVE, "the best") self.guesser.train(POSITIVE, "is the best") self.guesser.train(POSITIVE, "strong") self.guesser.train(POSITIVE, "would love") self.guesser.train(POSITIVE, "rally") self.guesser.train(POSITIVE, "very quickly") self.guesser.train(POSITIVE, "very cool") self.guesser.train(POSITIVE, "absolutely love") self.guesser.train(POSITIVE, "very exceptional") self.guesser.train(POSITIVE, "so proud") self.guesser.train(POSITIVE, "funny") self.guesser.train(POSITIVE, "recommend") self.guesser.train(POSITIVE, "so proud") self.guesser.train(POSITIVE, "so great") self.guesser.train(POSITIVE, "so cool") self.guesser.train(POSITIVE, "cool") self.guesser.train(POSITIVE, "wowsers") self.guesser.train(POSITIVE, "plus") self.guesser.train(POSITIVE, "liked it") self.guesser.train(POSITIVE, "make a difference") self.guesser.train(POSITIVE, "moves me") self.guesser.train(POSITIVE, "inspired") self.guesser.train(POSITIVE, "OK") self.guesser.train(POSITIVE, "love it") self.guesser.train(POSITIVE, "LOL") self.guesser.train(POSITIVE, ":)") self.guesser.train(POSITIVE, ";)") self.guesser.train(POSITIVE, ":-)") self.guesser.train(POSITIVE, ";-)") self.guesser.train(POSITIVE, ":D") self.guesser.train(POSITIVE, ";]") self.guesser.train(POSITIVE, ":]") self.guesser.train(POSITIVE, ":p") self.guesser.train(POSITIVE, ";p") self.guesser.train(POSITIVE, "voting for") self.guesser.train(POSITIVE, "great") self.guesser.train(POSITIVE, "agreeable") self.guesser.train(POSITIVE, "amused") self.guesser.train(POSITIVE, "brave") self.guesser.train(POSITIVE, "calm") self.guesser.train(POSITIVE, "charming") self.guesser.train(POSITIVE, "cheerful") self.guesser.train(POSITIVE, "comfortable") self.guesser.train(POSITIVE, "cooperative") self.guesser.train(POSITIVE, "courageous") self.guesser.train(POSITIVE, "delightful") self.guesser.train(POSITIVE, "determined") self.guesser.train(POSITIVE, "eager") self.guesser.train(POSITIVE, "elated") self.guesser.train(POSITIVE, "enchanting") self.guesser.train(POSITIVE, "encouraging") self.guesser.train(POSITIVE, "energetic") self.guesser.train(POSITIVE, "enthusiastic") self.guesser.train(POSITIVE, "excited") self.guesser.train(POSITIVE, "exuberant") self.guesser.train(POSITIVE, "excellent") self.guesser.train(POSITIVE, "I like") self.guesser.train(POSITIVE, "fine") self.guesser.train(POSITIVE, "fair") self.guesser.train(POSITIVE, "faithful") self.guesser.train(POSITIVE, "fantastic") self.guesser.train(POSITIVE, "fine") self.guesser.train(POSITIVE, "friendly") self.guesser.train(POSITIVE, "fun ") self.guesser.train(POSITIVE, "funny") self.guesser.train(POSITIVE, "gentle") self.guesser.train(POSITIVE, "glorious") self.guesser.train(POSITIVE, "good") self.guesser.train(POSITIVE, "pretty good") self.guesser.train(POSITIVE, "happy") self.guesser.train(POSITIVE, "healthy") self.guesser.train(POSITIVE, "helpful") self.guesser.train(POSITIVE, "high") self.guesser.train(POSITIVE, "agile") self.guesser.train(POSITIVE, "responsive") self.guesser.train(POSITIVE, "hilarious") self.guesser.train(POSITIVE, "jolly") self.guesser.train(POSITIVE, "joyous") self.guesser.train(POSITIVE, "kind") self.guesser.train(POSITIVE, "lively") self.guesser.train(POSITIVE, "lovely") self.guesser.train(POSITIVE, "lucky") self.guesser.train(POSITIVE, "nice") self.guesser.train(POSITIVE, "nicely") self.guesser.train(POSITIVE, "obedient") self.guesser.train(POSITIVE, "perfect") self.guesser.train(POSITIVE, "pleasant") self.guesser.train(POSITIVE, "proud") self.guesser.train(POSITIVE, "relieved") self.guesser.train(POSITIVE, "silly") self.guesser.train(POSITIVE, "smiling") self.guesser.train(POSITIVE, "splendid") self.guesser.train(POSITIVE, "successful") self.guesser.train(POSITIVE, "thankful") self.guesser.train(POSITIVE, "thoughtful") self.guesser.train(POSITIVE, "victorious") self.guesser.train(POSITIVE, "vivacious") self.guesser.train(POSITIVE, "witty") self.guesser.train(POSITIVE, "wonderful") self.guesser.train(POSITIVE, "zealous") self.guesser.train(POSITIVE, "zany") self.guesser.train(POSITIVE, "rocks") self.guesser.train(POSITIVE, "comeback") self.guesser.train(POSITIVE, "pleasantly surprised") self.guesser.train(POSITIVE, "pleasantly") self.guesser.train(POSITIVE, "surprised") self.guesser.train(POSITIVE, "love") self.guesser.train(POSITIVE, "glad") self.guesser.train(POSITIVE, "yum") self.guesser.train(POSITIVE, "interesting") self.guesser.train(NEGATIVE, "FTL") self.guesser.train(NEGATIVE, "irritating") self.guesser.train(NEGATIVE, "not that good") self.guesser.train(NEGATIVE, "suck") self.guesser.train(NEGATIVE, "lying") self.guesser.train(NEGATIVE, "duplicity") self.guesser.train(NEGATIVE, "angered") self.guesser.train(NEGATIVE, "dumbfounding") self.guesser.train(NEGATIVE, "dumbifying") self.guesser.train(NEGATIVE, "not as good") self.guesser.train(NEGATIVE, "not impressed") self.guesser.train(NEGATIVE, "stomach it") self.guesser.train(NEGATIVE, "pw") self.guesser.train(NEGATIVE, "pwns") self.guesser.train(NEGATIVE, "pwnd") self.guesser.train(NEGATIVE, "pwning") self.guesser.train(NEGATIVE, "in a bad way") self.guesser.train(NEGATIVE, "horrifying") self.guesser.train(NEGATIVE, "wrong") self.guesser.train(NEGATIVE, "flailing") self.guesser.train(NEGATIVE, "failing") self.guesser.train(NEGATIVE, "fallen way behind") self.guesser.train(NEGATIVE, "fallen behind") self.guesser.train(NEGATIVE, "lose") self.guesser.train(NEGATIVE, "fallen") self.guesser.train(NEGATIVE, "self-deprecating") self.guesser.train(NEGATIVE, "hunker down") self.guesser.train(NEGATIVE, "duh") self.guesser.train(NEGATIVE, "get killed by") self.guesser.train(NEGATIVE, "got killed by") self.guesser.train(NEGATIVE, "hated us") self.guesser.train(NEGATIVE, "only works in safari") self.guesser.train(NEGATIVE, "must have ie") self.guesser.train(NEGATIVE, "fuming and frothing") self.guesser.train(NEGATIVE, "heavy") self.guesser.train(NEGATIVE, "buggy") self.guesser.train(NEGATIVE, "unusable") self.guesser.train(NEGATIVE, "nothing is") self.guesser.train(NEGATIVE, "is great until") self.guesser.train(NEGATIVE, "don't support") self.guesser.train(NEGATIVE, "despise") self.guesser.train(NEGATIVE, "pos") self.guesser.train(NEGATIVE, "hindrance") self.guesser.train(NEGATIVE, "sucks") self.guesser.train(NEGATIVE, "problems") self.guesser.train(NEGATIVE, "not working") self.guesser.train(NEGATIVE, "fuming") self.guesser.train(NEGATIVE, "annoying") self.guesser.train(NEGATIVE, "frothing") self.guesser.train(NEGATIVE, "poorly") self.guesser.train(NEGATIVE, "headache") self.guesser.train(NEGATIVE, "completely wrong") self.guesser.train(NEGATIVE, "sad news") self.guesser.train(NEGATIVE, "didn't last") self.guesser.train(NEGATIVE, "lame") self.guesser.train(NEGATIVE, "pet peeves") self.guesser.train(NEGATIVE, "pet peeve") self.guesser.train(NEGATIVE, "can't send") self.guesser.train(NEGATIVE, "bullshit") self.guesser.train(NEGATIVE, "fail") self.guesser.train(NEGATIVE, "so terrible") self.guesser.train(NEGATIVE, "negative") self.guesser.train(NEGATIVE, "anooying") self.guesser.train(NEGATIVE, "an issue") self.guesser.train(NEGATIVE, "drop dead") self.guesser.train(NEGATIVE, "trouble") self.guesser.train(NEGATIVE, "brainwashed") self.guesser.train(NEGATIVE, "smear") self.guesser.train(NEGATIVE, "commie") self.guesser.train(NEGATIVE, "communist") self.guesser.train(NEGATIVE, "anti-women") self.guesser.train(NEGATIVE, "WTF") self.guesser.train(NEGATIVE, "anxiety") self.guesser.train(NEGATIVE, "STING") self.guesser.train(NEGATIVE, "nobody spoke") self.guesser.train(NEGATIVE, "yell") self.guesser.train(NEGATIVE, "Damn") self.guesser.train(NEGATIVE, "aren't") self.guesser.train(NEGATIVE, "anti") self.guesser.train(NEGATIVE, "i hate") self.guesser.train(NEGATIVE, "hate") self.guesser.train(NEGATIVE, "dissapointing") self.guesser.train(NEGATIVE, "doesn't recommend") self.guesser.train(NEGATIVE, "the worst") self.guesser.train(NEGATIVE, "worst") self.guesser.train(NEGATIVE, "expensive") self.guesser.train(NEGATIVE, "crap") self.guesser.train(NEGATIVE, "socialist") self.guesser.train(NEGATIVE, "won't") self.guesser.train(NEGATIVE, "wont") self.guesser.train(NEGATIVE, ":(") self.guesser.train(NEGATIVE, ":-(") self.guesser.train(NEGATIVE, "Thanks") self.guesser.train(NEGATIVE, "smartass") self.guesser.train(NEGATIVE, "don't like") self.guesser.train(NEGATIVE, "too bad") self.guesser.train(NEGATIVE, "frickin") self.guesser.train(NEGATIVE, "snooty") self.guesser.train(NEGATIVE, "knee jerk") self.guesser.train(NEGATIVE, "jerk") self.guesser.train(NEGATIVE, "reactionist") self.guesser.train(NEGATIVE, "MUST DIE") self.guesser.train(NEGATIVE, "no more") self.guesser.train(NEGATIVE, "hypocrisy") self.guesser.train(NEGATIVE, "ugly") self.guesser.train(NEGATIVE, "too slow") self.guesser.train(NEGATIVE, "not reliable") self.guesser.train(NEGATIVE, "noise") self.guesser.train(NEGATIVE, "crappy") self.guesser.train(NEGATIVE, "horrible") self.guesser.train(NEGATIVE, "bad quality") self.guesser.train(NEGATIVE, "angry") self.guesser.train(NEGATIVE, "annoyed") self.guesser.train(NEGATIVE, "anxious") self.guesser.train(NEGATIVE, "arrogant") self.guesser.train(NEGATIVE, "ashamed") self.guesser.train(NEGATIVE, "awful") self.guesser.train(NEGATIVE, "bad") self.guesser.train(NEGATIVE, "bewildered") self.guesser.train(NEGATIVE, "blues") self.guesser.train(NEGATIVE, "bored") self.guesser.train(NEGATIVE, "clumsy") self.guesser.train(NEGATIVE, "combative") self.guesser.train(NEGATIVE, "condemned") self.guesser.train(NEGATIVE, "confused") self.guesser.train(NEGATIVE, "crazy") self.guesser.train(NEGATIVE, "flipped-out") self.guesser.train(NEGATIVE, "creepy") self.guesser.train(NEGATIVE, "cruel") self.guesser.train(NEGATIVE, "dangerous") self.guesser.train(NEGATIVE, "defeated") self.guesser.train(NEGATIVE, "defiant") self.guesser.train(NEGATIVE, "depressed") self.guesser.train(NEGATIVE, "disgusted") self.guesser.train(NEGATIVE, "disturbed") self.guesser.train(NEGATIVE, "dizzy") self.guesser.train(NEGATIVE, "dull") self.guesser.train(NEGATIVE, "embarrassed") self.guesser.train(NEGATIVE, "envious") self.guesser.train(NEGATIVE, "evil") self.guesser.train(NEGATIVE, "fierce") self.guesser.train(NEGATIVE, "foolish") self.guesser.train(NEGATIVE, "frantic") self.guesser.train(NEGATIVE, "frightened") self.guesser.train(NEGATIVE, "grieving") self.guesser.train(NEGATIVE, "grumpy") self.guesser.train(NEGATIVE, "helpless") self.guesser.train(NEGATIVE, "homeless") self.guesser.train(NEGATIVE, "hungry") self.guesser.train(NEGATIVE, "hurt") self.guesser.train(NEGATIVE, "ill") self.guesser.train(NEGATIVE, "itchy") self.guesser.train(NEGATIVE, "jealous") self.guesser.train(NEGATIVE, "jittery") self.guesser.train(NEGATIVE, "lazy") self.guesser.train(NEGATIVE, "lonely") self.guesser.train(NEGATIVE, "mysterious") self.guesser.train(NEGATIVE, "nasty") self.guesser.train(NEGATIVE, "rape") self.guesser.train(NEGATIVE, "naughty") self.guesser.train(NEGATIVE, "nervous") self.guesser.train(NEGATIVE, "nutty") self.guesser.train(NEGATIVE, "obnoxious") self.guesser.train(NEGATIVE, "outrageous") self.guesser.train(NEGATIVE, "panicky") self.guesser.train(NEGATIVE, "f*****g up") self.guesser.train(NEGATIVE, "repulsive") self.guesser.train(NEGATIVE, "scary") self.guesser.train(NEGATIVE, "selfish") self.guesser.train(NEGATIVE, "sore") self.guesser.train(NEGATIVE, "tense") self.guesser.train(NEGATIVE, "terrible") self.guesser.train(NEGATIVE, "testy") self.guesser.train(NEGATIVE, "thoughtless") self.guesser.train(NEGATIVE, "tired") self.guesser.train(NEGATIVE, "troubled") self.guesser.train(NEGATIVE, "upset") self.guesser.train(NEGATIVE, "uptight") self.guesser.train(NEGATIVE, "weary") self.guesser.train(NEGATIVE, "wicked") self.guesser.train(NEGATIVE, "worried") self.guesser.train(NEGATIVE, "is a fool") self.guesser.train(NEGATIVE, "painful") self.guesser.train(NEGATIVE, "pain") self.guesser.train(NEGATIVE, "gross") def classify(self, sentence): guess = self.guesser.guess(sentence) if len(guess) == 0: return NEUTRAL if len(guess) == 1: (sentiment, probabitily) = guess[0] return sentiment (max_sentiment, max_value) = guess[0] (min_sentiment, min_value) = guess[1] if max_value - min_value > self.THRESHHOLD: return max_sentiment return NEUTRAL def save(self): self.guesser.save() def load(self): self.guesser.load()
def action_train(self, cr, uid, ids, context=None): cat_obj = self.pool.get('crm.bayes.categories') group_obj = self.pool.get('crm.bayes.group') message_obj = self.pool.get('crm.bayes.test.guess') for id in ids: cat_id = self.read(cr, uid, id, ['category_id', 'name']) cat_id = cat_id[0]['category_id'] if result: max_list = max(result, key=lambda k: k[1]) if cat_id: cat_guess_msg = cat_obj.read(cr, uid, cat_id, ['train_messages']) cat_obj.write(cr, uid, cat_id, { 'train_messages': cat_guess_msg['train_messages'] + 1 }) if max_list[1] > 0 and not cat_id: cat_id = cat_obj.search(cr, uid, [('name', '=', max_list[0])])[0] cat_guess_msg = cat_obj.read(cr, uid, cat_id, ['guess_messages']) cat_obj.write(cr, uid, cat_id, { 'guess_messages': cat_guess_msg['guess_messages'] + 1 }) self.write(cr, uid, ids, {'category_id': cat_id}) if cat_id: cat_rec = cat_obj.read(cr, uid, cat_id, []) guesser = Bayes() data = "" for rec in group_obj.browse(cr, uid, [cat_rec['group_id'][0]]): if rec['train_data']: data += rec['train_data'] if data: myfile = file(file_path + "crm_bayes.bay", 'w') myfile.write(data) myfile.close() guesser.load(file_path + "crm_bayes.bay") guesser.train(cat_rec['name'], message_obj.read(cr, uid, id)[0]['name']) guesser.save(file_path + "crm_bayes.bay") myfile = file(file_path + "crm_bayes.bay", 'r') data = "" for fi in myfile.readlines(): data += fi cr.execute( "select sum(train_messages) as tot_train,sum(guess_messages) as tot_guess from crm_bayes_categories where group_id=%d" % cat_rec['group_id'][0]) rec = cr.dictfetchall() if not rec[0]['tot_guess']: rec[0]['tot_guess'] = 0 percantage = float( rec[0]['tot_guess'] * 100) / float(rec[0]['tot_guess'] + rec[0]['tot_train']) group_obj.write(cr, uid, cat_rec['group_id'][0], { 'train_data': data, 'automate_test': percantage }) else: raise osv.except_osv(_('Error !'), _('Please Select Category! ')) return { 'view_type': 'form', "view_mode": 'form', 'res_model': 'crm.bayes.train.message', 'type': 'ir.actions.act_window', 'target': 'new', }
from reverend.thomas import Bayes guesser = Bayes() f = open("spam.log",'r') for line in f: guesser.train('spam', line.strip()) f = open("notspam.log",'r') for line in f: guesser.train('notspam', line.strip()) guesser.save('spam.bay')
def save(self): """ Save the brain to disk """ Bayes.save(self,self.brain)
def untrain(self,bucket,words): """ Remove nominated words from the relevant bucket """ Bayes.untrain(self,bucket,words) Bayes.save(self,self.brain)
import twitter guesser = Bayes() # train on the full set minus 500 reviews of each type pos = open('pos_smiles_5k') for sent in pos: guesser.train('pos', sent.rstrip()) neg = open('neg_smiles_5k') for sent in neg: guesser.train('neg', sent.rstrip()) guesser.save('twitter_guesser.bay') api = twitter.Api() latest = api.GetPublicTimeline() threshold = 0.1 for tweet in latest: classif = guesser.guess(tweet.text) if len(classif) == 2: if classif[0][1] - classif[1][1] > threshold: print "%s : %s!" % (tweet.text, classif[0][0]) else: print "%s : NOISE" % tweet.text else: if len(classif) == 1:
guesser = Bayes() for each in ('north','south','east','west'): guesser.train('do_move', 'to the %s' % each) guesser.train('do_move', 'head %s' % each) guesser.train('do_move', 'spin %s' % each) # if we don't do this 'do_move' is going to get too dominant guesser.train('do_take', 'grab') guesser.train('do_take', 'grab the') guesser.train('do_take', 'pick up') guesser.train('do_take', 'pick up the') guesser.train('do_take', 'lift') guesser.train('do_take', 'lift the') guesser.train('do_take', 'fetch') guesser.train('do_take', 'fetch the') bulk = """wear suit of armour put on suit of armour use armor climb into armour wear the armor place armour on me place armor on self""" for line in bulk.splitlines(): guesser.train('do_take', line) guesser.save('commands.bays') #print guesser.guess('fetch')
def save(self): """ Save the brain to disk """ Bayes.save(self, self.brain)
for line in reader: body = line[1] if line[2] == "visible": status = "visible" else: status = "moderated" clean_body = re.sub("<[^>]*>","",body) guesser.train(status, clean_body) try: guesser.load('dataset.dat') except IOError as e: load_csv_to_bayes('good.csv') load_csv_to_bayes('bad.csv') guesser.save('dataset.dat') from flask import Flask, request from flask import render_template app = Flask(__name__) @app.route("/moderate") def moderate(): if request.args.has_key('callback'): wrapper = request.args.get('callback')+"(%s)" else: wrapper = "%s" results = guesser.guess(request.args.get('body')) return wrapper % (json.dumps(results))
from reverend.thomas import Bayes guesser = Bayes() guesser.train('french', 'le la les du un une je il elle de en') guesser.train('german', 'der die das ein eine') guesser.train('spanish', 'el uno una las de la en') guesser.train('english', 'the it she he they them are were to') guesser.guess('they went to el cantina') guesser.guess('they were flying planes') guesser.train('english', 'the rain in spain falls mainly on the plain') guesser.save('my_guesser.bay')
class Guesser(): def __init__(self, feed, user, config): import os.path self.user = user self.filename = config['bayes_dir'] self.filename += "/users/%s" % user.id if not os.path.exists(self.filename): os.makedirs(self.filename) self.filename += '/feed_%s.bayes' % str(feed.id) log.debug("filename:%s" % self.filename) stopwords = meta.Session\ .query(model.Stopword)\ .filter_by(feed_id=feed.id).all() self.stopwords = map(lambda x: x.word, stopwords) self.trainer = Bayes() self.trainer.getTokens = lambda x: my_tokenize(x, self.stopwords) if os.path.exists(self.filename): self.trainer.load(self.filename) else: self.trainer.newPool('ham') self.trainer.newPool('spam') def save(self): self.trainer.save(self.filename) def clear(self): self.trainer = Bayes() # self.trainer.getTokens = my_tokenize self.trainer.getTokens = lambda x: my_tokenize(x, self.stopwords) self.trainer.newPool('ham') self.trainer.newPool('spam') def is_spam(self, entry, use_classified=True): if use_classified: classy = meta.Session\ .query(model.Classification)\ .filter_by(user_id = self.user.id, entry_id=entry.id).first() if classy: if classy.pool == 'spam': return True elif classy.pool == 'ham': return False else: raise "bad pool" g = self.guess(entry) if g['spam'] and not g['ham']: return True if not g['spam'] and g['ham']: return False return (g['spam'] > g['ham']) def guess(self, entry): from rssmonster.controllers.bayes import __relevant__ log.debug("__relevant__(entry) %s" % __relevant__(entry)) log.debug("__relevant__(entry) %s" % self.trainer.guess(__relevant__(entry))) log.debug('self.filename: %s' % self.filename) # ret = dict(self.trainer.guess(__relevant__(entry))) ret = dict(self.trainer.guess(__relevant__(entry))) log.debug("ret: %s" % ret) if not 'spam' in ret: ret['spam'] = None if not 'ham' in ret: ret['ham'] = None return ret