def treina(expressao_regular, etiquetador, destino, raiz=".", proporcoes=[100], razao=1.0, codificacao="utf-8"): regexp_tagger=abre_etiquetador(etiquetador) corpus=TaggedCorpusReader(raiz, expressao_regular, encoding=codificacao) print "Conjunto de treino:\n%s\n" % " \n".join(corpus.fileids()) sents=corpus.tagged_sents() #print sents[3] #print type(sents[3][0][0]) c=len(sents) # proporção do conjunto de desenvolvimento # em relação a um determinado corpus # proporcoes=[10,30,50,70,100] # razão entre sentencas de treino e total de sentencas # razao=0.75 for n in proporcoes: proporcao=n/100.0 size=int(c*proporcao) dev=sents[:size] size=int(len(dev)*razao) train=dev[:size] print "\n\nQuantidade de sentenças" print "Conjunto de treinamento: %d" % len(train) print "Total de %d tokens" % len(sum(train, [])) test=dev[size:] print "Conjunto de teste: %d sentenças" % len(test) print "Total de %d tokens" % len(sum(test, [])) t1=time.time() rubt=backoff_tagger(train, [UnigramTagger,BigramTagger,TrigramTagger], backoff=regexp_tagger) t2=time.time() print "Tempo de treinamento em segundos: %f" % (t2-t1) print 'Etiquetagem da sentença-exemplo "%s"\n' % EXEMPLO,rubt.tag(SENTENCA) f=open(destino,"wb") cPickle.dump(rubt,f,-1) if razao < 1.0: t1=time.time() # introduzir avaliação por meio de Avalia.testa_etiquetador print "\nAcurácia na etiquetagem do conjunto de teste: %f" % rubt.evaluate(test) t2=time.time() print "Tempo de avaliação em segundos: %f" % (t2-t1)
def treina(expressao_regular, etiquetador=INICIAL, destino="BRUBT.pkl", raiz=".", codificacao="utf-8", max_rules=100, min_score=3): inicial = abre_etiquetador(etiquetador) corpus = TaggedCorpusReader(raiz, expressao_regular, encoding=codificacao) train_sents = corpus.tagged_sents() trainer = brill.FastBrillTaggerTrainer(inicial, TEMPLATES) brubt = trainer.train(train_sents, max_rules=max_rules, min_score=min_score) print 'Etiquetagem da sentença-exemplo "%s"\n' % EXEMPLO, brubt.tag( SENTENCA) f = open(destino, "wb") dump(brubt, f, -1) f.close()