terça-feira, 6 de janeiro de 2015

Definição das ferramentas da Engenharia do Conhecimento


Como ja visto anteriormente, o Data Warehouse é uma das ferramentas utilizadas na Egenharia do Conhecimento. Abordaremos agora algumas outras ferramentas importantes:

Knowledge-Discovery in Databases (KDD)

A partir da necessidade de uma análise mais apurada da informação gerada surgiu na década de 90 o conceito de descoberta de conhecimento e os processos que possam conduzir a isso. A descoberta de conhecimento pode ser dividida em duas vertentes: KDD e KDT. Esta divisão tem como base o conteúdo que será analisado, em que, se o conteúdo foi previamente organizado e estruturado o processo de descoberta utilizado será o KDD. Caso o conteúdo encontre-se disperso em documentos textuais o processo utilizado será o KDT.

Estes processos evidenciam informações que provavelmente não seriam observadas sem a utilização dos mesmos. O processo de descoberta do conhecimento pode se dar através de técnicas de descoberta de conhecimento em bases de dados, ou KDD. A chamada sociedade moderna, inegavelmente, produz uma grande quantidade de informações, que são armazenadas em bases de dados. As técnicas de KDD são, portanto, responsáveis pelo processo de "seleção, pré-processamento e a transformação dos dados, bem como a aplicação de algoritmos, a interpretação dos resultados e a geração de conhecimento" com vistas à "descobrir padrões relevantes na crescente massa de dados" (GONÇALVES et al, 2001, p. 2). [23]

Figura 1 - Etapas do KDD



Fonte: GONÇALVES et al, 2001, p. 3.

Trata-se de um processo interativo, podendo ser executado quantas vezes forem necessárias para a obtenção de conhecimento. As três primeiras fases dizem respeito à qualidade dos dados, sendo elas: (1) Seleção: Captura do conjunto ou amostra de dados a serem manipulados; (2) Pré-processamento: Limpeza dos dados, tais como ruídos, inconsistências,dados inexistentes ou incompletos, que podem gerar padrões distorcidos; (3) Transformação: Eliminação de atributos redundantes, padronização do conjunto de valores de domínio das variáveis. Estas fases convergem para a formação de uma base de dados concisa, em que dados de diferentes fontes e em diferentes formatos sejam coletados e armazenados em um único conjunto de dados. (4) Mineração de Dados: trata-se da aplicação de algoritmos para extração de padrões de relacionamento entre os dados. Finalizando o processo é aplicada a fase (5) Interpretação/Avaliação dos resultados por especialistas no negócio, que avaliam os padrões identificados em função dos objetivos iniciais. [24]

 Knowledge Discovery in Text (KDT)

A descoberta de conhecimento em textos (KDT) pode ser entendida como o estudo e a prática de extrair informações, a partir de bases textuais, usando os princípios da linguística computacional. [25] A KDT é composta por diversas atividades, como pré-processamento (classificação) dos documentos, extração de informação, reconhecimento de entidades, extração de relacionamentos, agrupamento de textos, geração de hipóteses, entre outras. Grande parte dessas atividades é desenvolvida com o uso das técnicas de Processamento de Linguagem Natural (PLN) e análise estatística.[26] A figura a seguir permite visualizar o processo de KDT:




Figura 2 - Processos do KDT [27]


Pode-se observar então que o processo de KDT é semelhante ao KDD, inclusive nas fases de mineração e interpretação/avaliação, porém os passos do KDT possuem pequenas adaptações para que possa ser aplicado em informações não estruturadas, sendo que as principais diferenças ocorrem nas etapas de extração de informações e no pré-processamento. [27]

Algoritmos Genéticos

Os Algoritmos Genéticos (AG) são modelos computacionais que utilizam os conceitos de Munakata (2008 apud RAUTENBERG, 2009) sobre a teoria da evolução das espécies, onde os seres mais adaptados ao seu ambiente tendem a se perpetuar através dos seus descendentes. Nos Algoritmos Genéticos a seleção ocorre na qualidade das respostas aos problemas, podendo até existir a mutações de soluções. Assim, o algoritmo privilegia as possíveis soluções ótimas no conjunto de soluções possíveis. Esse algoritmo é bastante utilizado nos problemas de alocação de recursos. [28]

O AG é um método da Computação Evolucionária, foi concebido e desenvolvido por John Holland na década de 70, e popularizado por David Goldberg, em 1989. Com base nos trabalhos de John Holland, John Koza na década de 90 desenvolveu, como extensão do AG, a teoria da Programação Genética (PG).

A Computação Evolucionária é uma área da ciência da computação inspirada nos princípios da evolução natural, de Charles Darwin (1859), em seu livro “A Origem das Espécies”. Os princípios da Teoria da Evolução são usados para pesquisar soluções aproximadas para a solução de problemas usando o computador. O principal requisito para a aplicação da computação evolucionária é que a qualidade da possível solução possa ser calculada. Assim, poderia ser possível classificar algumas possíveis soluções visando à qualidade da solução e se a solução resolve o problema. [29]

O AG apresenta um grupo de soluções candidatas, denominado população, na região de soluções. Por meio de mecanismos como a seleção natural e o uso de operadores genéticos, tais como a mutação e o cruzamento, os cromossomos com melhor aptidão são encontrados. A seleção natural garante que os cromossomos mais aptos gerem descendentes nas populações futuras. Os operadores de cruzamento combinam genes de dois ou mais cromossomos de pais previamente selecionados para formar novos cromossomos, os quais têm grande possibilidade de serem mais aptos que os seus genitores. [30] Um algoritmo genético elementar realiza a seguinte seqüência de operações: [31] Passo 1: Gerar a população inicial após escolher o tipo de codificação do cromossomo;

Passo 2: Calcular a função objetivo de cada indivíduo da população;

Passo 3: Implementar a Seleção;

Passo 4: Implementar a Recombinação ou Cruzamento;

Passo 5: Implementar a Mutação;

Passo 6: Avaliar os indivíduos sobreviventes;

Passo 7: Se o critério de parada não for satisfeito, repetir os passos dois a seis.

A PG evolui uma população de programas de computador, que são possíveis soluções para um problema de otimização, usando o princípio darwinista da sobrevivência dos mais aptos. Ela usa as operações biologicamente inspiradas, como reprodução, cruzamento e mutação. Cada programa ou indivíduo na população (cromossomo) é geralmente representado como uma estrutura de dados do tipo árvore, composta de funções e terminais adequados para o domínio do problema. Cada gene é representado por uma informação que pode ser um atributo ou o valor do atributo. [32] A Linguagem de Programação LISP ou LISt Processing, concebida por John McCarthy em 1958, tornou-se a principal linguagem dos estudos em Inteligência Artificial, sendo também a linguagem original da programação genética. O algoritmo da PG é simples, semelhante ao do AG e pode ser resumido, conforme Koza (1992), como mostrado a seguir: [33] 1. Gerar uma população inicial de composição randômica de funções e terminais do problema (programas de computador);

2. Iterativamente realizar os seguintes passos até que o critério de terminação seja satisfeito;

2.1. Executar cada programa da população e atribui-lhe um valor de fitness, que expressa o quanto ele resolve o problema;

2.2. Criar uma nova população de programas de computador e aplicar as operações genéticas nos indivíduos escolhidos com probabilidade baseada na fitness:

2.2.1. Copiar os programas de computador existentes para a nova população;

2.2.2. Criar novos programas de computador pela recombinação genética de partes escolhidas de dois programas existentes;

3. O melhor programa de computador que apareceu em qualquer geração é designado como o resultado da programação genética. Este resultado pode ser uma solução (ou uma solução aproximada) para o problema.

Redes Neurais Artificias

Redes neurais artificiais (RNAs), também denominadas de Redes Neuronais, são modelos computacionais inspirados em estruturas neurais biológicas e formadas pela interconexão e processamento (conjunto e paralelizável) de muitos elementos computacionais, denominados de neurônios artificiais.

RNAs são baseadas no paradigma conexionista de Inteligência Artificial e representam sistemas extremamente simples, quando comparadas às redes neurais biológicas. No entanto, de acordo com (HAYKIN, 1999)[34], a semelhança de RNAs com o cérebro biológico se dá na medida em que o conhecimento é adquirido do ambiente através de um processo de aprendizado e as forças conectivas entre os neurônios são utilizadas para armazená-lo.

Em termos gerais, uma RNA aprende um modelo do ambiente de dados, sendo que estes dados são processados pela rede de neurônios com adaptação de seus parâmetros internos para representar as características observadas/aprendidas do ambiente. Os sinais de entrada processados e transmitidos entre os neurônios artificiais obedecem a um algoritmo de aprendizado que realiza o ajuste dos pesos na rede, representando o “conhecimento” utilizado para produzir as respostas de saída. O denominado "conhecimento adquirido" pela RNA pode ser interpretado como um modelo codificado por meio do processo de aprendizado e utilizado para responder aos novos dados de entrada do ambiente ou domínio de atuação.


De forma simplificada, segundo (FAUSETT, 1994)[35] RNAs têm sido desenvolvidas, com base nas seguintes suposições:
o processamento da informação em uma RNA ocorre em muitos elementos simples, denominados de neurônios;
a transmissão de sinais entre os neurônios é feita por meio de conexões
cada conexão possui um peso associado que, em uma RNA típica, multiplica o sinal transmitido
cada neurônio aplica uma função de ativação (usualmente, não-linear) ao somatório de suas entradas ponderadas para determinar o seu sinal de saída.

Ressalta-se que estas são suposições gerais e que existem diversas configurações para RNAs que diferem em relação aos aspectos acima.


Uma RNA pode ser descrita conforme:
estrutura, camadas de neurônios, número de neurônios por camada, conectividade entre os neurônios componentes, direção de propagação dos sinais
o cômputo de funções que ocorre em cada neurônio
o paradigma de aprendizado adotado, sendo que os mais comuns são o Aprendizado supervisionado e o Aprendizado não-supervisionado
o tipo de aprendizado para ajuste de pesos que é incorporado ao algoritmo da RNA: baseado na regra de Hebb; baseado em memória; aprendizado de Boltzmann; aprendizado por correção de erro e aprendizado competitivo (HAYKIN, 1999)[34].

Para implementação de uma rede neural são definidos, inicialmente, os requisitos da aplicação e levantadas as características do ambiente de dados para definição dos conjuntos de dados a serem utilizados. Tradicionalmente, o projeto de uma RNA envolve um processo de treinamento e a realização dos testes para verificação de desempenho conforme critérios definidos. Os dados apresentados à rede são divididos em um conjunto de treinamento e um conjunto de teste (podendo ser utilizado um conjunto adicional para validação), sendo estes conjuntos de dados independentes entre si para verificação da capacidade de generalização da rede diante de dados novos do domínio. O conhecimento prévio disponível do domínio pode ser utilizado para um pré-processamento dos dados e orientar um pós-processamento das saídas da rede. A tarefa a ser executada (aproximação de funções, predição, classificação, formação de agrupamentos, otimização, controle) orienta a escolha por um modelo básico de rede, conforme o paradigma e tipo de aprendizado, conectividade e estrutura básica da rede, tipos de neurônios e funções de ativação, e modo de operação requerido (off-line ou on-line). A composição do vetor de entrada e forma de representação dos dados de entrada e de saída, a forma de interpretação das respostas da rede, os critérios e medidas para avaliação de desempenho são aspectos dependentes da aplicação.

As classes de problemas para aplicações de RNAs podem ser divididas em: classificação de padrões, predições sequenciais, reconhecimento de padrões, aproximação de funções, memórias associativas, otimização, formação de agrupamentos (clustering), identificação e controle de sistemas(FAUSETT, 1994)[35]; (HAYKIN, 1999) [34]. Existe uma diversidade [35], [34] de modelos de RNAs (com suas arquiteturas e algoritmos básicos) e as características de cada modelo determinam seu grau de adequação a cada classe de problema. Como exemplos de RNAs podem ser citadas algumas: Redes Multicamadas (Multilayer Perceptrons - MLP) treinadas com Algoritmo Backpropagation; Mapas auto-organizáveis SOM de Kohonen; redes RBF (Radial-Basis Function); LVQ (Learning Vector Quantization); redes ART e ARTMAP; redes de Elman e Jordan; rede de Hopfield; redes recorrentes treinadas por meio de Backpropagation.

RNAs podem ser, também, integradas com outras técnicas e abordagens de inteligência artificial, como algoritmos genéticos, lógica fuzzy (ZADEH, 1965) [36]; (KLIR e YUAN, 1995) [37], métodos simbólicos, sistemas especialistas e raciocínio baseado em casos, formando sistemas híbridos capazes de maior eficiência e eficácia diante de determinados problemas.

Named Entity Recognition (NER)

Segundo Zhu, Gonçalves e Uren (2005)[38], reconhecimento de entidades nomeadas – em inglês Named Entity Recognition (NER) – é uma técnica da área de extração de informação (EI) que tem como função reconhecer entidades em textos de diferentes tipos e de diferentes domínios.

Nédellec e Nazarenko (2005)[39] afirmam que a utilização de sistemas de extração de informação pode ser usada para popular ontologias. Textos são uma fonte de conhecimento para desenhar e enriquecer ontologias, em que os termos extraídos da base de documentos podem ser possíveis instâncias e classes das ontologias. Uma das técnicas usadas para extrair termos de documentos é a de reconhecimento de entidades nomeadas (em inglês Named Entity Recognition – NER).

Ceci et al. (2010)[40] explicam que existem muitas técnicas automáticas que podem auxiliar no processo de reconhecimento de entidades, tais como a aplicação de expressões regulares (técnica muito usada para identificar datas, e-mails, etc.), o uso de dicionários (thesauros), as heurísticas, que são regras conforme o padrão léxico e sintático do idioma, os modelos estatísticos e também o uso de ontologias.

Para Negri e Magnini (2004)[41], NER tem como tarefa identificar e categorizar entidades mencionadas (pessoas, organizações, locais), expressões temporais (hora e data) e alguns tipos de expressão numérica (percentual e valor monetário) escritos em um texto. Segundo Kozareva (2006)[42], a tarefa de identificar as entidades consiste em determinar suas fronteiras, ou seja, qual o seu início e seu fim. Isso é importante para entidades compostas de mais de uma palavra, como, por exemplo, “Universidade Federal de Santa Catarina”. A técnica de extração de entidades pode ser vista como um problema de classificação em que as palavras são assinadas para uma ou mais classes semânticas. Quando a entidade encontrada não pode ser assinada para uma classe específica, é atribuída a uma classe “geral” (KONCHADY, 2006, p. 156-157)[43].

Nenhum comentário:

Postar um comentário