Example #1
0
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)
Example #2
0
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()