• Nenhum resultado encontrado

Construção dos Exemplos de Treino

De forma a ser possível aplicar o algoritmo de classificação foi necessário construir os exemplos de treino a partir do corpus escolhido para o efeito. Inicialmente, a informação disponível encontra-se sob a forma de frases, onde cada uma das palavras tem associada uma determinada etiqueta. É por isso necessário processar esta informação de forma a obter um conjunto de instâncias descritas à custa dos atributos de predição previamente definidos.

Para cada uma das palavras do corpus de treino foram reunidos os valores dos atributos de predição escolhidos criando assim a partir de cada uma, um exemplo específico. A construção dos exemplos foi feita frase a frase. O contexto de uma determinada palavra deve apenas conter informação sobre as etiquetas das palavras vizinhas, dentro dos limites da frase [Steven Bird and Loper, 2009]. Por este motivo, adoptámos um valor extra para os atributos relacionados com o contexto da palavra: None. Este valor deve ser usado para todos os atributos relacionados com o contexto, para os quais não exista a palavra correspondente na frase. Consideremos como exemplos a frase anotada:

hh The, DET i, h cat, Ni, h eat, V i, h the, DET i, h fish, Nii

Onde cada palavra tem associada uma etiqueta, representativa da parte do discurso com que está a ser usada na frase h Palavra, Etiquetai. O exemplo de treino correspondente à primeira palavra, The, deveria conter os seguintes valores para os atributos adoptados:

2. Etiqueta da segunda palavra à esquerda = None 3. Etiqueta da primeira palavra à esquerda = None 4. Etiqueta da primeira palavra à direita = N 5. Etiqueta da segunda palavra à direita = V 6. Etiqueta da terceira palavra à direita = DET 7. A palavra começa com maiúscula = Verdadeiro 8. A palavra é a primera da frase? = Verdadeiro 9. A palavra termina em ed? = Falso

10. A palavra termina em ing? = Falso 11. A palavra termina em es? = Falso 12. A palavra termina em ould? = Falso 13. A palavra termina em ’s? = Falso 14. A palavra termina em s? = Falso

15. A palavra contém números ou . e números? = Falso

A frase em causa estabelece cinco exemplos de treino, um exemplo para cada palavra que a compõe. Generalizando, podemos estabelecer que uma frase com n palavras, determinará n exemplos de treino. No exemplo anterior, usámos as etiquetas N para representar a classe gramatical Substantivo, V para representar a classe gramatical Verbo, e, finalmente, DET para representar a classe gramatical Determinante. Como já dissemos, o valor None deve ser usado sempre que o atributo correspondente não se aplique. Esta situação ocorre nas primeiras, e últimas, três palavras de uma frase. A última palavra da frase, fish, estabelece o seguinte exemplo de treino:

1. Etiqueta da terceira palavra à esquerda = N 2. Etiqueta da segunda palavra à esquerda = V 3. Etiqueta da primeira palavra à esquerda = DET 4. Etiqueta da primeira palavra à direita = None 5. Etiqueta da segunda palavra à direita = None

6. Etiqueta da terceira palavra à diretita = None 7. A palavra começa com maiúscula = Falso 8. A palavra é a primera da frase? = Falso 9. A palavra termina em ed? = Falso 10. A palavra termina em ing? = Falso 11. A palavra termina em es? = Falso 12. A palavra termina em ould? = Falso 13. A palavra termina em ’s? = Falso 14. A palavra termina em s? = Falso

15. A palavra contém números ou . e números? = Falso

Para cada um dos exemplos foram também guardadas a palavra que lhe deu origem, e a etiqueta a ela associada. Um tuplo de tamanho 17 foi usado para guardar esta informação. As primeiras 15 posições correspondem aos atributos de predição, pela ordem em que aparecem na lista anterior, e as duas últimas correspondem à palavra e à etiqueta. Os exemplos anteriores seriam armazenados à custa dos seguintes tuplos: h None, None, None, N, V, DET, Verdadeiro, Verdadeiro, Falso, Falso, Falso, Falso, Falso, Falso, Falso, The, DET i

h N, V, DET, None, None, None, Falso, Falso, Falso, Falso, Falso, Falso, Falso, Falso, Falso, fish, N i

Após determinados os exemplos, foi necessário organizá-los em conjuntos diferentes de acordo com o problema de classificação a que dizem respeito. Para cada um dos objectos a classificar foi necessário construir o respectivo conjunto de exemplos. Como os valores possíveis para a classe são Sim e Não, vamos designar por conjunto de exemplos positivos, o conjunto composto por exemplos classificados com o valor Sim, e por conjunto de exemplos negativos, o conjunto formado pelos exemplos classificados com o valor Não.

No exemplo anterior foram usadas três etiquetas distintas para marcar as palavras da frase. Vamos admitir que o problema que estamos a tentar resolver consiste apenas em determinar conjuntos de regras para os objectos determinados pelo conjunto de eti- quetas E = {DET, V, N}. Para cada uma das instâncias do problema de classificação, terão que ser construídos os conjuntos de exemplos positivos e negativos. O conjunto de exemplos para o problema de classificação determinado pelo objecto DET, deverá

ser composto por exemplos determinados por palavras marcadas com a etiqueta DET (exemplos positivos), e por exemplos determinados por palavras marcadas com uma etiqueta diferente de DET.

Referimos atrás que a dimensão do conjunto de etiquetas usado na marcação dos di- ferentes corpora anotados, varia de corpus para corpus. Contudo, os valores típicos encontram-se entre as 20 e as 80 etiquetas. Este facto levanta uma dificuldade na cons- trução dos conjuntos de exemplos positivos e negativos para cada etiqueta, relacionada com a construção dos conjuntos de exemplos negativos. Na situação mais favorável, admitindo um conjunto de 20 etiquetas, o conjunto de exemplos negativos para uma das etiquetas e seria constituído por todos os exemplos determinados por palavras que não estivessem marcadas no corpus com a etiqueta e. O resultado seria um conjunto com uma elevada cardinalidade. Uma forma de resolver esta situação seria limitar o conjunto de exemplos negativos às situações mais relevantes para o problema que se pretende resolver.

Interessa neste ponto relembrar que o objectivo deste trabalho não é obter um classifica- dor, mas sim encontrar um conjunto de regras que ajudem a escolher a melhor etiqueta para uma palavra, a partir de um conjunto de etiquetas possíveis. Este conjunto não é, tipicamente, composto por todas as etiquetas do conjunto de etiquetas do corpus, mas sim um subconjunto deste último, composto geralmente, por um número pequeno de elementos. Durante o processo de marcação das PdD a marcação das palavras que apenas podem ser usadas com uma etiqueta, é óbvia. As palavras problemáticas são aquelas que são ambíguas. Ou seja, aquelas que podem ser usadas de diferentes formas numa frase. Estamos a falar de todas as palavras para as quais o conjunto de etiquetas possíveis tem cardinalidade superior a 1.

As considerações que acabámos de tecer conduziram-nos à adopção de um mecanismo para a construção dos exemplos de treino diverso do que seria habitual. Este me- canismo baseia-se na assunção de que os exemplos mais relevantes para o problema que pretendemos resolver, são os determinados por palavras ambíguas. Daqui decorre que o processo de construção dos conjuntos de exemplos positivos e negativos deve- ria apenas ser composto por exemplos derivados de palavras ambíguas. Este processo permite reduzir o tamanho dos conjuntos de exemplos de treino de cada uma das eti- quetas, contribuindo assim para uma redução do tempo de execução do algoritmo de classificação.

O algoritmo concebido para definir o conjunto de exemplos positivos, e negativos, para cada uma das etiquetas, foi o seguinte (ver Algoritmo 5.2):

• Para cada um dos exemplos hxi, eii do conjunto total de exemplos, T , determi- nado pela palavra pi marcada com a etiqueta ei 2 E, o algoritmo investiga se pi é uma palavra ambígua, verificando se esta surge com mais do que uma hipótese

de marcação no dicionário.

• Se pi é uma palavra ambígua, e Pi é o conjunto de etiquetas possíveis para essa palavra, então:

– Coloque-se xi no conjunto de exemplos positivos da etiqueta e.

– Coloque-se xino conjunto de exemplos negativos de todas as etiquetas t 2 Pi com t 6= e.

Algoritmo 5.2Algoritmo para construção dos exemplos de treino Entrada: Exemplos, Dicionário

Saída: ExemplosPos, ExemplosNeg para e em Exemplos faz

dim dimensão(e) palavra e[dim 2] etiqueta e[dim 1]

se e[:dim 2] 2 ExemplosPos[etiqueta] então

ExemplosPos[etiqueta][e[:dim-2]] ExemplosPos[etiqueta][e[:dim 2]] +1 senão ExemplosPos[etiqueta][e[:dim-2]] 1 fim se possibilidades Dicionário[palavra] possibilidades.remove(etiqueta) para c em possibilidades faz

se e[:dim 2] 2 ExemplosNeg[c] então

ExemplosNeg[c][e[:dim-2]] ExemplosNeg[c][e[:dim-2]] +1 senão ExemplosNeg[c][e[:dim-2]] 1 fim se fim para fim para

Como podemos observar no Algoritmo 5.2, a informação que passa a ser guardada em cada um dos exemplos é limitada às primeira 15 posições do 17-tuplo que forma o exemplo original, passando a dizer apenas respeito aos valores dos atributos de predição, ignorando-se a palavra e a etiqueta que lhe deu origem. Como os exemplos positivos e negativos foram organizados em dois conjuntos distintos não houve necessidade de classificar cada um com a classe correspondente (Sim ou Não), formando os pares (xi, yi) mencionados no início do capítulo. Porém, foram formados pares (xi, oi) com oi a representar o número de ocorrências da instância xi. Com esta associação a compactação dos conjunto de exemplos é reforçada, sem se perder no entanto significado estatístico.