REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo...

78
1 UNIVERSIDADE SÃO FRANCISCO Engenharia de Computação VAGNER PINTO DUTRA REDES NEURAIS E O RECONHECIMENTO DE PADRÕES DE TEXTO Itatiba 2011

Transcript of REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo...

Page 1: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

1

UNIVERSIDADE SÃO FRANCISCO

Engenharia de Computação

VAGNER PINTO DUTRA

REDES NEURAIS E O RECONHECIMENTO DE

PADRÕES DE TEXTO

Itatiba 2011

Page 2: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

2

VAGNER PINTO DUTRA – RA 002200700552

REDES NEURAIS E O RECONHECIMENTO DE PADRÕES DE TEXTO

Monografia apresentada ao Curso de Engenharia de Computação da Universidade São Francisco, como requisito parcial para obtenção do título de Bacharel em Engenharia de Computação. Orientador: Prof. Silvio Petroli Neto

Itatiba 2011

Page 3: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

3

AGRADECIMENTOS

Agradeço primeiramente a Deus que me proporcionou esclarecimento

sobre o assunto e vontade para querer obter cada vez mais conhecimento.

É necessário também agradecer a todos os autores citados nesta obra e

aqueles que estão nas referências, pois sem eles nada disto seria possível.

Agradeço a meus familiares e amigos, que tiveram paciência e

sabedoria para aceitar meus momentos de ausência. Em especial para Denisi,

Francisca, Vitor, Ronaldo, Dorival e Regiane.

Ao meu orientador Profº Silvio Petroli Neto pela cobranças e ao Profº

Márcio Zuchini pelos conselhos e dicas no desenvolvimento deste trabalho e

seus resultados.

Bem como a todos os meus colegas de sala que estão nesta mesma luta

desde 2007 e aqueles que encontramos pelo caminho, porém com a mesma

vontade de fazer a diferença.

Page 4: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

4

“VENI, VIDI, VICI” (em português “Vim, vi, venci”)

Julio César 47 a.C.

Page 5: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

5

RESUMO

Este trabalho visa o desenvolvimento de uma rotina de reconhecimento de padrões de texto utilizando Redes Neurais Artificiais com um Algoritmo de Aprendizagem Competitivo, a fim de classificar os textos das entradas conforme seu contexto. Através da implementação de mapas auto-organizáveis, ou Mapas de Kohonen, foram aplicados métodos de recuperação de informação e cálculos de freqüência em documentos distintos, os quais tinham como tema “esporte” e “culinária”, respectivamente, separando-os em agrupamentos (clusters). Ao utilizar conceitos semânticos para definir atributos para os termos encontrados nos textos foram apresentados padrões de entrada a rede que culminaram em um mapa topológico, e a partir de então, o mesmo pode ilustrar o clustering dos termos de acordo com seu contexto (assunto).

Page 6: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

6

ABSTRACT

This work aims to develop a procedure of text pattern recognition using Artificial Neural Networks with a Algorithm of Competitive Learning in order to classify the input texts as its context. Through the implementation of self-organizing maps, or Kohonen Maps, were applied methods of information retrieval and frequency calculations in different documents about "sport" and "cooking", respectively, separating them into clusters. By using semantic concepts to define attributes for the terms found in the texts were presented to the network the input patterns resulting in a topological map, and from then on, that can illustrate a clustering of terms in a according to their context (subject).

Page 7: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

7

LISTA DE EQUAÇÕES Equação 1 ........................................................................................................ 14

Equação 2 ........................................................................................................ 28

Equação 3 ........................................................................................................ 34

Equação 4 ........................................................................................................ 39

Equação 5 ........................................................................................................ 41

Equação 6 ........................................................................................................ 41

Equação 7 ........................................................................................................ 42

Equação 8 ........................................................................................................ 42

Equação 9 ........................................................................................................ 42

Equação 10 ...................................................................................................... 43

Equação 11 ...................................................................................................... 44

Equação 12 ...................................................................................................... 49

Equação 13 ...................................................................................................... 50

Equação 14 ...................................................................................................... 51

Equação 15 ...................................................................................................... 51

Equação 16 ...................................................................................................... 53

Page 8: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

8

LISTA DE FIGURAS

Figura 1: Neurônio Biológico ............................................................................ 13

Figura 2: Neurônio de McCulloch e Pitts com limiar explícito .......................... 15

Figura 3: RNA com o JavaNNS. ....................................................................... 20

Figura 4: RNAs Completamente e Fracamente ligadas ................................... 22

Figura 5: Aprendizado Supervisionado ............................................................ 24

Figura 6: Aprendizado por Reforço .................................................................. 27

Figura 7: Arquitetura FeedForward .................................................................. 31

Figura 8: Fluxo do Algoritmo BackPropagation ................................................ 33

Figura 9: Processo de Normalização. .............................................................. 37

Figura 10: Grade Bidimensional ....................................................................... 38

Figura 11: Algoritmo de Poter ........................................................................... 47

Figura 12: Matriz-U em cores ........................................................................... 58

Figura 13: Matriz-U em escala de cinza ........................................................... 58

Page 9: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

9

Sumário 1 INTRODUÇÃO ....................................................................................................11 2 OBJETIVO ..........................................................................................................12 3 FUNDAMENTOS BIOLÓGICOS .........................................................................13 4 REDES NEURAIS ARTIFICIAIS .........................................................................14 4.1 APLICAÇÕES ...................................................................................................15 4.2 MÉTODOS DE APRENDIZADO ......................................................................16 4.3 RECONHECIMENTO DE PADRÃO..................................................................17 4.4 PADRÕES DE TEXTO COM JAVA ..................................................................18 4.5 ARQUITETURA DAS RNAS ............................................................................21 5 APRENDIZADO NAS REDES NEURAIS ARTIFICIAIS .....................................23 5.1 APRENDIZADO SUPERVISIONADO ..............................................................23 5.2 APRENDIZADO NÃO SUPERVISIONADO .....................................................24 5.3 APRENDIZADO HEBBIANO ............................................................................25 5.4 APRENDIZADO POR REFORÇO ....................................................................26 5.5 APRENDIZADO COMPETITIVO ......................................................................27 6 REDES NEURAIS COM FEEDFORWARD ........................................................30 6.1 MÉTODO BACKPROPAGATION......................................................................32 7 MAPAS AUTO-ORGANIZÁVEIS (SOM) ............................................................35 7.1 ESTRUTURA DOS MAPAS AUTO-ORGANIZÁVEIS ......................................36 7.1.1 COMPETIÇÃO...............................................................................................39 7.1.2 COOPERAÇÃO..............................................................................................40 7.1.3 ADAPTAÇÃO SINÁPTICA.............................................................................42 7.2 ESPAÇO DE ENTRADA...................................................................................43 7.2.1 NORMALIZAÇÃO...........................................................................................44 8 RECUPERAÇÃO DE INFORMAÇÃO........................ ..........................................46

Page 10: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

10

8.1 REDUÇÃO DE CONTEXTO..............................................................................46 8.2 MÉTODOS DE RECUPERAÇÃO DE INFORMAÇÃO......................................48 8.2.1 MÉTODO BOOLEANO...................................................................................48 8.2.2 MÉTODO DE ESPAÇO VETORIAL...............................................................50 8.2.3 SOM SEMÂNTICO.........................................................................................51 9 IMPLEMENTAÇÃO.................................... ..........................................................54 9.1 RADICALIZAÇÃO..............................................................................................55 9.2 ATRIBUTOS......................................................................................................56 9.3 RESULTADOS..................................................................................................57 10 CONCLUSÃO....................................... .............................................................60 REFERÊNCIA BIBLIOGRÁFICAS ..................................................................61 APÊNDICE A......................................... ............................................................63 APÊNDICE B......................................... ............................................................65 APÊNDICE C.....................................................................................................77 APÊNDICE D.....................................................................................................78

Page 11: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

11

1 INTRODUÇÃO

Atualmente, as Redes Neurais vem sendo umas das melhores opções

dentre as possíveis ferramentas de reconhecimento de padrões. Podemos

citar, dentre os estudos existentes, o reconhecimento de padrões de fala,

escrita, caracteres e símbolos, sendo estes padrões gerados pela integração

de n processamentos realizados pelos neurônios artificiais, a fim de simular ou

se inspirar na capacidade cerebral humana.

Ao reconhecimento e a segmentação de padrões, podemos unir a

capacidade de tomada de decisões autônomas das Redes Neurais Artificiais,

tendo como base algoritmos de aprendizagem que ajustam os valores das

saídas da rede até alcançar os resultados desejados.

As redes neurais, fundamentalmente, são conjuntos de células de

processamento (neurônios ou nós) interconectados, nos quais cada célula

pode se conectar à outras, formando assim uma complexa rede de

processamento, distribuição e armazenamento de informações. Essas redes

são geralmente empregadas para aplicações de controle de processos na

indústria química, reconhecimento de fala e programas adaptativos tais como

agentes inteligentes e robótica autônoma.

Na WEB temos uma fonte praticamente inesgotável de dados, mas essa

exige que conhecimento humano separe quais são informações válidas

daquelas que são apenas especulações sem sentido. Grandes sites de notícias

possuem fundamento e integridade para serem considerados fontes confiáveis

de informação. Resta aos profissionais da área da informação saber como

utilizar este recurso para treinar rotinas de inteligência artificial, como as Redes

Neurais. É nesta prática que se estrutura este trabalho.

Page 12: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

12

2 OBJETIVO

Este trabalho tem por objetivo utilizar a tecnologia empregada nas Redes

Neurais Artificiais para reconhecimento de padrões das fontes de

conhecimento público na WEB, mais especificamente, os grandes sites de

notíci, como por exemplo, UOL, Terra, G1, IG, Yahoo e MSN.

A partir do acúmulo de conhecimento adquirido por “leitura” dessas notícias

da WEB, seja via FTP ou via arquivos de texto, a RNA aplicada irá identificar e

segmentar os assuntos “lidos” em tópicos. Através de métodos de recuperação

de informação destes textos buscou-se desenvolver padrões de entrada

baseados em conceitos semânticos, aumentando a efetividade da aplicação

das Redes Neurais Artificiais (RNA).

O intuito maior do trabalho é desenvolver uma ferramenta que possa

realizar reconhecimento de palavras a partir de um meio de alimentação,

utilizando método de mapas auto-organizáveis. Através das entradas

fornecidas pelos textos, seja por WEB ou por documentos de texto comum,

montar padrões de texto que possam ser subdivididos em categorias como

política, culinária, esportes ou cinema. Este conceito poderia ser utilizado por

sites de busca para aperfeiçoar o filtro de informações.

Page 13: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

13

3 FUNDAMENTOS BIOLÓGICOS

O cérebro humano é constituído por aproximadamente 10 bilhões de

neurônios interconectados. Esta rede formada pelos neurônios é capaz de

processar milhões de informações e realizar em torno de 60 trilhões de

ligações sinápticas (VALENÇA, 2007).

Apesar de estes neurônios realizarem processamentos individualmente

lentos, em grande escala são capazes de realizar processamentos muito mais

rápidos do que a maior velocidade de processamento que os computadores

existentes alcançam, pois conforme citado acima, os neurônios podem

processar trilhões de operações paralelamente .

O neurônio biológico, Figura 1, é constituído por um corpo celular ligado por

ramificações, chamadas de dendritos. Deste corpo sai uma extensão chamada

axônio, que possui um terminal denominado de telodentro.

Sinapse é a seção onde dois neurônios estão ligados e através de pulsos

nervosos se comunicam. Os impulsos recebidos por um neurônio são

processados até atingir um limiar de ação, que produz uma substância

neutransmissora que flui do corpo celular para o axônio que esta conectado a

um dendrito de outro neurônio.

Figura 1: Neurônio Biológico

Segundo Valença (2007), com esta formação constitui-se a Lei do Tudo ou

Nada. Esta lei está relacionada com a intensidade do estímulo, chamado de

limiar excitatório, relativo ao impulso nervoso citado anteriormente. Ou seja, se

o estímulo for muito pequeno, menor que o limiar, sua intensidade será igual a

zero e caso a excitação for maior ou igual a este limiar, o potencial de ação

será sempre o mesmo. Ou Tudo ou Nada.

Page 14: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

14

4 REDES NEURAIS ARTIFICIAIS

Através dos estudos das Redes Neurais biológicas caracterizaram-se as

Redes Neurais Artificiais (RNA). Perceberam que com esta metodologia

poderiam resolver problemas de finalidades não algorítmicas ao simular

reconhecimento de resolução de problemas que apenas o cérebro humano

seria capaz de realizar.

A primeira proposta matemática de uma RNA foi feita em 1943 pela dupla

McCulloch e Pitts que buscaram, de maneira muito simples, representar os

neurônios biológicos utilizando uma regra de propagação e uma função de

ativação. No qual a emissão de sinal por este neurônio está baseada na Lei do

Tudo ou Nada conforme descrito anteriormente.

Conforme apresentado por Valença (2007), considere x 1, x 2, x 3, ..., x n,

como sendo as variáveis de entrada xj ( j = 1,...,n) do neurônio de saída i . A

entrada líquida neti é dada pela seguinte regra de propagação da Equação 1:

∑=

−=n

jjiji XWnet

1

θ

Equação 1 No qual ijW é o vetor dos pesos sinápticos entre o neurônio vencedor i e o

neurônio de entrada j e Θ é o limiar, como na Figura 2.

Page 15: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

15

Figura 2: Neurônio de McCulloch e Pitts com limiar explícito (Valença, 2007). Xn representa a camada de entrada que esta conectada ao neurônio de saída pelos vetores de peso sinápticos W1n.

Com isso criou-se o conceito das RNAs. Geralmente esta rede é conectada

por canais de comunicação associados com pesos. As unidades fazem as

operações de entrada tendo como base as conexões, gerando interações entre

os nós desta rede a fim de criar um comportamento inteligente.

As Redes Neurais Artificiais tem como características sua capacidades de

fazer armazenamento associativo de informações, Robustez, Modelos

adaptativos através de treinamento, capacidade de generalizar informações

incompletas e grande paralelismo.

Deve-se considerar que as RNAs não foram desenvolvidas com a finalidade

de simular ou copiar o funcionamento do cérebro biológico, mas como um

modelo para resolução de problemas não algorítmicos inspirados na incrível

capacidade de processamento e de reconhecimento de padrões do cérebro

humano.

4.1 Aplicações

Atualmente as RNAs estão sendo aplicadas em várias áreas do

conhecimento, começando pelo reconhecimento de padrões, partindo para o

mercado de capitais, distribuição de energia elétrica e sistemas especialistas.

Page 16: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

16

Como exemplo de aplicação pode-se citar o reconhecimento facial, sendo

usados para identificar a quem pertence um rosto visto em posições diversas

ou realizar a reconstrução de rostos parcialmente visualizados.

Ao empregar uma rede neural multi-nível treinando-a para o

reconhecimento de padrões de face e de objetivos não-face, a RNA realiza

uma busca baseada nas medidas de distância, existindo dois principais

componentes: uma rede capaz de detectar padrões e um módulo de decisão

para tomar a decisão dentre vários resultados detectados (CERA, 2005).

Nos casos de reconhecimento de padrões de voz são seguidos 4 passos

básicos. Primeiro a fala deve ser digitalizada, depois se realiza um computação

das características que representam o domínio espectral da fala. No próximo

passo é usada uma rede neural para realizar a classificação das características

fonéticas e por fim aplica-se o método de busca para associar as saídas com

padrões de palavras para encontrar aquela que mais se assemelha.

O Reconhecimento de caracteres é mais uma aplicação famosa das redes

neurais, sendo amplamente usado no reconhecimento de manuscritos.

Geralmente, a letra é apresentada a uma grade similar a retina. Cada grade é

referente a um neurônio da rede e as saídas são os neurônios que

representam as letras. Por exemplo, um identificar de caracteres da tabela

ASCII possuí 256 neurônios.

Também abordado com bastante ênfase nas técnicas de manipulação

simbólica, onde as letras encontram-se colocadas em diversas posições ou no

caso de manuscritos. Mesmo que no este último ainda esteja em processo de

desenvolvimento e otimização.

4.2 Métodos de Aprendizado

A RNA possui a capacidade de aprender e realizar interpolações destas

lições, determinando a intensidade de conexões entre neurônios. Como o

conhecimento armazenado está em suas conexões, entre processo, recebe o

nome de conexionismo.

O Algoritmo responsável pelo aprendizado é um conjunto de regras

desenvolvidas para a resolução do problema do aprendizado. Existem

Page 17: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

17

inúmeros tipos de algoritmo de aprendizado, estando diretamente relacionado

ao tipo de RNA aplicada. Estes algoritmos se diferenciam entre si pelo método

de classificação e modificação dos pesos de suas conexões.

Entre os métodos de aprendizado podemos destacar:

• Aprendizado Supervisionado;

• Aprendizado Não Supervisionado;

• Aprendizado Hebbiano;

• Aprendizado por Reforço;

• Aprendizado por Competição.

Veremos todos esses métodos detalhadamente no capítulo 5.

4.3 Reconhecimento de Padrão

O Reconhecimento de padrão é uma das principais aplicações das redes

neurais artificiais. Por exemplo, os seres humanos são excelentes no

reconhecimento de rostos, músicas, textos, letras e símbolos. Os cães por sua

vez são exímios em reconhecer odores e muitos dizem até que possuem a

capacidade de identificar o humor de seus donos.

Em 1958 foi desenvolvida por Frank Rosenblatt uma rede neural que era

capaz de reconhecer padrões através de uma regra de aprendizagem

supervisionada que gerou grande interesse dos pesquisadores pela área. Esta

RNA recebeu o nome de Perceptron, que utilizada da abordagem simbólica

para classificar padrões de letras.

Para que uma rede neural torne-se capaz de reconhecer padrões, sejam

eles símbolos, faces, voz, etc., inicialmente a estrutura da rede é treinada,

adquirindo conhecimento, para então identificar os padrões almejados.

Ajustando os pesos das conexões sinápticas a cada iteração, sendo

supervisionado ou não, para que o erro seja cada vez menor e a saída torne-se

cada vez mais próxima da desejada.

Os estudos de reconhecimento de padrões dividem-se em duas

categorias: de reconhecimento de itens abstratos e a de reconhecimento dos

Page 18: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

18

itens concretos. O reconhecimento de itens concretos engloba os padrões de

voz, faces, objetos e características como escrita. Já os abstratos trabalham

com resolução de problemas e seus métodos.

Por sua vez existem três níveis de processamentos envolvidos no

reconhecimento de padrões: filtragem das entradas, identificação das

características e classificação dos resultados. O filtro de entrada tem o objetivo

de eliminar os dados desnecessários apresentado nas entradas, deixando

apenas informações concisas para serem analisadas. A identificação das

características consiste em analisar os dados de entrada e destinar as

informações úteis para o processo de reconhecimento e classificação. Por fim a

classificação determina a qual categoria presente na saída da rede a entrada

pertence, gerando desta forma o agrupamento dos padrões de entrada.

4.4 Padrões de Texto com Java

Este trabalho visa utilizar aplicar o reconhecimento de palavras para montar

agrupamentos a partir de orações identificadas em textos completos. Para

alcançar este objetivo serão utilizadas as ferramentas de desenvolvimento

JAVA. Existem simuladores de reconhecimento de padrões desenvolvidas

nessa linguagem e através de estudos básicos, pode-se firmar o objetivo deste

trabalho.

Assim como o reconhecimento de caracteres, os padrões de texto podem

ser utilizados não só para especificar e identificar uma simbologia, mas de

forma mais abstrata utilizar esta capacidade das RNAs para separar orações

completas e através de neurônios de saída classificar seus significados. Por

exemplo, ao negar alguma coisa ou demonstrar afeto através de orações como

“Não gostaria de receber...” e “Possuo carinho por...”, os neurônios biológicos

realizam uma associação cognitiva com experiências passadas, agrupando de

maneira topológica padrões semelhantes de entrada. Este tipo de

agrupamentos é esperado da RNA, obviamente que não será tão preciso

quanto o reconhecimento humano, mas pode apresentar resultados próximos

aos agrupamentos do córtex cerebral como veremos no capítulo 9.

Page 19: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

19

O “Aprendizado” inicialmente deve ser “Supervisionado” ou de “Reforço” e

quando uma grande quantidade de informações estiver disposta na rede, o

mesmo pode ser alterado para “Não-Supervisionado”, compreendendo que a

cada iteração da rede a mesma deverá se aproximar do significado desejado

na oração de entrada, dependendo do método escolhido para a aplicação.

Como iniciativa buscou-se simulações simples com caracteres ou números

para demonstrar que é possível alcançar um nível próximo de reconhecimento

de padrão. O simulador aplicado foi desenvolvido em JAVA pelo SNNS

(Stuttgart Neural Network Simulator) que foi desenvolvido no Institute for

Parallel and Distributed High Performance Systems (IPVR) da Universidade de

Stuttgart.

As informações processadas dentro dos neurônios no SNNS são

modeladas através de funções de ativação e funções de saída. A função de

ativação de uma unidade primeiramente computa os dados de entrada que

foram provenientes de dados de saída de unidades anteriores. Depois disso ele

computa um novo valor de ativação gerado a partir das entradas e

possivelmente a partir das ativações anteriores. A função de saída toma o

resultado gerado pela função de ativação para gerar a saída da unidade. Essas

funções podem ser funções arbitrárias ligadas ao kernel do simulador e podem

ser diferente para cada unidade.

Conforme os estudos de Cera (2005) ao utilizar de 26 unidades de saída

que representem as letras do alfabeto a serem reconhecidas, as entradas são

aplicadas no simulador que realiza interações internas e verifica com as saídas

qual é a mais aproximada. Apresentado conforme a Figura 3:

Page 20: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

20

Figura 3: RNA com o JavaNNS - (CERA, 2005). Simulação de reconhecimento de caracteres utilizando o software SNNS. Matriz de neurônios de entrada [5 x 7], com camada intermediária e 26 unidades de saída, utilizando algoritmo backpropagation.

Nos casos de reconhecimento de números emprega-se a mesma técnica,

porém essa rede é composta por 35 unidades processadoras no primeiro nível

ou nível de entrada, onde a entrada terá a mesma função que na rede para

reconhecimento de caracteres. O segundo nível ou nível intermediário possui

10 unidades processadoras e no último nível têm-se 10 unidades que

representam a saída da rede, ou seja, os números de 0 a 9.

Para que o padrão seja identificado o JNNS ( SNNS em JAVA) dispõe de

um aplicações onde os padrões são estipulados através de um arquivo com

extensão “.pat”, fornecendo a configuração das entradas e saídas do sistema.

Com isso identificamos que os mesmo passos podem ser realizados para

tratar frases inteiras e os estudos realizados a partir deste ponto utilizaram o

simulador com a estrutura para textos, o desenvolvimento de arquivos que

possam servir de entrada para o simulador e outras diversas aplicações

usando as ferramentas JAVA, assim como feito no trabalho de Cera (2005).

Page 21: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

21

4.5 Arquitetura das RNAs

Antes de definirmos qual algoritmo de aprendizado iremos utilizar é

necessário entender a arquitetura da RNAs. Enganam-se aqueles que acham

que existe apenas uma ou duas topologias utilizadas para representar uma

Rede Neural, são várias existentes e suas aplicações estão diretamente

ligadas aos problemas que podem ser tratados por elas e como iremos treiná-

las. Podemos classificá-las quanto ao número de camadas, tipo de conexões

ou mesmo a conectividade (BRAGA, 2007).

Quanto ao número de camadas temos a arquitetura MCP que possuí

uma única camada (saída), utilizada em grande parte para resolver problemas

linearmente separáveis, por exemplo, separar em domínios diferentes

retângulos de círculos. Conhecida como rede camada única (HAYKIN, 2002) é

constituída por uma camada de entrada seguida de uma camada de saída sem

retorno. Ou seja, a camada de saída não retorna qualquer informação para a

entrada, podemos dizer que isso é alimentação adiante ou feedfoward. Em

alguns livros vamos encontrar o termo rede acíclica. Vale ressaltar que é

chamada de camada única porque a camada de entrada não é considerada, já

que não existe lógica computacional em seus nós.

Ainda na classificação por número de camadas temos as Redes de

Múltiplas Camadas, que se diferem da MCP por possuir entre a entrada e a

saída algumas camadas denominadas ocultas que possuem a função de

atribuir conjuntos adicionais de conexões sinápticas, existindo interação a cada

camada que a informação passa. Assim como as MCP são feedfoward, ou

seja, os próximos nós são alimentados com as informações dos nós anteriores

e assim por diante, sem realimentação. Seu uso tem foco principal para

levantamentos estatísticos, sendo que em problemas de ordem estatística de

alta complexidade são particularmente eficientes principalmente quando a

camada de entrada é de um tamanho maior que o convencional (HAYKIN,

2002).

As Redes Recorrentes fecham as arquiteturas das RNAs. Diferentes das

Redes de Múltiplas Camadas apenas por seu sistema de alimentação, sendo

conhecidas por cíclicas e possuem pelo menos um neurônio com

realimentação, denominado feedback. Desta forma um neurônio de uma

Page 22: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

22

camada mais próxima da saída pode alimentar com informações as camadas

anteriores, até mesmo a camada de entrada. Esta arquitetura é empregada

para resolver problemas de âmbito temporal. Variação do valor das ações na

bolsa de valores seria um bom exemplo. Vale ressaltar que as Redes

Recorrentes não possuem a necessidade de ter camadas ocultas podendo

seguir o padrão da MCP, apenas entrada e saídas, mas com feedback.

Referindo-se a métodos de alimentação, ou podemos dizer conexões

(BRAGA, 2007), temos como citado acima FeedFoward e FeedBack. Podemos

considerar FeedFoward como um método de alimentação onde a saída de um

neurônio na i-ésima camada não pode servir como entrada para um neurônio

de uma cada i inferior, apenas para neurônios que o procedem na cadeia. Por

usa vez o FeedBack é exatamente o contrário, considerado método de

realimentação segue a lógica que um neurônio de uma cada i pode servir de

entrada para qualquer neurônio de uma outra camada inferior ou igual, onde se

todas as ligações estiverem em clico são conhecidas como rede auto-

associativa. Estes métodos de alimentação também são chamados de Acíclico

e Cíclico respectivamente (BRAGA, 2007).

As RNAs ainda podem se fracamente ligadas ou completamente ligadas.

Fracamente significa que nem todos os neurônios estão conectados no sistema

e completamente ligados são aqueles onde todos os nós estão conectados

com todos os demais nós da RNA. Conforme Figura 4:

a) Completamente Conectada b) Fracamente Conectada

Figura 4: RNAs Completamente e Fracamente ligadas.

Page 23: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

23

5 APRENDIZADO NAS REDES NEURAIS ARTIFICIAIS

Dentre as características mais importantes das RNAs está sua habilidade

para aprender com o ambiente proposto e com isso melhorar o desempenho.

Isso é feito através de um processo iterativo de ajustes aplicado a seus pesos,

denominado treinamento.

O aprendizado ocorre quando a rede neural atinge uma solução

generalizada para uma classe de problemas, produzindo diferentes

comportamentos a um estímulo externo devido à excitações recebidas do

passado, adquirindo conhecimento. Em IA podemos associar como o principal

fundamento de um comportamento inteligente.

5.1 Aprendizado Supervisionado

Método de aprendizado supervisionado é mais comumente encontrado

quando falamos de treinamento de Redes Neurais, isto acontece devido a

facilidade de controlar seus resultados. Tanto entradas quanto saídas são

informadas por um supervisor, ou professor em alguns livros (HAYKIN, 2002),

que tem conhecimento sobre o ambiente. Com este conceito é fácil perceber

que o supervisor irá fornecer o resultado que espera obter com uma

determinada entrada e a RNA irá comparar com a saída real.

Neste momento é definido um valor de erro que será tratado

posteriormente, de maneira incremental a RNA tenta minimizar o erro até um

ponto de resultado ótimo. Porém a desvantagem deste método é que sem um

professor a rede perde seu propósito e não conseguirá aprender novos

meandros para resolver problemas propostos que estejam fora do ciclo de

treinamento inicial.

A regra de delta criada por Widrow e Hoff em meados dos ano 60 é o

mais conhecido algoritmo utilizado para este método, assim como sua

generalização para múltiplas camadas, o backpropagation que veremos com

mais detalhes nas seções posteriores.

Segue modelo, Figura 5, de Aprendizado Supervisionado proposto por

Braga em seu trabalho (BRAGA, 2007):

Page 24: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

24

Figura 5: Aprendizado Supervisionado. A entrada é apresentada a RNA que calcula a saída e compara com a saída esperada pelo professor, calcula o erro e retorna à RNA.

5.2 Aprendizado Não Supervisionado

Como o nome já sugere, o método de aprendizagem não supervisionado

é determinado pela não existência de uma interferência externa com

conhecimento do ambiente, ou seja, um supervisor ou mesmo professor. Desta

forma os vetores de entrada são dados a RNA e esta por sua vez tenta

reconhecer padrões através da similaridade dos dados.

A redundância é um fator muito importante para este método, já que sem

ela não seria possível aplicá-lo. Através das características similares dos dados

de entrada que são reconhecidos os padrões. Normalmente apresentando

estruturas feedfoward, não necessitam ser obrigatoriamente de uma única

camada, apresentando inúmeras formas diferentes de aplicação.

É curioso pensar que apesar da semelhança entre o aprendizado

supervisionado e método humano de aprendizado é através do método não

supervisionado que grande parte do nosso sistema biológico reconhece o

ambiente, como audição e visão (BRAGA, 2007).

Através de relações estatísticas (freqüência) com que um padrão de

entrada é relacionado à saída é que os pesos sinápticos são ajustados, a fim

Professor

RNA Σ -

+

Entrada Erro

Saída

Page 25: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

25

de tornar cada vez mais próxima uma saída da característica de uma

determinada entrada. Inicialmente é possível que haja erros, mas com um

período regular de treinamento e um ajuste dos pesos iniciais esta taxa de erro

é reduzida até o aceitável.

O “ótimo” é uma característica do método supervisionado, mas quando

falamos em classificação de dados e organização de classes o não

supervisionado se torna melhor. Neste trabalho iremos utilizar como ferramenta

uma variante do treinamento não supervisionado para alcançar nossos

resultados, a aprendizagem competitiva que será melhor descrita nos próximos

tópicos.

5.3 Aprendizado Hebbiano

Existem diversos métodos baseados nos aprendizado não

supervisionado, como o modelo de Linsker, Regra de Yuille e a Regra de Oja

ou o aprendizado estocástico de Bolztmann, mas o postulado de Hebb foi

escolhido para estar neste trabalho devido a sua importância histórica para as

RNAs.

O aprendizado Hebbiano é o mais famoso e mais antigo método de

aprendizado para RNAs. Donald Olding Hebb foi um neuropsicólogo

canadense que estudou os aspectos do comportamento e a aprendizagem

cognitiva. E fez uma importantes citação em seu livro Hebb (1949), The

Orgaization of Behavior:

Quando um axônio da célula A está perto o suficiente para excitar uma célula B e participa do seu disparo repetida ou persistentemente, então algum processo de crescimento ou modificação metabólica acontece em uma das células ou em ambas, de maneira tal que a eficácia de A como uma das células que dispara B é aumentada.

Hebb quis dizer com isso que os pesos das conexões sinápticas devem

ser ajustados caso haja co-relação entre as atividades das entradas e saídas.

Ou seja, se dois neurônios são sincronamente ativados há um fortalecimento

de suas ligações sinápticas. Em contrapartida, se não houver sincronismo entre

Page 26: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

26

as ligações com outros neurônios, estas ligações serão enfraquecidas ou

mesmo deixarão de existir.

Segue no Apêndice A um exemplo, utilizando a linguagem JAVA, de

como funciona uma RNA básica utilizando o postulado de aprendizagem de

Hebb. Neste método um vetor de treinamento com a entrada e a saída é

fornecido para a RNA, mas como não existe um supervisor para determinar um

“bom ou ruim” para o resultado fornecido pela rede, o algoritmo de Hebb é

classificado como não supervisionado.

5.4 Aprendizado por Reforço

A aprendizagem por Reforço é um método peculiar variante do método

supervisionado, suas diferenças entretanto estão em como avaliam o resultado

obtido pela RNA e a saída desejada. Como visto anteriormente o método

supervisionado estipula um fator “ótimo” e ajusta os pesos sinápticos para

alcançar este objetivo, todavia o método por Reforço apenas indica se o

resultado está correto ou não.

Nos anos 90 Garey Tesauro fez um estudo com este método aplicando a

um jogo de Gamão desenvolvendo um programa chamado TD-Gammon, e

mesmo sem conhecer o jogo sobre as regras do gamão ou instruções pré-

programas o programa foi capaz de aprender e jogar. Através de tentativa e

erro o método de aprendizado por reforço faz interações com o ambiente a fim

de obter uma heurística. Esta heurística tem relação com o conceito de

aplicação temporal que este método possui (HAYKIN, 2002).

Em outras palavras, o aprendizado por reforço recebe uma indicação do

supervisor do resultado esperado e compara sua saída, determina se esta

correta ou não e inicia uma nova iteração no sistema. Desta forma ajusta seus

pesos sinápticos através de um sinal de reforço, buscando compatibilizar sua

saída com o que se espera que seja.

Pode ser classificada como associativa ou não-associativa, onde a

primeira significa que além do sinal de reforço o ambiente deve lhe fornecer

outras informações, enquanto o segundo trabalha apenas com o sinal de

reforço buscando apenas uma resposta de cunho “ótimo”.

Page 27: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

27

Segue representação, Figura 6, de um sistema de aprendizado por

Reforço (BRAGA, 2007):

Figura 6: Aprendizado por Reforço. A RNA apresenta a saída que é analisada imediatamente pelo crítico, que pode “premiar” ou “punir” o agente de acordo com o resultado.

5.5 Aprendizado Competitivo

O aprendizado competitivo ou aprendizagem por competição será

utilizado no desenvolvimento do programa que é o objetivo deste trabalho.

Uma descrição curta do método competitivo seria dizer que este

algoritmo recebe os padrões de entrada e os classificam de acordo com os

pesos sinápticos atribuídos as saídas, ativando apenas aquela com o maior

resultado. Por isso o nome “competitivo”, pois de maneira literal os neurônios

da camada de saída competem com os demais para ser o ganhador. Para essa

definição dizemos que o vencedor ganha tudo, ou no original “Winner takes

All”.

A maneira mais comum de encontrarmos uma rede de aprendizado

competitivo é com duas camadas, sendo uma de entrada e outra de saída

(também denominada competitiva, DAYHOFF. 1990). No qual todos os

neurônios da camada de entrada estão ligados de maneira feedfoward com a

camada de saída. Com isso ao ser reconhecido um padrão os pesos sinápticos

para com aquela saída são fortalecidos e por conseqüência em uma próxima

apresentação do mesmo padrão de entrada o neurônio de saída será mais

facilmente reconhecido.

Crítico

RNA

Reforço

Ação

Page 28: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

28

Isso não descarta a possibilidade de redes competitivas com conexões

de realimentação, ou seja, ligações laterais. Porém quando isso acontece ao

mesmo tempo em que as ligações com o neurônio ganhador são fortalecidas,

as demais são enfraquecidas e possuem um efeito muitas vezes inibitório

denominada inibição lateral, o neurônio tenta inibir aquele que está

lateralmente ligado a ele (HAYKIN, 2002).

A arquitetura deste método prevê que o neurônio irá aprender a

concentrar todos os seus pesos sinápticos nos nós ativos. Caso um neurônio

de saída não for excitado por um determinado padrão de entrada, então não

haverá aprendizado. O padrão da regra de competitividade é definido pela

Erro! Fonte de referência não encontrada. :

( ) −

=∆0

wxw kjj

kj

η

Equação 2 onde η é a taxa de aprendizagem, x é o vetor de entrada, k o neurônio

vencedor e kw o vetor de pesos sinápticos. Esta regra tem por finalidade

aproximar o vetor kw do neurônio k (vencedor) do padrão de entradas x

(HAYKIN, 2002).

Isso torna a camada competitiva desta rede uma espécie de

classificadora de características, reunindo padrões em grupos. Estes são

chamados clusters, mas para que estes grupos sejam encontrados de maneira

correta os padrões de entrada devem ser distintos, pelos menos no inicio do

treinamento até que os pesos sinápticos estejam bem coerentes. Caso

contrário a rede ficará instável e pode responder para padrões de entrada

semelhantes com clusters de saída distintos.

Vale ressaltar que este método é classificado como não supervisionado,

ou seja, todo seu funcionamento não depende de influências externas como

Se o neurônio k vencer Se o neurônio k perder

Page 29: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

29

um professor para lhe dizer se a saída obtida é a correta. Sendo assim os

padrões de entrada devem ser bem organizados

As principais aplicações do aprendizado por competição são as redes do

modelo ART de Grossberg (1987) e os mapas de Kohonen, mais conhecidos

como mapas auto-organizáveis (1982) ou SOM (self-organizing maps). Neste

trabalho não estudaremos o modelo ART, pois utilizaremos os mapas de

Kohonen como base, sendo que este último será descrito em detalhes em uma

seção futura.

Para esgotar o assunto sobre aprendizado vale citar Mendel e McLaren

(1970) quando definem o que é o aprendizado:

Apredizagem é o processo pelo qual os parâmetros de uma RN são, de forma continuada, ajustados através de estímulos pelo ambiente no qual a rede está operando, sendo o tipo específico de aprendizado realizado definido pelo modo particular como acontecem os ajustes realizados nos parâmetros.

Page 30: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

30

6 REDES NEURAIS COM FEEDFORWARD

O processo de treinamento é fundamental para as redes neurais.

Mediante este fato temos dois métodos: Treinamento supervisionado e não

supervisionado como descrito anteriormente.

O Supervisionado possui resultados nos neurônios de saída já

conhecidos, permitindo ao sistema ajustar os pesos das conexões entre os

neurônios através da comparação de resultados. O treino não supervisionado é

utilizado para processos de classificação, apresentando padrões de entrada

para neurônios de entrada e quando este neurônio apresenta uma saída gera-

se uma classificação deste padrão. Não existindo saídas previstas para o

sistema.

FeedForward é um tipo de rede neural assim como as demais,

trabalhando com camadas de entrada que são conectadas a camadas

escondidas de processamento. Logo após este processamento sobre as

camadas escondidas a informação é enviada para as camadas de saída. Como

dito em Introduction to Neural NetWorks with Java, Jeff Heaton, geralmente as

redes neurais possuem uma camada escondida, mas raramente apresentam

mais do que duas destas.

Para esclarecimento, segue a estrutura na Figura 7 de exemplo extraído

do trabalho de Heaton. Uma camada não significa que existirá apenas um

neurônio executando este processo, e sim um grupo de neurônio por camada.

Page 31: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

31

Figura 7: Arquitetura FeedForward (HEATON, 2005). Camada de Entrada (input) seguida de uma ou mais camadas escondidas (hidden) que são camadas de processamento intermediário entre a camada de entrada e a camada de saída, esta última representada por um único neurônio.

As camadas de entrada são utilizadas como via de conexão entre um

ambiente externo e a rede neural. E como em toda rede neural, após um

padrão ser iniciado na camada de entrada, haverá um novo padrão a ser

desenvolvido na camada de saída. Pois é na camada de entrada que

aplicamos o treinamento da rede, e cada variável presente na camada de

entrada tem influência sobre o contexto geral da saída.

Estas variáveis de entrada são pontos flutuantes, como neste trabalho

utilizaremos a linguagem JAVA como ferramenta, dados do tipo “DOUBLE", e

todas as representações não numéricas apresentadas na entrada, devem

passar por processos de normalização, para daí então desenvolver um padrão.

Em contrapartida as camadas de entrada, as camadas de saída

mostram os padrões encontrados para o ambiente externo. E este padrão que

está presente na saída pode ser redirecionado pra as camadas de entrada

novamente. Assim o sistema se realimentará com novos padrões.

A razão deste tipo de rede neural ser denominada como

FEEDFORWARD é a conexão utilizada entre seus neurônios, ou seja,

Page 32: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

32

comunicação positiva de um único sentido. Outras redes com sentido recíproco

e sentido negativo são conhecidas como feedback.

6.1 Algoritmo BackPropagation

Como o conceito de FeedFoward foi detalhado podemos seguir a diante

e discutir o algoritmo backpropagation. É formado por conjuntos de equações

que corrigem os pesos de cada conexão dos neurônios apresentados na rede

(DAN, 1997), com isso realiza uma retropropagação dos erros encontrados nos

neurônios de saída, com a intenção de reduzir a diferença entre o padrão

encontrado e o padrão desejado.

Este algoritmo é classificado como método supervisionado e foi

introduzido em 1986 por Rumelhart e McClelland com o trabalho Parallel

Distributed Processing, e com isso aumentou o interesse nas RNAs, mesmo

que a proposta deste algoritmo tenha surgido muito antes de 1986.

O treinamento que utiliza este método é constituído de três etapas. A

primeira consiste em estímulos de entrada para alcançar um resultado. A

segunda etapa é a retropropagação do erro através de cálculos comparando

com o resultado esperado, que faz parte do conjunto de treinamento, e o grau

de diferença entrada nesta comparação é que consiste o erro. Na terceira

etapa, são refeitos os pesos das conexões dos neurônios, diminuindo ou

aumentando este peso conforme a necessidade. Citando Heaton (2005):

Existem várias maneiras de encontrar pesos que minimizem a função erro do sistema. A abordagem mais comum é a utilização do método de gradiente descendente. O algoritmo que avalia a derivada da função do erro é conhecido como backpropagation, porque retropropaga os erros pela rede.

As redes FeedFoward podem conectar sua camada de entrada com

camadas ocultas ou mesmo diretamente com as camadas de saída, mas onde

exatamente entrar o backpropagation neste ciclo? É ele que será responsável

por treinar a rede.

Segue na representação do fluxo do algoritmo contido no trabalho de

Braga, 2007:

Page 33: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

33

Figura 8: Fluxo do Algoritmo BackPropagation. Os dados seguem em sentido feedfoward chegando ao neurônio de saída, o erro é calculado e retorna na RNA no sentido backward ajustando os pesos sinápticos.

Como ilustrado na Figura 8 a união do método FeedFoward com o

algoritmo Backpropagation possui 2 fases de aprendizado e conexão. Os

dados da camada de entrada seguem no sentido forward e depois das análises

da RNA os erros retornam pela fase backward.

A entrada é feita na primeira camada que podemos chamar de 0C , e

para cada uma das camadas seguintes é calculado o valor da saída, que pelo

método feedfoward serve como entrada para a próxima camada. Então quando

chega na camada de saída os resultados são comparados com os valores

desejados.

Na fase backward deste processo os nós da camada atual ajustam os

pesos sinápticos para adequar seus valores e diminuir o erro. Desta forma a

camada seguinte tem seus nós ajustados a fim de ponderar os pesos de suas

conexões, isso constitui um retorno pelas menos conexões iniciais sem

realimentação.

Existem diversas variações deste algoritmo para deixá-lo mais eficaz e

mais rápido. Este algoritmo é baseado na regra delta de Widrow e Hoff, mas

quando Rimelhart e McClelland desenvolveram o backpropagation otimizaram

Fase Backward

Fase Forward

Page 34: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

34

a fórmula criando o que chamam de delta generalizado, como mostrado na

Equação 3:

( ) 2

12

1∑∑

=−=Ε

p

k

i

p

i

p

id γ

Equação 3

E é o erro total, k é a quantidade de saídas, d são as saídas

desejadas, y as saídas encontradas pela rede e p é o número de padrões.

Com estes valores o backpropagation determinar os ajustes dos pesos dos

erros sinápticos aproximando os padrões de entradas de encontrar as saídas

desejadas.

Page 35: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

35

7 MAPAS AUTO-ORGANIZÁVEIS (SOM)

Existe uma classe de RNAs com a habilidade de auto-organização. São

elas: as Redes ART de Grossberg e as SOM de Kohonen. Como dito

anteriormente não estudaremos as Redes ART, mas como breve descrição

vale dizer que são estruturas em duas camadas, entrada e saída, que estão

conectadas por dois conjuntos de conexões conectando os nós de uma

camada a todos os nós da outra camada (BRAGA, 2007).

Os Mapas Auto-Organizáveis são outra opção de arquitetura de Redes

Neurais Artificiais baseadas em aprendizado competitivo e não supervisionado.

Diferem da FeedFoward BackPropagation em vários aspectos, principalmente

na maneira como reconhecem padrões e no método de aprendizado, inclusive

não fazendo uso de funções de ativação ou valores de limiar.

Esta arquitetura foi desenvolvida por Teuvo Kohonen nos anos 80,

pesquisador finlandês que teve grandes contribuições para a área de

inteligência computacional dentre elas vários modelos de arquitetura de Redes

Neurais Artificiais. Por este motivo muitas vezes as Self-Organizing Maps

(SOM), ou Mapas auto-organizáveis em tradução livre, são chamadas de

mapas de Kohonen, mas vale lembrar que não foi apenas esta arquitetura

desenvolvida por ele, apesar de ser a principal (HEATON, 2005).

Uma característica muito importante para se ressaltar sobre os SOM é

que seu método de treinamento é não supervisionado, ou seja, possui um

padrão de entrada conhecido, mas sua saída não é comparada ou

inspecionada por um agente externo, como um professor ou valores a serem

comparados.

Para este trabalho decidi não utilizar uma estrutura com camadas

ocultas, o que torna este modelo de aplicação limitado para resolver

determinados problemas, mas levando em consideração o objetivo que é obter

classificação de grupos de entradas será a ferramenta ideal e não exigirá

muitos recursos computacionais. Portanto vale ressaltar que se o leitor esta

interessando em desenvolver programas de classificação de dados mais

complexos ou que visem dados de entrada diferentes dos que serão

apresentados recomendo ler este trabalho como base conceitual, mas buscar

Page 36: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

36

variações de SOM ou mesmo explorar o algoritmo FeedFoward

BackPropagation.

7.1 Estrutura dos Mapas Auto-Organizáveis

Normalmente iremos encontrar SOM organizados em grades mais

comumente bidimensionais, mas podendo ser unidimensional. Isso acontece

porque durante o período de treinamento os nós se especializam em detectar

os conjuntos de entradas. Desta forma os nós se organizam de maneira

topológica dentro da grade levando em consideração os padrões detectados

(HEATON, 2005).

Sendo que sua função que gera a saída é bem diferente da lógica

utilizada pelas redes feedfoward. No feedfoward todas as saídas geram

valores, mas nas SOMs apenas um dos neurônios de saída irá apresentar um

valor considerável.

Os neurônios de entrada iniciam o processo nos mapas auto-

organizáveis, suas entradas devem ser normalizadas para serem tratadas

como valores numéricos. A isto damos o nome de normalização, ou seja, estes

valores devem estar entre -1 e 1 independente do seu valor inicial, criando um

padrão. Assim que estes valores iniciarem na rede irá produzir uma reação nas

camadas de saída, (HEATON, 2005).

O processo de normalização será detalhado mais a frente, por hora

vamos ver como é a estrutura de uma SOM como ilustrado na Figura 9,

adaptado do trabalho de Jeff Heaton:

Page 37: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

37

Figura 9: Processo de Normalização. Adaptado de Heaton(2005). Primeiro temos o vetor de entrada, este passa pelo processo de Normalização adequando seus valores dentro da faixa de -1 a 1. Em seguida é feita a entrada na primeira camada de rede que realiza os processamentos e apresenta o resultado na camada de saída com o neurônio vencedor da “competição”.

Com a definição de Simon Haykin (2002):

O principal objetivo do mapa auto-organizável (SOM) é transformar um padrão de sinal incidente de dimensão arbitrária em um mapa discreto uni- ou bidimensional e realizar esta transformação adaptativamente de uma maneira topologicamente ordenada.

Podemos concluir que a estrutura da SOM será organizada em uma

grande de maneira FeedForward onde o arranjo dos neurônios estarão

dispostos em linhas e colunas. Podendo como citado anteriormente ser uni- ou

bidimensional. Onde o uni- é sua representação mais simples.

Os neurônios se organizam neste “mapa” de acordo com seu padrão de

entrada, variando de um para o outro. Sendo assim todos os neurônios do

mapa devem ser treinados um número suficiente de vezes para que a auto-

organização seja garantida. Além de que devemos reforçar a importância da

Page 38: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

38

redundância de dados neste caso e os diferentes padrões ao qual um neurônio

deve ser submetido, pois somente desta forma teremos resultado concisos.

Apesar de inicialmente atribuirmos valores aleatórios para o algoritmo

responsável por esta auto-organização, sem organização prévia, o processo de

aprendizado da SOM se encarregará de lhe trazer este conhecimento e

aprimorar sua função no reconhecimento e organização das informações da

camada de entrada.

Segue na Figura 10 uma representação de Grade Bidimensional citada

por Simon Haykin em Redes Neurais Princípios e Práticas:

Figura 10: Grade Bidimensional. (HAYKIN, 2002). Representação da estrutura de um mapa de Kohonen com aplicação Bidimensional.

É importante citar que após todo este processo de inicialização da grade

estruturada de neurônios, existem três etapas essenciais envolvidas na

formação desta grade, (HAYKIN, 2002):

• Competição: Cálculo do valor referente ao padrão de entrada para

inicializar a competição.

• Cooperação: O neurônio que vence a competição reestrutura sua

localização perante uma localização topológica.

Camada de nós de Fonte

Page 39: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

39

• Adaptação Sináptica: Ajuste dos pesos sinápticos considerando o

vencedor e o padrão de entrada, facilitando posteriores padrões

de entrada semelhantes.

7.1.1 Competição

Este é um processo que tem como base o aprendizado competitivo

detalhado anteriormente na seção 5.5. Neste ponto é definido o número de

neurônios e vetores de entrada utilizados no algoritmo.

Estes valores vão de acordo com o resultado que deseja ser obtido. Por

exemplo, no reconhecimento de letras teremos 26 unidades de saída e na

camada de entrada podemos variar de acordo com o tipo de dado utilizado. Em

um reconhecimento de escrita podemos utilizar uma janela de tamanho X por

Y, onde o usuário iria escrever a letra a ser encontrada e então definiríamos o

número de entradas igual a X * Y representando cada pixel da imagem. Ou

mesmo no caso de um vetor contento o padrão da assinatura do dado apenas

um neurônio de entrada para o padrão.

Desta forma devemos levar como regra o conjuntos de equações 4:

1. [ ]T

mxxxx ,,2,1 L

=

2. [ ]jmjj wwww ,,, 21 L= , j = 1, 2, ..., l

3. ||||minarg)( jwxxi −= , j = 1, 2, ..., l

j

Equação 4

Onde m é a dimensão da entrada dos dados e x o vetor de entradas

selecionado deste espaço. jW o vetor de pesos do neurônio j , sendo que l é

o número de neurônios existentes na grade do mapa. Por fim )(xi é a função

que resgata a identidade do neurônio i . O neurônio i que satisfaz a condição

de x e vence a competição na relação dos pesos sinápticos é o vencedor,

onde x é o vetor com as entradas ou pode chamar de padrão.

A terceira parte da equação refere-se ao casamento do pesos sinápticos

com o vetor de entrada, sendo assim é matematicamente equivalente ao

Page 40: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

40

produto interno encontrado na relação entre w e x, seguindo esta formula xwT

j

para melhor entendimento. Onde j = 1, 2, ..., l e ao achar o resultados pega-

se o menor como referência.

7.1.2 Cooperação

Compete ao processo cooperativo administrar a topologia do mapa auto-

organizável. Como vimos na seção 7.1.1 existe uma métrica a ser tomada

sobre o neurônio vencedor, partindo deste princípio este neurônio localiza o

centro de uma vizinhança topológica baseada nos conceitos neurobiológicos.

Para ser fiel a estes conceitos e traduzi-los de maneira computacional e

matemática exploramos a evidência de inibição lateral, ou seja, a conexão

lateral entre os neurônios excitados gerando uma vizinhança onde os mais

próximos terão uma ligação mais forte que os mais distantes, isto de maneira

gradual.

A equivalência matemática, exposta por Simon Haykin (2002) e baseado

no trabalho de Helge Ritter (1992), é dizer sendo ijh , representante de uma

vizinhança tendo como centro o neurônio vencedor i e que possua um

conjunto de neurônios de modo cooperativo, no qual um neurônio específico

identificado como j . Pode-se afirmar que a vizinhança topológica ijh , é uma

função unimodal da distância ',ijd quando satisfizer a seguintes exigências:

• A vizinhança topológica alcança o valor máximo quando a

distância ijd para o neurônio vencedor i é zero;

• A amplitude da vizinhança ijh , decresce com o aumento da

distância lateral ',ijd , onde tende a 0 quando ',ijd → ∞.

Nos falta agora definir a equação correspondente a ijh , já que

decompomos todas as suas variáveis. No qual a função )(, xh ij gera a

Page 41: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

41

vizinhança topológica correspondente a distância gaussiana conforme a

Equação 5.

−=

2

2,

)(, 2exp

σij

xij

dh

Equação 5

O único fator até então desconhecido nesta função é o 2σ que se refere

à variância da vizinhança topológica. Definindo o grau de participação dos

neurônios excitados da vizinhança do neurônio i vencedor no aprendizado da

rede.

A cooperação entre os neurônios depende da relação entre a vizinhança

topológica ijh , e a distância lateral definida por ijd , do neurônio escolhido j e

do vencedor i no espaço de saída.

Quando falamos de grade unidimensional esta distância é definida por

|||| ij − sendo este valor um inteiro. Porém se estivermos tratando de grades

bidimensionais à equação muda para 22, |||| ijij rrd −= . Onde jr é o vetor

discreto que possui a posição do neurônio excitado j e ir é o equivalente para

o neurônio i (vencedor).

Estas distâncias (largura da rede) decaem com a variação do tempo

(iterações), como característica dos Mapas Auto-organizáveis, e podemos

definir este processo com a Equação 6 do decaimento exponencial:

−=

1

0 exp)(τ

σσ nn n= 0,1,2,...

Equação 6

Onde 0σ é o valor de σ no momento em que a rede é inicializada e 1τ é

uma constante de tempo. Desta forma a vizinhança topológica torna-se variável

no tempo como mostrou Haykin com a Equação 7 abaixo:

Page 42: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

42

−=

)(2exp)(

2

2

,

)(, n

dnh ij

xij σ n=0,1,2,...

Equação 7

Função )()(, nh xij também conhecida como função da vizinhança.

7.1.3 Adaptação sináptica

Como definido por Haykin, para que o mapa seja auto-organizável “o

vetor de peso sináptico jw do neurônio j da grade se modifique em relação ao

vetor de entrada x ”. Com isso temos de adaptar as equações conhecidas do

método hebbiano para sanar seu principal problema, que seria a modificação

dos pesos em apenas uma direção, desta forma teremos as seguintes

equações propostas por Kohonen:

))()(()()()1( )(, nwxnhnnwnw jxijjj −+=+ η

Equação 8

A Equação 8 é utilizada em todos os neurônios contidos na grade da

vizinhança topológica do neurônio i vencedor. Ao aplicar esta equação temos

os resultados pretendidos conforme a citação de Haykin, ou seja, aproximar o

vetor de pesos sinápticos do neurônio vencedor do vetor de entradas da rede.

Mas não será apenas esta equação a ser aplicada, nos casos de

neurônios que não pertencem a vizinhaça topológicas utilizaremos a Equação

9:

)()1( nwnw jj =+

Equação 9

Sendo que em ambas as equações )1( +nwj é o vetor de novos pesos,

)( xijh é a heurística da vizinhança, x o vetor com os padrões de entrada e n a

Page 43: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

43

taxa de aprendizado que normalmente inicia em η0 e decresce em função do

tempo.

Esta função de decaimento é exponencial, portanto pode ser

representada pela Equação 10 que segue, onde o 2τ é outra constante de

tempo do algoritmo SOM (Haykin, 2002):

−=

2

0 exp)(τ

ηη nn n=0,1,2,...

Equação 10

7.2 Espaço de Entrada

Após discursar sobre a estrutura da SOM e como ocorre seu processo

de auto-organização, é cabível discorrer sobre o espaço de entradas e como a

SOM realiza o agrupamento destes padrões.

A fim de gerar um clustering é necessário um vetor de entrada com

padrões muito bem definidos, pois como já citado neste trabalho qualquer

distorção anormal nestes valores irá acarretar em uma rede neural instável. Por

isso as redes de Kohonen possuem uma peculiaridade nas suas entradas, elas

devem estar em um range de valores numéricos que varia de -1 a 1.

Em alguns estudos podemos encontrar redes com variação de 1 a 0,

mas foi percebido que no fim das iterações e de todo o processo de

treinamento da rede, os resultados não eram tão satisfatórios e dificilmente

atingindo o ótimo.

Com o intuito de aplicar esta regra para tornar mais confiável o novo

vetor no espaço de entrada e baseado nos estudos de Márcio Zuchini na tese

“Aplicações de Mapas Auto-Organizáveis em Mineração de Dados e

Recuperação de Informações” (2003), pode ser verificado que um dos fatores

de maior relevância para aplicar um vetor de entrada com eficácia é o processo

de Normalização dos valores do desde mesmo vetor perante a camada de

entrada.

Page 44: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

44

7.2.1 Normalização

Não é uma obrigatoriedade desta rede, porém de fato a normalização

das entradas da rede nos mapas auto-organizáveis melhora consideravelmente

a classificação dos dados.

Muitas vezes considerada como uma terceira camada na arquitetura de

uma SOM, na verdade é uma pré-execução da camada de entrada. Antes

mesmo do vetor de entrada entrar no espaço de entrada (input layer ou

camada de entrada), os valores passam pelo processo de normalização

fazendo com que entrem na faixa de -1 a 1. (HEATON, 2005)

Por sua vez os neurônios de entrada devem ser configurados para

reconhecer o valores desta faixa, caso os neurônios sejam configurados de

maneira limitada para uma faixa de valor de 0 a 1 existirá uma queda na

performance da rede.

Sendo assim podemos definir novos elementos serão considerados,

argumentos não dominem os demais na rede ou mesmo um atributo com

grande freqüência não distorça a descoberta do padrão. É de boa prática que

utilizemos a Normalização.

A normalização em si nada mais é do que uma de transformação linear

de cada um dos elementos do vetor inicial de entrada (ZUCHINI, 2003)

conforme Equação 11:

( )( ) Ddv

vvv

d

d

velho

dnovo

d ,...,1,.

. =−=σ

Equação 11

Onde velho

dv se refere ao valor do n-ésimo elemento do vetor v em sua

forma inicial, dv. é a média do valor do d-ésimo elemento e ( )dv.σ representa

o desvio padrão desta função para o mesmo elemento. Com isso teremos um

valor tal em cada elemento do vetor de entrada que sua média atingirá 0 e sua

variância 1.

Page 45: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

45

Mas vale ressaltar que a normalização não é a melhor opção em todos

os casos. Em algumas ferramentas os resultados se tornam mais morosos

devido ao custo computacional e seus resultados podem ser insatisfatórios,

como mostra o estudo de Zuchini utilizando GTM (Generative Topographic

Mapping), um modelo de contrapartida probabilística do SOM fundamentado

em um modelo matemático de probabilidade. Entretanto neste trabalho a

normalização ajudou na definição concreta do espaço de entrada, desta forma

é recomendado que haja uma análise com ambas propostas de dados

(Normalizados e Não Normalizados) antes de aplicar a SOM definitivamente.

Page 46: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

46

8 RECUPERAÇÃO DE INFORMAÇÃO

O objetivo inicial que motivou este trabalho seria obter um sistema que

pudesse através de um texto simples, determinar o assunto recorrente do

documento. Porém como temos visto ao longo de todo o estudo as redes

neurais artificiais trabalham com números (binários ou não), até mesmo porque

os computadores ou unidade de processamento são feitos para cálculos

numéricos. Sendo assim foi necessário pensar em uma maneira de converter o

texto em uma assinatura numérica que representasse um padrão de entrada

que fosse compreendido pela RNA.

A recuperação de informação esta relacionada com recuperação,

armazenamento, acesso e busca de itens da informação esperada (Salton &

McGill, 1983), que se tornam possíveis através de processos que transformam

nossa linguagem em uma heurística que pode ser entendida pela máquina.

Baseado no trabalho de Ricardo Baeza-Yates e Berthier Ribeiro-Neto

(1999), têm um documento jd que possui várias palavras-chaves (keywords)

que são utilizadas como índices de classificação ou busca de documento

descrito por ik . Por convenção utilizamos apenas palavras com real

significado para o texto removendo então artigos, preposições e conjuntivos

conhecidos como stopwords. Mas em alguns estudos também são

apresentados modelos que analisam todas as palavras do documento, full text

(BAEZA-YATES;RIBEIRO-NETO, 1999).

8.1 Redução de Contexto

Buscando tornar essa associação de palavras mais efetiva iremos

utilizar a lógica de radicalização do contexto das palavras encontradas em cada

documento. Excluindo, como dito anteriormente, as stopwords e as flexões de

Page 47: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

47

cada palavra para encontrar sua métrica mais simples e reduzir a gama de

palavras que podem parecer nos documentos.

Como exemplo da efetividade deste processo e sua influência sobre a

rede, temos a palavra “abandonar” que pode aparecer no texto como

“abandonado”, “abandonada”, “abandonados”, “abandonou”, “abandono” e

mesmo “abandonar”. Perceba que todas se referenciam ao mesmo assunto e

podem ser representadas pelo radical “abandon”. Com isso aumentando sua

freqüência e relevância para o documento, além de impedir que a rede

disponha de mais um neurônio para cada flexão da palavra.

Portanto tomamos como meditas de redução remover o plural, gerúndio,

flexões de gênero, grau, adverbial, verbal e redução de substantivo. Como

mostra a Figura 11, esta técnica foi baseada no algoritmo de Orengo & Hyuck

que visam à língua portuguesa. Algoritmo de radicalização, imagem retirada do

trabalho de Zuchini (2003):

Figura 11: Algoritmo de Poter. Adaptado por Orengo & Hyuck. A palavra passa por vários processos de redução a fim de gerar um radical capaz de representar todas as flexões da mesma.

Para este fim foi desenvolvido um programa em linguagem JAVA que

após a verificação do documento radicalizava suas palavras e armazenava as

(30*n documentos) principais de acordo com sua freqüência em uma tabela do

banco de dados (Apêndice B).

Page 48: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

48

Nem todas as palavras atingem o radical que esperamos, onde podem

se tornar o mesmo que outras palavras que não possuem qualquer significado

semelhante de contexto no documento. Exemplo, “verso” e “versado” se

tornam “vers”, mesmo radical para palavras com significando distinto.

Após este procedimento estamos prontos para aplicar os métodos de

recuperação de informação para cada palavra (radicalizada) do documento

baseado na análise de sua freqüência e criar uma assinatura numérica

(podendo ser booleana) para a palavra ou mesmo para o documento, a fim de

aplicar no mapa de Kohonen.

8.2 Métodos de Recuperação de Informação

A recuperação da informação se dá pela necessidade do usuário em

buscar informação, na compreensão ou mesmo a localização de um

determinado contexto dentro de um documento. Partindo deste princípio

podemos considerar a definição da frase “Recuperação de Informação” como

recobrar um aprendizado ou ensinamento, indo mais longe, trazer para o

usuário uma instrução já aprendida por ele ou por outro indivíduo, de acordo

com conceitos do dicionário Michaelis.

Existem alguns métodos para relacionar esta informação com um padrão

dentro de documentos e tem mostrado grande aplicabilidade quando usados

com redes neurais, em particular mapas auto-organizáveis. Dentro os vários

métodos que existem vale ressaltar dois deles, tanto pela quantidade de

experimentos já realizados quanto por seu valor histórico, o método booleano,

o método de espaço vetorial e o SOM semântico.

8.2.1. Método booleano

A utilização da lógica da álgebra booleana para implementar este

método o torna uns dos mais fáceis e com menos custo computacional. Ao

Page 49: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

49

utilizar a lógica de indexação por keywords podemos determinar a relevância

de um documento dentro do conjunto de documentos ou mesmo de uma

palavra dentro de um documento de forma singular.

Este modelo foi desenvolvido por Salton & McGill em 1983, onde

aplicando a lei do “menor esforço” temos uma freqüência na representação de

uma idéia pelas mesmas palavras, mostrando que os indivíduos difícilmente

recorrem a novos termos para expressar uma mesma idéia. Assim ao

identificar as palavras que indexam um texto facilitamos a recuperação da

informação contida nele. Provando que os termos mais freqüentes trazem

pouco significado ao contexto do documento (SALTON & MCGILL, 1983).

É uma prática comum descartar as palavras com maior freqüência

no momento de aplicar o documento nos mapas auto-organizáveis, o intuito

disso é impedir que o resultado do mapeado seja distorcido, assim como as

palavras que possuem menor freqüência dentro do documento são

consideramos com menor relevância a analise. Porém é necessário considerar

que ao remover as palavras de menor freqüência do processamento estamos

sujeitos a impedir que a SOM se adapte a novas situações ou situações menos

freqüentes.

A freqüência em que as palavras aparecem em um documento

considera que uma palavra índice ik tem sua freqüência calculada dentro de

um documento jd e representada pela existência ou ausência dos termos

relevantes dentro do documento. Segue Equação 12 do método booleano:

∑=

=d

ik kfreq

1

Equação 12

Onde kfreq é a freqüência total da palavra k mediante as palavras

i do documento d . O mesmo conceito pode ser apresentado para um conjunto

de documentos, substituindo o elemento k pela freqüência que a palavra

aparece em outros documentos e d seria um conjunto em vez de um

documento individual.

Page 50: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

50

Com isso definimos os termos mais relevantes de um documento e

podemos criar um vetor binário de acordo com algumas prerrogativas, onde

definimos “0” para a ausência do termo índice e “1” para a existência.

8.2.2. Método de espaço vetorial

Apesar de uma grande semelhança com o método booleano, o método

de espaço vetorial tem a proposta de superar as deficiências apresentadas no

método anterior. Como sua principal característica é a análise de freqüência

absoluta, difere do booleano que só verifica a ausência do termo chave no

documento.

Para o método vetorial cada documento é considerado um vetor que

corresponde à freqüência que a palavra aparece no contexto geral do

documento, sendo que o termo chave é diretamente proporcional a esta

freqüência, porém inversamente proporcional a quantidade de texto que

possuem o termo, destacando documentos com palavras específicas de baixa

freqüência (ZUCHINI, 2003).

O cálculo da freqüência dos termos que aparecem com maior raridade

pode ser dada pela Equação 13, onde kPF é a freqüência da palavra k no

documento i de um total de id palavras no documento.

i

ikk d

fPF =

Equação 13

Mas para o caso das palavras que apresentam maior freqüência nos

documento e que raramente possuem significância para o contexto, utilizamos

a Equação 14:

Page 51: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

51

1log2 +

=

k

k fd

nIFD

Equação 14 Sendo kIFD a inversa freqüência do documento para o termo chave k

dentre os ndocumentos e kfd é o número de documentos em que se encontra

o termo k .

Com essas duas equações podemos encontrar um produto proporcional

ponderando cada palavra do documento, conforme sugerido por Salton &

McGill com a Equação 15:

ikik IFDPFw ×=

Equação 15

com ikw é o valor específico da palavra k no documento i .

Por fim ele se baseia em cálculos de distância vetorial, relacionando o

vetor de busca com o vetor dos documentos encontrados. O que o torna

inviável algumas vezes, dependendo diretamente da quantidade de termos

relacionados na busca.

8.2.3 SOM semântico

Em 1989 Ritter & Kohonen fizeram uma proposta de uma ferramenta de

processamento neural chamado SOM Semântico que trabalha sob os conceitos

comuns da linguagem, como seus estados e categorias.

Partindo deste pensamento propuseram que fossem criados vetores

para representar conjuntos de palavras, para que seu significado semântico

fosse compreendido pelo mapa neural. Mas isto não é tão simples, já que a

representação do significado de uma palavra esta ligado diretamente com o

contexto em que ela se apresenta (ZUCHINI, 2003). Para isso surgiu à idéia de

Page 52: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

52

representar cada palavra com uma concatenação de dois vetores, onde um é a

palavra e o outro o contexto da palavra.

Sendo assim quando aplicados a rede neural e seus atributos tiverem

mais destaque do que a palavra em si, a tendência é de aproximar

topologicamente as palavras com atributos (contexto) parecidos. Em

contrapartida caso os atributos não sejam específicos a palavra em si domina a

rede e tende a se posicionar topologicamente.

Como a língua portuguesa tem muitas minúcias e dificilmente uma

palavra encontra seu significado sem um contexto, por haverem várias palavras

com significados distintos quando apresentadas sozinhas, é comum que os

valores do atributo venham a ter maior significância no momento do

reconhecimento do padrão de entrada. Por isso os vetores que representam a

palavra são escolhidos para serem ortogonais entre si, sem compor

informamos da precedência da palavra.

Segue na Tabela 1 - Animais e seus atributos. Adaptado de Ritter & Kohonen

(1989)Tabela 1 representando o conceito de mapeamento dos atributos de cada

palavra baseado no trabalho de Ritter & Kohonen em 1989, Self-organizing

semantic maps :

Tabela 1 - Animais e seus atributos. Adaptado de Ritter & Kohonen (1989)

pom

bo

galin

ha

pato

rapo

sa

cach

orro

lobo

gato

tigre

leão

pequeno 1 1 1 0 0 0 1 0 0 é Médio 0 0 0 1 1 1 0 0 0 Grande 0 0 0 0 0 0 0 1 1 2 patas 1 1 1 0 0 0 0 0 0

tem 4 patas 0 0 0 1 1 1 1 1 1

Pelos 0 0 0 1 1 1 1 1 1 Penas 1 1 1 0 0 0 0 0 0 Voar 1 1 1 0 0 0 0 0 0 gosta de Correr 0 0 0 0 1 0 1 0 0 Caçar 0 0 0 1 0 1 0 1 1

Para melhor exemplificar os dados acima e o conceito de aplicação

semântico, segue a representação de um vetor transposto da regra acima para

os casos do pombo e do cachorro, onde a partir deste vetor já podemos aplicar

na SOM referente.

Page 53: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

53

Tabela 2: Resultado da concatenação dos vetores dos termos Pombo e Cachorro. Atributos Palavra Pombo 1 0 0 1 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 Cachorro 0 1 0 0 1 1 0 0 1 0 0 0 0 0 1 0 0 0 0

É perceptível que o vetor da palavra esta relacionado com sua posição,

ou pode ser relacionado com sua freqüência gerando assim um vetor único

para cada palavra encontrada, mesmo que seus atributos sejam iguais.

A aplicação acima é utilizada para textos fechados e com palavras bem

definidas com características atribuídas antes da inclusão na SOM. Mas não é

bem assim que encontramos a maioria dos textos no mundo real e também não

se encaixa com o objetivo proposto por este trabalho.

Para este problema Ritter & Kohonen sugerem que nos casos de

trabalhos com textos livre seja aplicada uma codificação que carregue o valor

da palavra dentro do contexto. A estratégia foi criar um contexto médio que

coloca como atributos de av de um símbolo sv a média de todos os símbolos

próximos de sv (antecessores e sucessores), mas primeiro sv é reduzido por

um fator ε , normalmente 0.2, para que a parte simbólica não tenha demasiada

influência no processo (RITTER;KOHONEN, 1989). Conforme a Equação 16 a

seguir:

{ }

{ }

=

+

1)(

)(

1)(

ks

ks

ks

k

vE

v

vE

v ε

Equação 16

Sendo { }1)( −ksvE a média dos antecessores e { }1)( +ksvE a média dos

sucessores da palavra k , gerando então um vetor v . Conceito muito utilizado

para textos livres como os encontrados na internet, estudado e aplicado por

Scholtes (1991).

Page 54: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

54

9 IMPLEMENTAÇÃO

Após explanar todas as ramificações das quais as Redes Neurais

Artificiais nos permite trabalhar, foi decido seguir pela linha dos mapas auto-

organizáveis aplicando o método de SOM semântico.

Seguindo nesta linha de raciocínio levantou-se a necessidade de

criamos uma lista de palavras baseadas em assuntos para serem aplicados a

SOM e analisar o seu comportamento. A esta lista de termos damos o nome de

bag of words,e iremos retirar estas palavras de textos distintos sobre “esporte”

e “culinária”.

Pensou-se em criar um banco de dados simples com 3 tabelas. Sendo a

primeira um dicionário de palavras que iria conter um número nde termos e

cada termo teria atributos bem definidos, uma segunda tabela que iria conter

cada palavra do texto e a sua freqüência conforme um novo texto fosse

analisado, e por último cada termo já radicalizado e seu vetor de entrada na

SOM.

Porém no momento da aplicação não se viu necessária a criação desta

base, pois o programa desenvolvido para radicalizar e calcular a freqüência dos

termos (feito em JAVA e contido no Apêndice B) realizada o processo de

maneira seqüencial e apresentava seu resultado ao fim.

Os atributos utilizados neste processo para classificar os termos foram

adaptações da lógica utilizada Ritter & Kohonen sendo 10 para esportes e 10

para culinária conforme Tabela 3:

Tabela 3: Atributos de Classificação

campo quadra ringe água outro atuante gerador expressão +ponto -ponto

verd/leg fruta carne bebida quente frio doce salgado consumido ferramenta

Vale lembrar que a distinção e as distâncias encontradas pela SOM

estão diretamente relacionadas com a forma como são classificados os seus

dados.

Page 55: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

55

9.1 Radicalização

O processo de Radicalização é fundamental na execução deste trabalho.

Basicamente a radicalização irá realizar a redução de contexto, transformando

todas as palavras do texto em forma de radical que pode compor qualquer

flexão desta palavra. É valido observar que a radicalização pode transformar

termos distintos em uma mesmo radical, como citado anteriormente.

Neste trabalho utilizamos o algoritmo adaptado de Poter por Orengo e

Hyuck, seguinto os passos já vistos. Em suma devem-se remover todos os

sufixos comuns da língua portuguesa, as flexões verbais, aumentativos,

diminutivos e vogais.

Este processo foi realizado para 11 textos distintos, sendo um sobre um

assunto aleatório, 5 sobre esporte e 5 sobre culinária (receitas). Entre vários

métodos de verificação de texto calculou-se a freqüência das palavras, já com

as stopwords removidas, sobre todos os textos. Por fim ficamos com as 24

melhores palavras para dar seqüência ao estudo.

Segue o trecho de um dos documentos de esporte:

“O Fluminense derrotou o Figueirense por 4 a 0 neste domingo, no estádio Orlando Scarpelli,

em Florianópolis, em jogo válido pela 36ª rodada do Brasileirão. Novamente o atacante Fred

voltou a dar show com três gols marcados...”

Segue o trecho de um dos documentos sobre culinária:

“ Tempere as bistecas com o suco de limão e o caldo de carne, dissolvido em 2 colheres (sopa)

de água fervente. Deixe tomar gosto por 1 hora. Frite as bistecas no óleo, dourando dos dois

lados. Junte a cebola, os tomates, 1 xícara ( chá ) de água fervente e a mandioquinha. Tampe a

panela e cozinhe em fogo baixo, até a mandioquinha ficar macia ( cerca de 10 minutos).

Polvihe com a salsa. Sirva quente...”

Todos os textos utilizados neste trabalho (Apêndice D) passaram pelo

processo de recuperação de informação e cálculo de freqüência dos seus

termos antes de serem aplicados na SOM.

Page 56: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

56

9.2 Atributos

Com o cálculo da freqüência realizado nos resta atribuir os valores dos

atributos conforme o escopo da SOM semântica. As 24 palavras foram

submetidas a uma análise, que poderia ser feita de maneira computacional e

gerando uma nova tabela conforme a necessidade.

Os atributos foram escolhidos para definir determinada relevância entre

os assuntos escolhidos. Porém com a necessidade de abordar diversas

palavras que continham nos assuntos específicos, não foi possível criar

determinantes que realmente deixassem os vetores bem definidos. Com isso

pode-se perceber um distúrbio no resultado da SOM. Mas nada que não

permita visualizar o contexto em que se baseou este trabalho.

Em grande parte os atributos são características que envolvem de

maneira comum os padrões de entrada. Assim o espaço de entrada ao

percorrer a rede tende a se aproximar e criar agrupamentos (clusters) onde os

atributos têm alto valor descriminante.

No momento em que o vetor de entrada é criado, necessariamente todos

os atributos a qual foram submetidas as palavras de “esporte” deve-se atribuir

a culinária, mesmo que o valor elemento seja 0, representando ausência. O

mesmo deve ser feito para as palavras de culinária. Conforme Tabela 4

e Tabela 5:

Tabela 4: Atributos de Esporte e Culinária aplicados a palavra ARROZ.

Tabela 5: Atributos de Esporte e Culinária aplicados a palavra ATACANT.

campo quadra ringe água outro atuante gerador expressão +ponto -ponto arroz 0 0 0 0 0 0 0 0 0 0 arroz verd/leg fruta carne bebida quente frio doce Salgado consumido ferramenta

1 0 0 0 1 0 0 1 1 0

campo quadra ringe água outro atuante gerador expressão +ponto -ponto

atacant 1 0 0 0 0 1 0 0 1 0 atacant verd/leg fruta carne bebida quente frio doce salgado consumido ferramenta

0 0 0 0 0 0 0 0 0 0

Page 57: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

57

9.3 Resultados

Após construir o vetor de entrada, sendo este a concatenação dos

vetores de atributos de culinária e esportes, foi gerado um arquivo “.data” a fim

de utilizarmos a ferramenta SOM ToolBox do MATLAB® (Alhoniemi et al. 2000)

para demonstrar os resultados de uma Matriz-U de agrupamentos.

Para melhor resultados optamos por utilizar um mapa com grade

hexagonal de 8 x 12, um radio de ação de 6 reduzindo até 1 e 20 épocas de

treinamento.

A Matriz-U é composta pelas distâncias todos os neurônios vizinhos que

compõe o mapa, é o método mais comumente utilizado quando utiliza-se a

SOM para obter agrupamentos de dados, também conhecida como matriz de

distâncias unificadas. Quando a utilizamos para representar superfícies de

nível, podemos verificar visualmente a existência de “vales” ou “elevações”.

Quanto mais distintos forem os dados, maiores serão suas distâncias.

Distintos resultados podem ser encontrados alterando estes valores,

porém de acordo com as observações feitas após diversos testes, esta foi a

configuração que mais se encaixou com a necessidade de nossa aplicação.

Em momento algum descartamos que ao usar uma gama maior de palavras e

atributos distintos poderíamos necessitar de modificações neste escopo.

Após aplica nosso arquivo .data foi possível verificar uma distinção dos

termos utilizados. Segue o conteúdo do arquivo “.data” no apêndice C. A SOM

apresentou os resultados a seguir na Figura 12 e Figura 13 em escala de cinza

para facilitar a visualização:

Page 58: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

58

Figura 12: Matriz-U em cores. O mapa evidencia uma projeção do relevo (margem vermelha) que separa os agrupamentos de esporte, ficando acima deste relevo, e os agrupamentos de esporte abaixo deste relevo.

Figura 13: Matriz-U em escala de cinza. Fica mais ilustrar algumas áreas em tons de cinza, o mapa agrupa de maneira topológica palavras como combat e box ilustrando sua proximidade.

Na ilustração em cores podemos perceber que a escala representa a

distância gaussiana entre os termos, com isso fica claro que o mapa auto-

organizável teve a capacidade de separar as palavras de “culinária” das

palavras de “esporte”.

Page 59: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

59

Através da margem vermelha apresentada os assuntos ficam

evidenciados, bem como na figura em escala de cinza que nos ajuda a

perceber a ação dos neurônios sobre a rede. Onde os vales em preto traçam

uma margem entre as palavras.

Pode-se notar também que a rede iniciou um agrupamento secundário

dentro dos grupos iniciais, sendo que expressões de esporte como “gol”,

“empate”, “derrota” e “ponto” ficaram muitos próximos, enquanto “round” e

“boxe” ficaram distantes dos primeiros, mas próximos entre si.

Existem alguns métodos que podem melhorar estes resultados, um

deles é criar um vetor que representando a palavra de maneira individual em nℜ e concatenar com o vetor de atributos. E ainda utilizar o método de soma de

sufixo, onde se soma sempre o vetor da próxima palavra no texto afim de gerar

uma correlação entre elas.

Resumindo, a cada palavra que se verifica dentro do texto, soma-se ao

seu vetor de palavra o vetor da próxima palavra, gerando um novo vetor para

esta primeira. Este processo é feito para cada vez que a palavra aparecer no

texto. Infelizmente por falta de tempo hábil não foi possível representar esta

funcionalidade neste trabalho.

Mas como visto foi possível provar que através de um mapa auto-

organizável de uma Rede Neural Artificial podemos separar textos através de

seus padrões de entrada e desta forma gerar classificações semelhantes as

apresentadas no córtex cerebral humano.

Page 60: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

60

10 CONCLUSÃO

Com base nos critérios e resultados desta monografia, onde o objetivo

era apresentar uma maneira de classificar textos obtidos na WEB de acordo

com seu tema utilizando para isso Redes Neurais Artificiais, constatou-se que o

objetivo foi alcançado de maneira satisfatória.

Através dos conceitos aplicados de radicalização de palavras e

agrupamento de características utilizando mapas auto-organizáveis, foi

possível verificar que ao apresentar a rede um padrão de entrada bem definido,

em que existe associação direta ou indireta pelos termos, seremos bem

sucedidos na classificação das palavras em grupos distintos, predominando

seu significado real, muito semelhante à função apresentada pelo córtex

cerebral humano.

Para que isso fosse possível reproduziu-se em linguagem JAVA a

função de radicalização e cálculo da freqüência das palavras, o que também

era esperado que fosse apresentado no trabalho, por fim todos os processos

foram executados com sucesso.

O que reforça a afirmação feita no início deste trabalho quando

classificou as Redes Neurais Artificiais (RNA), principalmente os mapas auto-

organizáveis (SOM), como ótima ferramenta de agrupamento de

características. Permitindo ser aplica também para seleção de padrões de

texto.

Page 61: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

61

Referências Bibliográficas

[1] ANDERSON, J. A., “An Introduction to Neural Networks”, The MIT Press. 1995. [2] BABINI, M. Reconhecimento De Objetos Contidos Em Imagens Através De Redes Neurais. Universidade Estadual Paulista – UNESP, 2006. [3] BAEZA-YATES, R; NETO, B. R. “Modern Information Retrieval”. ACM Press, 1999. [4] BRAGA, Antônio P.;Carvalho, André P.L.F.; Ludermir, Teresa Bernarda; Redes Neurais Artificiais , 2a edição, Editora LTC, 2007. [5] CERA, M. C., Uso de Redes Neurais para o Reconhecimento de Padrões. 2005 [6] DAYHOFF, J. , “Neural network architectures”, an introduction. 1990. [7] GROSSBERG, S. “Competitive learning: From interactive activation to adaptive resonance”. Cognitive Science, 1987. [8] HARVEY, M. D. and Paul J. DEITEL. Java: como programar. Terceira edição, Prentice Hall, 2000. [9] HAYKIN, Simon; ENGEL, Paulo Martins. Redes neurais: principios e pratica. 2. ed. Porto Alegre: Bookman, 2002. [10] HEATON Jeff. Introduction to Neural Networks for Java. Segunda edição, Heaton Research, 2005. [11] HEBB, D.O. “The Organization of Behavior”. Wiley, 1949 [12] HEBB, D.O.. Brain Mechanisms and Learning. London: J. F. Delafresnaye (Ed.), 1961 [13] KOHONEN, T., “An introduction to neural computing” Neural Networks, vol.1 1988 [14] LINSKER, R. “ From basic network principles to neural architecture: Emergence of orientation columns” . Proceedings of the National Academy of Sciences, USA, 1986. [15] LvCoN. Laboratório Virtual em Computação Natural – Redes Neurais Artificiais, 2011. http://www.natcomp.com.br/lvcon/tema?tema=2 - acessado em abril de 2011.

[16] MCCULLOCH, W. S. e PITTS, W. / “A Logical Cauculos of the Ideas Immanent in Nervus Activity”, Bulletin of Mathematical Biophysics, vol 5, 1943;

[17] ORENGO, V. M; HUYCK, C. “A stemming algorithm for the portuguese

Page 62: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

62

language. In: Proceedings.Eighth International Symposium on String Processing and Information Retrieval”. (SPIRE 2001). Chile, 2001. [18] ORENGO, V.M; HUYCK, C. Portuguese-English Experiments using Latent Semantic Indexing. Middlesex University for Bilingual Task, 2003. [19] POTTER, B. “Linguistique générale: théorie et description”. Paris : Klincksieck, 1985. [20] RITTER, H. and KOHONEN, T. “ Self-Organizing Semantic Maps” . Biological Cybernetics , 1989. [21] ROSENBLATT. “The perceptron: A probabilistic model for information storage and organization in the brain”. Psychol. 1958. [22] ROSENBLATT. “Principles of Neurodynamics: Perceptrons and the theory of brain mechanisms”. Spartan Books, New York, 1962. [23] RUMELHART, D. E.,HINTON, G. E. e WILLIAMS, R. J. / Learning Representations of Back- Propagation Error., Nature vol. 323, - 1986; [24] RUMELHART, D.E. and MCCLELLAND, J.L. “Parallel Distributed Processing, vol. 1: Foundations”. The MIT Press, 1986 [25] SILVA, J. M., Uma Metodologia para Extração de Conhecimentos em Objetos Textuais Baseada em Conceito para o Português do Brasil. Universidade Federal de Goiás, 2007. [26] SNNS-Group. “Stutgart Neural Network Simulator 4.2 Sturgart”, University of Stuttgart, 1998. [27] TESAURO, G. and Sejnowski, T. J. “Parallel network that learns to play backgammon,” Artificial. Intelligence, 1889. [28] VALENÇA, Mêuser. Fundamentos das Redes Neurais: exemplos em Java. Editora Livro Rápido, Recife 2000. [29] VON DER MALSBURG, C. “An automaton with brain-like properties”. Kybernetes, 1973. [30] ZUCHINI, M. H., Aplicações de Mapas Auto-Organizáveis em Mineração de Dados e Recuperação de Informação. UNICAMP, 2003.

Page 63: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

63

APÊNDICES

APÊNDICE A – Algoritmo de Aprendizado Hebbiano public class HebbRule { public static void main(String args[]){ final HebbRule delta = new HebbRule(); delta.run(); } double peso1; double peso2; double limiar = 1.0; int epoch = 1; public HebbRule() { this.peso1 = 1; this.peso2 = -1; } protected void padraoAtual(double e1, double e2) { double result; double delta; System.out.println("Entrada ["+e1+","+e2+"]"); result = reconhecer(e1, e2); System.out.print("Saída = "+result); delta = treinamentoFunc(this.limiar, e1, result); this.peso1 += delta; System.out.println(", delta peso1 = "+delta); delta = treinamentoFunc(this.limiar, e2, result); this.peso2 += delta; System.out.println(", delta peso2 = "+delta); } public void run() { for(int i = 0; i < 5; i++) { epoch(); } } protected void epoch() { System.out.println("Inicio do Epoch nº "+this.epoch); padraoAtual(-1,-1); padraoAtual(-1, 1);

Page 64: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

64

padraoAtual( 1,-1); padraoAtual( 1, 1); this.epoch++; } protected double reconhecer(double e1, double e2) { final double a = (this.peso1 * e1) + (this.peso2 * e1); return (a * .5); } protected double treinamentoFunc( double limiar, double entrada, double saida) { return limiar*entrada*saida; } }

Page 65: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

65

APÊNDICE B – Algoritmo Adaptado de Poter, Radicalização e Cálculo de Freqüência de Palavras

//CLASSE FILEMANAGER package SOM; import java.io.File; import java.io.FileNotFoundException; import java.util.ArrayList; import java.util.List; import java.util.Scanner; import javax.swing.JOptionPane; public class FileManager { public static void main (String args[]) throws FileNotFoundException{ int contador = 0; String word; String prepos1 = "/do/de/da/a/o/as/os/para/pra/um/uma/nos/que/eu/tu/ele/ela/"; String prepos2 = "/nas/por/ao/ou/das/em/no/na/dos/com/como/nós/vós/eles/elas/"; String arq; ArrayList<String> acum = new ArrayList(); //acumulador de palavras ArrayList<Termos> ltermos = new ArrayList(); //lista de termos utilizados do{ arq = JOptionPane.showInputDialog("Indique o local do arquivo:"); if (!arq.isEmpty()){ File file = new File(arq); Scanner sc = new Scanner(file); sc.useDelimiter("[,\\s\\n\\t\\-\"]"); //Delimitador para separa as palavras por vírgula, List<String> palavras = new ArrayList(); //aspas, hífen, espaço em branco, tabulação e enter while (sc.hasNext()) { word = (sc.next().trim()).toLowerCase(); //System.out.println("-"+word+"-"); if (!word.isEmpty()) { if (!(prepos1.contains(word)) && !(prepos2.contains(word))){ palavras.add(word); } } } /* //Impressão prévio do texto for (Object words : palavras) { System.out.println(words); } */ palavras = Radicalizar.radicalizador(palavras); for (Object frq : palavras){ acum.add((String)frq);

Page 66: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

66

} /* //Imprimir todas as palavras acumuladas for (Object obj : acum){ String obj1 = (String) obj; System.out.println(obj1); } */ } contador++; }while(!arq.isEmpty()); ltermos = Radicalizar.frequencia(acum, contador); for (Object obj : ltermos){ Termos obj1 = (Termos) obj; System.out.println(obj1.getPalavra()+" - "+obj1.getFreq()); } PadraoEntrada.transformar(ltermos); } } //CLASSE RADICALIZAR package SOM; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Radicalizar { public static List radicalizador (List<String> termos){ List radicalizados = new ArrayList(); Boolean sufix = false; String analisa; for(Object str : termos){ analisa = (String) str; sufix = false; if( analisa.length() > 2){ System.out.println(analisa); //Redução de pontuação if(analisa.endsWith("\"") || analisa.endsWith("'") || analisa.endsWith(")") ){ analisa = analisa.substring( 0, analisa.length()-1);

Page 67: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

67

} else if(analisa.endsWith(",") || analisa.endsWith(".") || analisa.endsWith(";") ){ analisa = analisa.substring( 0, analisa.length()-1); } else if(analisa.endsWith(":") || analisa.endsWith("!") || analisa.endsWith("?") ){ analisa = analisa.substring( 0, analisa.length()-1); } //Redução de Plural if(analisa.endsWith("s")){ analisa = analisa.substring( 0, analisa.length()-1); } //Redução Adverbial if(analisa.endsWith("mente") && analisa.length() > 5){ analisa = analisa.substring( 0, analisa.length()-5); } //Redução de Grau -> Remove aumentativo e diminutivo //Os tamanhos mínimos das palavras foram considerados analisando a língua portuguesa //A fim de não descartar palavras como cão, mão, aço e vinho if(analisa.endsWith("zão") && analisa.length() > 5){ analisa = analisa.substring( 0, analisa.length()-3); } else if(analisa.endsWith("ção") && analisa.length() > 3){ analisa = analisa.substring( 0, analisa.length()-3); } else if(analisa.endsWith("ão") && analisa.length() > 3){ analisa = analisa.substring( 0, analisa.length()-2); } else if(analisa.endsWith("zona") && analisa.length() > 5){ analisa = analisa.substring( 0, analisa.length()-4); } else if(analisa.endsWith("ona") && analisa.length() > 3){ analisa = analisa.substring( 0, analisa.length()-3); } else if(analisa.endsWith("ço") && analisa.length() > 3){ analisa = analisa.substring( 0, analisa.length()-2); } else if(analisa.endsWith("inho") && analisa.length() > 6){ analisa = analisa.substring( 0, analisa.length()-4); } else if(analisa.endsWith("inha") && analisa.length() > 6){ analisa = analisa.substring( 0, analisa.length()-4); } //Redução de Substantivo //Realizar este método de maneira completa requer a remoção de cerca de 60 sufixos //No nosso caso escolhemos os 30 principais if(analisa.endsWith("encialista") && analisa.length() > 4){

Page 68: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

68

analisa = analisa.substring( 0, analisa.length()-10); } else if(analisa.endsWith("alista") && analisa.length() > 5){ analisa = analisa.substring( 0, analisa.length()-6); } else if(analisa.endsWith("agem") && analisa.length() > 3){ analisa = analisa.substring( 0, analisa.length()-4); } else if(analisa.endsWith("iamento") && analisa.length() > 4){ analisa = analisa.substring( 0, analisa.length()-7); } else if(analisa.endsWith("amento") && analisa.length() > 3){ analisa = analisa.substring( 0, analisa.length()-6); } else if(analisa.endsWith("imento") && analisa.length() > 3){ analisa = analisa.substring( 0, analisa.length()-6); } else if(analisa.endsWith("alizado") && analisa.length() > 4){ analisa = analisa.substring( 0, analisa.length()-7); } else if(analisa.endsWith("atizado") && analisa.length() > 4){ analisa = analisa.substring( 0, analisa.length()-7); } else if(analisa.endsWith("izado") && analisa.length() > 5){ analisa = analisa.substring( 0, analisa.length()-5); } else if(analisa.endsWith("ativo") && analisa.length() > 4){ analisa = analisa.substring( 0, analisa.length()-5); } else if(analisa.endsWith("tivo") && analisa.length() > 4){ analisa = analisa.substring( 0, analisa.length()-4); } else if(analisa.endsWith("ivo") && analisa.length() > 4){ analisa = analisa.substring( 0, analisa.length()-3); } else if(analisa.endsWith("ado") && analisa.length() > 2){ analisa = analisa.substring( 0, analisa.length()-3); } else if(analisa.endsWith("ido") && analisa.length() > 3){ analisa = analisa.substring( 0, analisa.length()-3); } else if(analisa.endsWith("ador") && analisa.length() > 3){ analisa = analisa.substring( 0, analisa.length()-4); } else if(analisa.endsWith("edor") && analisa.length() > 3){ analisa = analisa.substring( 0, analisa.length()-4); } else if(analisa.endsWith("idor") && analisa.length() > 4){ analisa = analisa.substring( 0, analisa.length()-4); } else if(analisa.endsWith("atória") && analisa.length() > 5){ analisa = analisa.substring( 0, analisa.length()-6); } else if(analisa.endsWith("or") && analisa.length() > 2){ analisa = analisa.substring( 0, analisa.length()-2); }

Page 69: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

69

else if(analisa.endsWith("abilidade") && analisa.length() > 5){ analisa = analisa.substring( 0, analisa.length()-9); } else if(analisa.endsWith("icionista") && analisa.length() > 4){ analisa = analisa.substring( 0, analisa.length()-9); } else if(analisa.endsWith("cionista") && analisa.length() > 5){ analisa = analisa.substring( 0, analisa.length()-8); } else if(analisa.endsWith("ional") && analisa.length() > 4){ analisa = analisa.substring( 0, analisa.length()-5); } else if(analisa.endsWith("ência") && analisa.length() > 3){ analisa = analisa.substring( 0, analisa.length()-5); } else if(analisa.endsWith("ância") && analisa.length() > 4){ analisa = analisa.substring( 0, analisa.length()-5); } else if(analisa.endsWith("eiro") && analisa.length() > 3){ analisa = analisa.substring( 0, analisa.length()-4); } else if(analisa.endsWith("oso") && analisa.length() > 3){ analisa = analisa.substring( 0, analisa.length()-3); } else if(analisa.endsWith("ividade") && analisa.length() > 5){ analisa = analisa.substring( 0, analisa.length()-7); } else if(analisa.endsWith("idade") && analisa.length() > 5){ analisa = analisa.substring( 0, analisa.length()-5); } else if(analisa.endsWith("inal") && analisa.length() > 4){ analisa = analisa.substring( 0, analisa.length()-4); } else if(analisa.endsWith("ano") && analisa.length() > 3){ analisa = analisa.substring( 0, analisa.length()-3); } //Redução de Sufixo if(analisa.endsWith("ando") && analisa.length() > 2){ analisa = analisa.substring( 0, analisa.length()-4); sufix = true; } else if(analisa.endsWith("endo") && analisa.length() > 3){ analisa = analisa.substring( 0, analisa.length()-4); sufix = true; } else if(analisa.endsWith("indo") && analisa.length() > 3){ analisa = analisa.substring( 0, analisa.length()-4); sufix = true; } else if(analisa.endsWith("ondo") && analisa.length() > 3){ analisa = analisa.substring( 0, analisa.length()-4); sufix = true; } else if(analisa.endsWith("ada") && analisa.length() > 6){ analisa = analisa.substring( 0, analisa.length()-3); sufix = true; }

Page 70: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

70

//Redução Verbal if (!sufix) { if (analisa.endsWith("ar") && analisa.length() > 3){ analisa = analisa.substring( 0, analisa.length()-2); } else if (analisa.endsWith("er") && analisa.length() > 3){ analisa = analisa.substring( 0, analisa.length()-2); } else if (analisa.endsWith("ir") && analisa.length() > 3){ analisa = analisa.substring( 0, analisa.length()-2); } else if (analisa.endsWith("or") && analisa.length() > 3){ analisa = analisa.substring( 0, analisa.length()-2); } else if (analisa.endsWith("ur") && analisa.length() > 3){ analisa = analisa.substring( 0, analisa.length()-2); } else if (analisa.endsWith("aríamo" ) && analisa.length() > 2) { analisa = analisa.substring( 0, analisa.length()-6); } else if (analisa.endsWith("ássemo" ) && analisa.length() > 2) { analisa = analisa.substring( 0, analisa.length()-6); } else if (analisa.endsWith("eríamo" ) && analisa.length() > 2) { analisa = analisa.substring( 0, analisa.length()-6); } else if (analisa.endsWith("êssemo" ) && analisa.length() > 2) { analisa = analisa.substring( 0, analisa.length()-6); } else if (analisa.endsWith("iríamo" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-6); } else if (analisa.endsWith("íssemo" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-6); } else if (analisa.endsWith("áramo" ) && analisa.length() > 2) { analisa = analisa.substring( 0, analisa.length()-5); } else if (analisa.endsWith("árei" ) && analisa.length() > 2) { analisa = analisa.substring( 0, analisa.length()-4); } else if (analisa.endsWith("aremo" ) && analisa.length() > 2) { analisa = analisa.substring( 0, analisa.length()-5); } else if (analisa.endsWith("ariam" ) && analisa.length() > 2) { analisa = analisa.substring( 0, analisa.length()-5); } else if (analisa.endsWith("aríei" ) && analisa.length() > 2) {

Page 71: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

71

analisa = analisa.substring( 0, analisa.length()-5); } else if (analisa.endsWith("ássei" ) && analisa.length() > 2) { analisa = analisa.substring( 0, analisa.length()-5); } else if (analisa.endsWith("assem" ) && analisa.length() > 2) { analisa = analisa.substring( 0, analisa.length()-5); } else if (analisa.endsWith("ávamo" ) && analisa.length() > 2) { analisa = analisa.substring( 0, analisa.length()-5); } else if (analisa.endsWith("êramo" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-5); } else if (analisa.endsWith("eremo" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-5); } else if (analisa.endsWith("eriam" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-5); } else if (analisa.endsWith("eríei" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-5); } else if (analisa.endsWith("êssei" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-5); } else if (analisa.endsWith("essem" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-5); } else if (analisa.endsWith("íramo" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-5); } else if (analisa.endsWith("iremo" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-5); } else if (analisa.endsWith("iriam" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-5); } else if (analisa.endsWith("iríei" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-5); } else if (analisa.endsWith("íssei" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-5); } else if (analisa.endsWith("issem" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-5); } else if (analisa.endsWith("ando" ) && analisa.length() > 2) { analisa = analisa.substring( 0, analisa.length()-4); } else if (analisa.endsWith("endo" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-4); } else if (analisa.endsWith("indo" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-4);

Page 72: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

72

} else if (analisa.endsWith("ondo" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-4); } else if (analisa.endsWith("aram" ) && analisa.length() > 2) { analisa = analisa.substring( 0, analisa.length()-4); } else if (analisa.endsWith("arde" ) && analisa.length() > 2) { analisa = analisa.substring( 0, analisa.length()-4); } else if (analisa.endsWith("arei" ) && analisa.length() > 2) { analisa = analisa.substring( 0, analisa.length()-4); } else if (analisa.endsWith("arem" ) && analisa.length() > 2) { analisa = analisa.substring( 0, analisa.length()-4); } else if (analisa.endsWith("aria" ) && analisa.length() > 2) { analisa = analisa.substring( 0, analisa.length()-4); } else if (analisa.endsWith("armo" ) && analisa.length() > 2) { analisa = analisa.substring( 0, analisa.length()-4); } else if (analisa.endsWith("asse" ) && analisa.length() > 2) { analisa = analisa.substring( 0, analisa.length()-4); } else if (analisa.endsWith("aste" ) && analisa.length() > 2) { analisa = analisa.substring( 0, analisa.length()-4); } else if (analisa.endsWith("avam" ) && analisa.length() > 2) { analisa = analisa.substring( 0, analisa.length()-4); } else if (analisa.endsWith("ávei" ) && analisa.length() > 2) { analisa = analisa.substring( 0, analisa.length()-4); } else if (analisa.endsWith("eram" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-4); } else if (analisa.endsWith("erde" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-4); } else if (analisa.endsWith("erei" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-4); } else if (analisa.endsWith("êrei" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-4); } else if (analisa.endsWith("erem" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-4); } else if (analisa.endsWith("eria" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-4); } else if (analisa.endsWith("ermo" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-4); } else if (analisa.endsWith("esse" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-4); } else if (analisa.endsWith("este" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-4);

Page 73: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

73

} else if (analisa.endsWith("íamo" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-4); } else if (analisa.endsWith("iram" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-4); } else if (analisa.endsWith("íram" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-4); } else if (analisa.endsWith("irde" ) && analisa.length() > 2) { analisa = analisa.substring( 0, analisa.length()-4); } else if (analisa.endsWith("irei" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-4); } else if (analisa.endsWith("irem" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-4); } else if (analisa.endsWith("iria" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-4); } else if (analisa.endsWith("irmo" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-4); } else if (analisa.endsWith("isse" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-4); } else if (analisa.endsWith("iste" ) && analisa.length() > 4) { analisa = analisa.substring( 0, analisa.length()-4); } else if (analisa.endsWith("amo" ) && analisa.length() > 2) { analisa = analisa.substring( 0, analisa.length()-3); } else if (analisa.endsWith("ara" ) && analisa.length() > 2) { analisa = analisa.substring( 0, analisa.length()-3); } else if (analisa.endsWith("ará" ) && analisa.length() > 2) { analisa = analisa.substring( 0, analisa.length()-3); } else if (analisa.endsWith("are" ) && analisa.length() > 2) { analisa = analisa.substring( 0, analisa.length()-3); } else if (analisa.endsWith("ava" ) && analisa.length() > 2) { analisa = analisa.substring( 0, analisa.length()-3); } else if (analisa.endsWith("emo" ) && analisa.length() > 2) { analisa = analisa.substring( 0, analisa.length()-3); } else if (analisa.endsWith("era" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-3); } else if (analisa.endsWith("erá" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-3); } else if (analisa.endsWith("ere" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-3); } else if (analisa.endsWith("iam" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-3);

Page 74: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

74

} else if (analisa.endsWith("íei" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-3); } else if (analisa.endsWith("imo" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-3); } else if (analisa.endsWith("ira" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-3); } else if (analisa.endsWith("irá" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-3); } else if (analisa.endsWith("ire" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-3); } else if (analisa.endsWith("omo" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-3); } else if (analisa.endsWith("ai" ) && analisa.length() > 2) { analisa = analisa.substring( 0, analisa.length()-2); } else if (analisa.endsWith("am" ) && analisa.length() > 2) { analisa = analisa.substring( 0, analisa.length()-2); } else if (analisa.endsWith("ear" ) && analisa.length() > 4) { analisa = analisa.substring( 0, analisa.length()-3); } else if (analisa.endsWith("ar" ) && analisa.length() > 2) { analisa = analisa.substring( 0, analisa.length()-2); } else if (analisa.endsWith("uei" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-3); } else if (analisa.endsWith("ei" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-2); } else if (analisa.endsWith("em" ) && analisa.length() > 2) { analisa = analisa.substring( 0, analisa.length()-2); } else if (analisa.endsWith("er" ) && analisa.length() > 2) { analisa = analisa.substring( 0, analisa.length()-2); } else if (analisa.endsWith("eu" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-2); } else if (analisa.endsWith("ia" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-2); } else if (analisa.endsWith("ir" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-2); } else if (analisa.endsWith("iu" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-2); } else if (analisa.endsWith("ou" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-2); } else if (analisa.endsWith("i" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-1);

Page 75: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

75

} if (analisa.endsWith("a" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-1); } else if (analisa.endsWith("e" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-1); } else if (analisa.endsWith("o" ) && analisa.length() > 3) { analisa = analisa.substring( 0, analisa.length()-1); } } //Redução de Feminino if(analisa.endsWith("a")){ analisa = analisa.substring( 0, analisa.length()-1); } //Redução de acentuação analisa = analisa.replace("é", "e"); analisa = analisa.replace("á", "a"); analisa = analisa.replace("í", "i"); analisa = analisa.replace("ó", "o"); analisa = analisa.replace("ú", "u"); analisa = analisa.replace("ã", "a"); analisa = analisa.replace("õ", "o"); analisa = analisa.replace("â", "a"); analisa = analisa.replace("ê", "e"); analisa = analisa.replace("ô", "o"); System.out.println(analisa); if (analisa.length() > 2){ radicalizados.add(analisa); } } } return radicalizados; } public static ArrayList frequencia ( List termos, int contador){ ArrayList<Termos> nTermos = new ArrayList(); String palavra = new String(); int count = 0; for(Object str : termos){ Termos termo1 = new Termos(); Boolean found = false; palavra = (String) str; if (nTermos.isEmpty()){ termo1.setPalavra(palavra);

Page 76: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

76

termo1.setFreq(1); nTermos.add(termo1); } else { Termos termo2 = new Termos(); found = false; count = 0; for (Termos obj : nTermos){ if (obj.equals(palavra)){ nTermos.remove(count); termo2.setPalavra(palavra); termo2.setFreq(obj.getFreq()+1); nTermos.add(termo2); found = true; break; } count++; } if (!found){ termo2.setPalavra(palavra); termo2.setFreq(1); nTermos.add(termo2); } } } Collections.sort(nTermos); ArrayList termosFinal = new ArrayList(); count = 1; for (Termos t2 : nTermos) { if (count > 0 && count <= (30*contador)){ termosFinal.add(t2); } count++; } return termosFinal; } }

Page 77: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

77

APÊNDICE C – Arquivo .data para MatLab® //O número 20 abaixo refere ao número de atributos utilizados 20 #n cmo qdr rng água otr atnte grdor expr +pnt -pnt vrd/leg frt car beb qte fri dce salg consu ferr 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 arroz 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 atacant 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 0 azeit 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 batat 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 bistec 0 0 1 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 box 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 1 0 cald 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 1 0 carn 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 0 cebol 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 0 cha 0 0 1 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 combat 1 1 1 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 derrot 1 1 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 empat 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 gol 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 juiz 0 0 1 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 lut 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 molh 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 round 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 sal 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 pont

Page 78: REDES NEURAIS E O RECONHECIMENTO DE …lyceumonline.usf.edu.br/salavirtual/documentos/2067.pdfAo empregar uma rede neural multi-nível treinando-a para o reconhecimento de padrões

78

APÊNDICE D – URL dos textos utilizados no estudo Culinária: http://www.vortexhost.com.br/blogs/si/category/culinaria/ http://gastronomiaenegocios.uol.com.br/portal/carnes/3901-receita-de-bisteca-com-mandioquinha.html http://receitas.uol.com.br/ Esporte: http://esporte.uol.com.br/futebol/campeonatos/brasileiro/serie-a/pos-jogo/2011/11/20/fred-faz-tres-em-goleada-sobre-o-figueirense-e-fluminense-garante-vaga-na-libertadores.htm http://manoamano.blog.terra.com.br http://www.aovivoagora.com/