A tarefa era a seguinte: dada uma frase, classificar o tipo de sujeito que ela possui: Sujeito Explícito, Oculto, Indeterminado ou Inexistente (oração sem sujeito). Isso foi feito extraíndo-se alguns atributos das frases e usando probabilidades calculadas de um conjunto de treinamento (aprendizagem supervisionada).
Escolhi os seguintes atributos, de fácil extração: número de palavras da frase, número e pessoa do verbo, classe gramatical do termo anterior ao verbo, presença de "-se", infinitivo do verbo é "haver";
Por exemplo, na frase: "Ele leu o blog.", temos os seguintes atributos:
Núm. palavras: 4
Núm e pessoa do verbo: 3a pessoa, singular
Classe do termo anterior: pronome
Presença de "-se": não
É verbo "haver": não
E se for parte do treinamento, fornecemos a classe: Sujeito Explícito.
Com o Naive Bayes Classifier, assumimos que todos os atributos são independentes. Então bastam as probabilidades a priori de cada classe e as condicionais de cada atributo dada a classe.
Então a aprendizagem calcula probabilidades a priori com suas frequencias, como:
p(Suj. Explicito) = quantidade de frases SE / quantidade total de frases no conjunto de treinamento
E também as probabilidades condicionais, por exemplo:
p(termo anterior=pronome|classe=suj. oculto)
Nos testes que realizei, treinando com frases de textos jornalísticos e do conto "A cartomante" de Machado de Assis, obtive taxa de acerto de 84%.