package etiquetador;

import edu.stanford.nlp.tagger.maxent.MaxentTagger;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import javax.swing.JOptionPane;

/**
 *
 * @author Prof. Pablo Freire Matos
 * IV simSIS - Simpósio de Sistemas de Informação
 */
public class Main {

    public static void main(String[] args) throws FileNotFoundException {

        /* Objetivo: Etiquetar as palavras dos arquivos com extensão .txt
         * Entrada: arquivo.txt 
         * Processamento: Etiquetar as palavras
         * Saida: arquivo.tagger */

        String dir = System.getProperty("user.dir");
        String modelFile = dir + "/models/bidirectional-distsim-wsj-0-18.tagger"; // modelo mais preciso, mas requer mais memória
        //String modelFile = dir + "/models/left3words-wsj-0-18.tagger";  // modelo menos preciso
        ArrayList<String> files = Util.getFiles(dir, new String[]{"txt"});
        if (files.isEmpty()) {
            JOptionPane.showMessageDialog(null, "\nATENÇÃO: nenhum arquivo TXT foi encontrado no diretório!!!\n\n"
                    + "Diretório: " + dir);
        } else {
            try {
                System.out.println("\n(1) Abrindo o modelo de etiquetacao.\n Por favor, espere...\n");
                new MaxentTagger(modelFile);
            } catch (Exception e) {
                System.err.println("Erro: " + e.getMessage());
            }
            for (int i = 0; i < files.size(); i++) {
                String name = files.get(i);
                String filename = dir + "/" + name;
                System.out.println("\n" + (i + 1) + " de (" + files.size() + ")" + " Etiquetando as sentencas do arquivo \"" + name + "\".\nPor favor, espere...");

                ArrayList<String> sentences = Util.getSentence(filename);
                String output = "";
                for (int j = 0; j < sentences.size(); j++) {
                    String sentence = sentences.get(j);
                    String taggedSentence = MaxentTagger.tagString(sentence);
                    output += taggedSentence + "\n\n";
                }
                System.out.println("Arquivo " + (i + 1) + " etiquetado.");
                Util.writeFile(name.split(".txt")[0] + ".tagger", output);
            }
        }
    }
}
