• Nenhum resultado encontrado

Classificação de documentos

No documento Joao Santos Oliveira (páginas 82-86)

5. IMPLEMENTAÇÃO

5.3. Classificação dos documentos

5.3.4. LIBSVM

5.3.4.3. Classificação de documentos

No processo de classificação de documentos existe uma diferença relativamente aos restantes algoritmos no que diz respeito à extração de features. Como já foi referido no treino das máquinas de vectores de suporte é necessário que na classificação de documentos a matriz

BOW contenha os mesmos termos que foram usados no treino desses classificadores. É por essa razão que depois de realizado o treino de cada SVM é guardado na base de dados um ficheiro com todas as features extraídas e outro com os valores de IDF de todas as features, caso tenha sido usado o método TFIDF na criação dos vectores. Para além destes ficheiros, também foram guardadas as opções usadas na extração de características. Desta forma o utilizador apenas terá de escolher os documentos que quer classificar e o classificador que pretende usar para classificar esses documentos.

Após a obtenção dos documentos existem duas formas distintas de conseguir recriar a matriz

BOW usada no treino. Estas formas dependem da ontologia que foi usada nessa extração de

features existindo por isso, de um lado, a extração sem recurso a qualquer ontologia ou

através da ontologia GO, e do outro a extração através da ontologia Merops.

No caso de no treino não ter sido usada qualquer ontologia, ou ter sido usado a ontologia GO a matriz é criada pelo WVTool. Esta funcionalidade teve de ser adicionada à biblioteca uma vez que não está disponível na versão original da mesma. Neste caso a principal diferença relativamente a uma extração de features normal consiste em criar logo no inicio a lista com os termos extraídos no treino do classificador em vez da adição dos termos a essa lista à medida que são segmentados os documentos. Ao longo dessa segmentação não são adicionados novos termos e apenas são considerados os que estão presentes nessa lista. Existe ainda o caso especial da criação dos vectores ter sido realizado através do método

TFIDF. Neste caso é necessário ter em atenção a importância que os termos extraídos tinham

no conjunto de documentos usado no treino, sendo por essa razão que o valor IDF para cada termo foi guardado. Na altura de criação dos vectores que formam a matriz BOW é usada a frequência de uma feature no documento a classificar e multiplicado esse valor pela importância que a feature apresentava no conjunto de documentos de treino ao invés da importância que apresenta no conjunto de documentos a classificar.

No caso de no treino ter sido usada a ontologia Merops na extração de features é usado o mesmo processo que foi usado no caso anterior não recorrendo, no entanto, ao WVTool. Também aqui é criada uma lista inicial com os termos do treino e apenas serão contabilizados esses termos. Também no caso especial de criação de vectores da matriz BOW com o método

TFIDF, o processo usado é mesmo.

Com a matriz criada, são preparadas de seguida todas as dependências para a classificação dos documentos. A função createAlgorithmFiles encarrega-se dessa tarefa e coloca na pasta de

resultados o ficheiro Matlab que irá classificar os documentos, bem como o modelo com o classificador treinado.

Tendo todos os ficheiros necessários preparados, é executado o algoritmo, sendo os resultados apresentados em dois ficheiros de texto: resultados.txt e probabilidades.txt. Estes ficheiros, apresentados na Figura 41 são bastante similares aos que são criados pelo algoritmo K-means. No caso do ficheiro resultados.txt cada linha corresponde a um documento e o valor nessa linha corresponde ao identificador da classe atribuída a esse documento.

Figura 41 – Exemplo dos ficheiros de resultados criados pelo algoritmo de classificação No caso do ficheiro probabilidades.txt cada linha corresponde também a um documento e cada coluna a uma classe. Os valores em cada célula correspondem à probabilidade de um documento pertencer a essa classe. A soma das probabilidades de um documento pertencer a cada uma das classes deve ser igual a 1.

Figura 42 – Diagrama de classes relativo ao processo de classificação de documentos

Algorit hm

+ algorit hmName: St ring + execut e() # execut eAlgorit hm() # createAlgorithmFiles() # GetResultsI nformation() Docum ent + Title: St ring + Cont ent : St ring + MarkedContent : String + Dat abase: St ring + I dI nDat abase: I nt eger + Aut hors: String + Journal: St ring

+ Publicat ionDate: DateTime

LibsvmCLass + Name: St ring + Number: I nt eger UserDet ails + Username: St ring + FirstName: St ring + SurName: St ring + PhoneNumber: String + Address: St ring + PostalCode: St ring + Localit y: St ring

Feat ureExt ract ionOpt ions + Ont ology: I nt eger

+ PruneBelow: I nt eger + PruneAbove: Integer + PruneFrequence: I nt eger + TermNGramGenerat or: Integer + MinimumLengt hWords: I nt eger + Vect orCreat ionType: I nt eger + TokenizerType: I nt eger + StemmerType: I nt eger

MatlabFile + FileType: Integer + FileCont ent : Byt e + FileName: St ring LibsvmTraining + Name: St ring + Descript ion: String 0. .1 1 1 0. .1 * 0. . 1 * 0. . 1 Libsvm ClassifyAlgorithm # override creat eAlgorit hmFiles() # override GetResultsI nf ormat ion()

1 0. . 1

Document Classification + Conf idence: Double

* 1 * 1

A informação presente nestes documentos é por fim lida e colocada em objetos da classe

DocumentClassification. Como se pode ver pela Figura 42, com o diagrama de classes

referente ao processo de classificação, esta classe é composta por um objeto LibsvmClass, um objeto Document e o valor de confiança associado ao documento pertencer à classe em questão.

Apesar do LIBSVM usar a estratégia um contra um em problemas multiclasse, que conta com um sistema de votos na classificação dos documentos ao invés do calculo de probabilidades, esta biblioteca realiza ainda assim uma estimativa dessa probabilidade bastando para isso usar o parâmetro b do algoritmo (probability estimates).

No documento Joao Santos Oliveira (páginas 82-86)

Documentos relacionados