o parser com novos textos que precisarmos processar, um POS tagger sera necessario.Eu desenvolvi a nlpnet, uma biblioteca que usa redes neurais para algumas tarefas em PLN e adoraria poder usa-la aqui tambem, ja que tem uma excelente performance com POS em portugues. No entanto, o CoreNLP precisa que o POS tagger seja chamado dentro do seu codigo, em Java. Criar uma versao da nlpnet dentro da estrutura do CoreNLP e perfeitamente possivel, mas tambem seria bem trabalhoso. No fim das contas, e bem mais facil usar o tagger do proprio CoreNLP (eu cheguei a comparar a performance dele com a da nlpnet treinada no mesmo corpus, e a nlpnet de fato e um pouco melhor).Para treinar um modelo do tagger, e preciso criar um arquivo de propriedades (que indica parametros de treinamento). Use o seguinte comando no terminal (considerando que esteja no diretorio do CoreNLP):java -cp "*;lib/*" edu.stanford.nlp.tagger.maxent.MaxentTagger -genpropsA sintaxe acima para o -cp se aplica ao Windows. Em Linux (e imagino que tambem Mac, mas nao testei), o argumento e "*:lib/*" (usa dois pontos em vez de ponto-e-virgula para juntar os diretorios do classpath).Gerado o arquivo, editei os seguintes campos:model = pt-model/pt-pos-tagger.datarch = left3words,bidirectional,generic,words(-1,1), unicodeshapes(-1,1), suffix(4), prefix(4)trainFile = format=TSV,wordColumn=1,tagColumn=4,pt-model/pt-br-universal-train.conllencoding = UTF-8As linhas comecando com # sao comentarios. model indica o nome do arquivo do modelo a ser salvo. arch e uma serie de diferentes parametros para o funcionamento do tagger, e talvez examinar diferentes combinacoes leve a melhores resultados. trainFile especifica o nome e formato do arquivo com os dados de treino, e o formato TSV indica Tab Separated Values. Note que esse formato e valido para o corpus do Universal Dependencies, mas se voce estiver usando um corpus diferente, talvez tenha que mudar. Por fim, encoding e sempre bom se usar UTF-8.Pronto o arquivo, e so rodar o tagger:java -cp "javanlp-core.jar;lib/*" edu.stanford.nlp.tagger.maxent.MaxentTagger -prop tagger-props.txtO CoreNLP vai mostrar na tela o progresso do treinamento. Para avaliar o modelo treinado, basta trocar a linha do trainFile por testFile e dar o nome do arquivo com dados de teste. O modelo que treinei obteve uma acuracia geral de 96,83%, sendo 91,38% das palavras desconhecidas (ausentes do conjunto de treino) corretas. Nada mal.ParserCom o tagger treinado, podemos treinar o parser. Note que as ferramentas do CoreNLP nao seguem sempre o mesmo padrao de configuracao: enquanto o POS tagger usa um arquivo com os parametros, para o parser de dependencias e tudo passado via linha de comando. Aqui esta a chamada que fiz:java -cp "javanlp-core.jar;lib/*" edu.stanford.nlp.parser.nndep.DependencyParser -trainFile pt-model/pt-br-universal-train.conll -devFile pt-model/pt-br-universal-dev.conll -embedFile pt-model/embeddings-pt.txt -embeddingSize 50 -model pt-model/dep-parser A opcao -embedFile requer um arquivo de word embeddings, os vetores numericos representando palavras, algo que tem se tornado bastante comum e util no PLN nos ultimos anos. Se voce nao tiver um modelo ja pronto, pode usar o que eu treinei sobre a Wikipedia e sites de noticias. E bem abrangente e deu otimos resultados. Caso use o meu modelo, veja que ele esta no formato do NumPy, acompanhado por um outro arquivo com o vocabulario, e o formato para o CoreNLP tem que ter, em cada