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].

Metodologias do Conhecimento - K-Aspects

O Knowledge Aspects é uma abordagem para a implementação de sistemas de conhecimento em linguagens orientadas a objetos usando o paradigma orientado a aspectos e anotações de metadados. Essa abordagem:
  • define uma forte correspondência entre o Modelo de Conhecimento (MC) e sua implementação no paradigma da orientação a objetos (OO)[61].
  • Fornece um conjunto de anotações documentacionais para facilitar a leitura da associação entre o modelo de implementação e o modelo conceitual do conhecimento.
  • Um conjunto de anotações para facilitar a separação de interesses na implantação de Sistemas de Conhecimento usando orientação a aspectos (
  • K-Annotations).
  • Um conjunto de bibliotecas para realizar a interpretação das anotações e sua execução em aspectos (Biblioteca K-Aspects).
  • E uma ferramenta para geração de documentação do Modelo de Conhecimento a partir das anotações no código (KA-DocGen).

A abordagem busca atender tanto os engenheiros de conhecimento quanto os engenheiros de desenvolvimento em projetos de SC. Os engenheiros de conhecimento tem ao seu alcance um modo adequado para elaborar a especificação do MC que resulta em uma especificação em uma linguagem orientada a objetos, permitindo aos engenheiros de desenvolvimento implementarem o sistema preservando a estrutura do modelo conceitual e mantendo clara distinção entre os requisitos associados ao MC dos demais requisitos. A abordagem mostra-se bastante produtiva e utilizada em conjunto com a metodologia XP.K, posto ambas serem complementares.

K-Annotations adicionam recursos de OA ao modelo conceitual do conhecimento OO, oferecendo facilidades de tratamento separado de diversas funcionalidades transversais de um SC, através do particionamento do sistema em aspectos que implementam funcionalidades específicas, ativadas através das anotações inseridas no componente do modelo conceitual. Anotações distinguem, clara e visualmente, no código, os elementos do MC em relação ao restante do código do programa, facilitando a leitura do código pelos engenheiros de conhecimento. A função principal das anotações é prover as informações necessárias para a interpretação dos elementos de conhecimento durante a execução do programa. Anotações identificam as funcionalidades transversais relativas aos construtos do modelo e são gerenciadas pela biblioteca de aspectos.

Processo de Uso de K-Annotations

O processo de uso de k-annotations define os passos necessários para que a implementação OO do componente do modelo conceitual seja gerada com sucesso. Esse processo é definido para ser reutilizado em diferentes projetos de SCs, independente do domínio de aplicação.

O processo, figura a seguir, inicia quando o engenheiro de desenvolvimento recebe uma especificação do modelo conceitual. É necessária a implementação da especificação usando OO acrescido de k-annotations. Após a implementação do componente do modelo conceitual, o interpretador de aspectos recebe como entrada a implementação elaborada pelo engenheiro de desenvolvimento, a biblioteca de anotações, a biblioteca de aspectos e a biblioteca para tratamento de facets, axiomas e regras (as bibliotecas são reusáveis em diferentes projetos). Se o código não apresentar nenhum problema, o interpretador gera o byte-code (código intermediário usado por linguagens interpretadas), esse código intermediário da implementação do modelo e dos aspectos é então costurado pelo weaver (fornecido junto com o interpretador de aspectos) para a implementação da semântica associada às anotações via aspectos. O resultado da interpretação é a implementação executável do componente conceitual em uma máquina virtual (Java ou C#). Além da implementação do componente conceitual, o compilador também invoca a ferramenta KA-DocGen, que gera a documentação da implementação do componente conceitual, para que mais facilmente seja possível realizar revisões entre a especificação e a implementação.



Figura Processo de Uso de K-Annotations

MIKE(Model-based and Incremental Knowledge Engineering)



A metodologia MIKE (Model-based and Incremental Knowledge Engineering) na visão dos autores fornece métodos para o desenvolvimento de sistemas baseados em conhecimento, cobrindo todos os passos, desde a elicitação inicial até a implementação do projeto. Essa abordagem propõe a integração formal e semi-formal de especificações técnicas e de prototipagem para uma engenharia baseada em quadros (framework). O que distingue as metodologias MIKE e CommonKADS, é o fato da primeira integrar a prototipagem e o suporte incremental e reversível ao processo de desenvolvimento de sistemas :

·MIKE utiliza o modelo de especialista do CommonKADS como seu padrão de modelo geral e fornece uma suave transição entre a representação semi-formal, Modelo de Estrutura, e a representação formal, o Modelo KARL, além de uma implementação orientada a representação, o Modelo de Projeto. As suaves transições entre diferentes níveis de representação é essencial para permitir a prática de desenvolvimento incremental e reversível.

·Na metodologia MIKE a executabilidade do Modelo KARL permite a validação do Modelo de Especialista pela prototipação. A prototipação por sua vez melhora a integração do especialista no processos de desenvolvimento. As diferentes atividades de desenvolvimento da metodologia MIKE e os documentos resultantes dessas atividades estão dispostos na figura abaixo. Nessa metodologia o processo inteiro de desenvolvimento encontra-se dividido no números de sub-atividades.

A seguir serão apresentadas as atividades da metodologia MIKE, onde cada uma delas lida com diferentes aspectos do desenvolvimento do sistema. Estas atividades são: Elicitação, Interpretação, Formalização/Operacionalização, Projeto e Implementação.

A atividade de Elicitação é responsável pela aquisição de conhecimento. Utiliza-se o método de entrevista pra adquirir conhecimento do especialista sobre determinado domínio. O conhecimento resultante dessa fase é armazenado em linguagem natural no chamado Protocolos de Conhecimento.

A fase de Interpretação a estrutura de conhecimento que será identificada nos Protocolos de Conhecimento são representadas semi-formalmente pelo Modelo do Especialista: O modelo de Estrutura. Essa representação inicial fornece uma descrição da estrutura do conhecimento emergente e pode auxiliar na comunicação entre o engenheiro do conhecimento e o especialista.

A base para a Formalização/Operacionalização é o Modelo de Estrutura. Esse processo resulta no formal Modelo de Especialista: o Modelo KARL. KARL permite ser diretamente mapeado por uma representação operacional, pois, este é uma linguagem executável.

No Modelo de Projeto todos os requisitos, funcionais e não-funcionais, são propostos para o KBS (Knowlegde Based System ou Sistema Baseado em Conhecimento (SBC)).

Por fim no Modelo de Implementação o processo exposto no Modelo de Projeto é colocado em prática, implementando os requisitos de hardware e software previstos em um determinado ambiente.

Fonte:http://www.egc.ufsc.br/wiki/index.php/Processo_de_Engenharia_do_Conhecimento#RapidOWL

Web Semantica: Tags e Ontologias

Uma pesquisa muito interessante realizada por Leandro Miranda mostra alguns métodos aplicados para o uso da web semantica, ontologia e TAGs. Abaixo temos um trecho do que foi produzido por ele:
   A web 2.0 tem se popularizado largamente desde sua criação. Sites como o Flicker e Del.icio.us permitem que o usuário final publique conteúdo por meio de tags. Tags podem ser tomadas como referência para o conteúdo em questão, e usados amplamente como metadados descritivos, e ainda como metadados administrativos e estruturais. Infelizmente, perdem-se as vantagens de se usar dados a partir de tags quando se tenta recuperar os dados. Para solucionar tal problema, recomenda-se o implemento de semântica as tags.Até o momento, pouco se tem estudado sobre representação de tags no nível de Web Semântica. Infelizmente, seriam necessários estudos mais concretos para poder-se analisar o fenômeno das folksonomias*. A semântica das tags, trata primordialmente do compartilhamento de opiniões entre pessoas que freqüentam um mesmo espaço dentro da rede.Modelo Conceitual de GruberGruber (2007) descreve as tags como uma relação entre: um objeto (fotos, artigo de blog, etc.), o próprio recurso a ser marcado; uma tag associada a um recurso; um criador de tags (geralmente uma pessoa) que faz um link entre a tag e o objeto; a fonte, o espaço onde foi criada a tag (Flicker, del.icio.us, etc.).Ao contrário do modelo de Gruber, o modelo de triplas (usuário, recurso, tag) de Newman (2005) não apresenta a fonte de onde vieram os tags. Nota-se em ontologia de tags a instanciação de tags:Tags class que é assinada por rótulos de strings enviadas pelo usuário. Sendo instâncias de uma classe, implica que são assinadas por uma URI, que forma as bases da Web Semântica, podendo ligar semanticamente as similaridades entre as tags.SCOTA ontologia SCOT (nuvem social semântica de tags) procura descrever a estrutura e a semântica de marcação de dados por tags, para oferecer interoperabilidade entre dados de diferentes fontes. Ambas, Tagcloud e Tag são aptas a representar contexto social e semânticos em tags, pois ambas as classes incluem usuários, tags e recursos. A classe scot:Tag é uma subclasse de tags:Tag. Esta classe possui diversas propriedades para resolver ambigüidades, e ainda pode descrever a freqüência de uma tag. Até agora, a ontologia SCOT tem sido usada nos web site int.ere.st promovendo buscas, favoritos e integrando dados de tags entre diferentes, usuários, fontes e aplicações.MOATO objetivo dos MOATs (significado de uma tag) é dar um significado as tags que as máquina possam entender. Para tal, ela define: significado global para as tags, onde todos os significados de uma tag são listados dentro de uma folksonomia; e local de significado de uma tag, ou seja, o significado de uma tag em sua ação particular.O MOAT “inclui” uma parte no modelo tri-particionado (usuário, recurso, tag, significado). Ao incluir uma função sobre a ação do significado o problema de ambigüidade de nomes resolve-se. MOATs também podem permitir as pessoas de compartilhar suas tags introduzindo um aspecto social.

*Folksonomias: compartilhamento social de documentos. Diferentemente das ontologias as Foksonomias são conceitualizações não formalizadas de um determinado assunto ou campo do conhecimento, fruto da atribuição de palavras chave por parte dos usuários.

Fonte:  
MIRANDA, L. G. WEB SEMÂNTICA E WEB SOCIAL EM ENGENHARIA DO CONHECIMENTO. Disponível em  <http://www.abepro.org.br/biblioteca/enegep2009_TN_WIC_098_664_13224.pdf>

XP.K - metodologia para sistemas baseados em conhecimento


É uma metodologia ágil para o desenvolvimento de sistemas baseados em conhecimento, desenvolvida a partir da tese doutorado de Knublauch (2002)24. O XP.K estende o XP (eXtreme Programming) para trabalhar com modelagem ágil de sistemas de conhecimento.Assim como o XP, o XP.K auxilia a desenvolver sistemas com requisitos vagos e em constante mudança, como também são os sistemas baseados em conhecimento (como o conhecimento possui a característica de ser de "difícil captura", um processo cíclico, e não em cascata, auxilia no processo de sua elicitação e representação). Exige constante acompanhamento e permite vários pequenos ajustes durante seu desenvolvimento, envolvendo os principais atores (especialistas de domínio, engenheiros do conhecimento e implementadores de sistema) durante seus ciclos. Assim como o XP, possui as seguintes diretrizes :

1.comunicação;

2.simplicidade;

3.feedback;

4.coragem;

5.respeito.

O XP.K é desta forma um modelo de ciclo de vida em espiral, com resumidamente duas fases:

1.Aquisição de conhecimento;

2. Desenvolvimento do sistema.


Aquisição de conhecimento: nesta fase o engenheiro do conhecimento e o especialista de domínio definem os requisitos no chamados "Story Cards" e "Knowledge Protocols".Uma ontologia inicial é definida utilizando UML.


Desenvolvimento do Sistema:nesta fase, a implementação deste sistema de conhecimento é feita Java, utilizando K-Beans (Knowledge Java Beans).Estes têm a função de adicionar elementos semânticos (regras, axiomas ...) a sistemas implementados com orientação a objetos.Porém, segundo Eduardo Castro, devido à convenção de código adotado, uma classe pode representar tanto regras (cardinalidades) como axiomas (range, domain ...), o que pode tornar difícil a separação destes conceitos.O K-Aspects, além de apontar outras críticas e melhorias, propõe a utilização de anotações para separar devidamente estes elementos.

A grande vantagem do XP.K é aceitar as mudanças no projeto de um SBC em tempo real. Por ser relativamente recente possui um baixo nível de adoção.


Fonte:http://www.egc.ufsc.br/wiki/index.php/Processo_de_Engenharia_do_Conhecimento#RapidOWL

Metodologia Engenharia do Conhecimento: NeOn



É uma Metodologia de engenharia de ontologias baseada em cenários, cujo foco é o desenvolvimento de ontologias em rede. A metodologia Neon visa a reutilização, a reengenharia e a mesclagem de recursos ontológicos e não ontológicos de forma colaborativa e dinâmica. A figura a seguir ilustra os 9 cenários que essa metodologia se baseia:





Cenário 1 - Da especificação para implementação: A rede de ontologia é desenvolvida a partir do zero, não utilizando qualquer recurso existente. Os desenvolvedores especificam neste cenário os requisitos da ontologia. Depois disso, são analisados os recursos necessários para que esta ontologia possa ser reutilizada futuramente. Então deve ser realizado o agendamento das atividades da metodologia e os desenvolvedores devem seguir com a implementação.


Cenário 2 - Reuso e Reengenharia dos recursos não ontológicos: Um recurso não ontológico (NOR) é um recurso de conhecimento consciente cuja semântica ainda não foi formalizada através de uma ontologia. Porém, neste cenário, esses recursos são utilizados para criar ou aprimorar uma rede de ontologias, através de um processo de reengenharia, que irá adaptar os recursos não ontológicos dentro de uma determinada ontologia, dando semântica a este recurso.


Cenário 3 - Reuso de recursos ontológicos: neste cenário os desenvolvedores usam recursos ontológicos já existentes, por exemplo: ontologias já definidas ou partes de ontologias para a construção ou aprimoramento de uma rede de ontologias.


Cenário 4 - Reuso e reengenharia de recursos ontológicos: Neste cenário os desenvolvedores utilizam as ontologias existentes através de um processo de reconstrução gerando novas redes de ontologias.


Cenário 5 - Reuso e mesclagem de recursos ontológicos: este cenário surge quando vários recursos ontológicos do mesmo domínio são selecionados para reutilização, sendo que os desenvolvedores podem criar um novo recurso ontológico, mesclando os recursos selecionados.


Cenário 6 - Reuso, mesclagem, e reprojeto de recursos ontológicos: Este cenário é semelhante ao cenário 5, porém, com a diferença de que aqui os desenvolvedores reprojetam um conjunto de recursos ontológicos já mesclados.


Cenário 7 - Reuso de padrões de projeto de ontologia: para o desenvolvimento de novas ontologias, os desenvolvedores utilizam padrões de projeto existentes encontrados em repositórios.


Cenário 8 - Reestruturação de recursos ontológicos: Nesse cenário, os desenvolvedores da ontologia reestruturam recursos ontológicos que serão integrados na rede de ontologias, por exemplo: o modulo de uma ontologia poderá ser podado, ampliado ou sofrer uma especialização para posteriormente ser integrado a rede de ontologias.


Cenário 9 - Localizando recursos ontológicos: neste cenário, os desenvolvedores adaptam uma ontologia para outras línguas e outras comunidades culturais, obtendo assim uma ontologia multilíngue.

Fonte: http://www.egc.ufsc.br/wiki/index.php/NeOn

Camadas da Web Semântica 3

Finalizando a série sobre as camadas da Web Semântica falaremos sobre as camadas Rules, Logic, Proof, e Trust.



Como de costume começaremos da mais baixa para a mais alta. Portanto começaremos pela camada Rules:    
    Nesta camada encontramos descrição de regras para a Web Semântica. As linguagens Rule Markup Language (RuleML) e Semantic Web Rule Language (SWRL) são exemplos de linguagens propostas para a descrição dessas regras. Nesse sentido, o W3C iniciou o trabalho sobre o Rule Interchange Format (RIF) para fornecer suporte ao intercâmbio das diversas tecnologias baseadas em regras (RIBEIRO, 2008). Atualmente, esforços têm se concentrado na especificação desta camada, principalmente tendo como ponto de partida cenários e requisitos na área de e-commerce, pois se trata de um segmento com uma aplicabilidade direta com relação a regras de negócios (HALLE, 2002).

 A próxima é a camada Logic (Lógica):
    A camada denominada Lógica fornece suporte para a descrição de regras para expressar relações sobre os conceitos de uma ontologia, as quais não podem ser expressas com a linguagem de ontologia utilizada.

 Iremos falar sobre a camadas Proof(prova) e Trust (confiança) em um único parágrafo:  
     As camadas denominadas de Prova e Confiança fornecem o suporte para a execução das regras, além de avaliar a correção e a confiabilidade dessa execução. Considerando que a internet não possui nenhum controle obrigatório de autenticidade bem formulado, pode-se assumir que qualquer um pode falar qualquer coisa, independente de qualquer que seja o assunto na web. A liberdade de expressão nem sempre tem um tom positivo quando se trata de confiabilidade nas fontes de geração de informação, pois todo e qualquer tipo de informação pode ser disponibilizado na web (SMITH e ALESSO, 2005). Uma solução possível para tal problema, segundo Leuf (2006) é a utilização de assinaturas digitais, entre outros recursos, para prover a prova que realmente certa pessoa escreveu um determinado documento, por exemplo. Nesse caso, usuários poderão decidir em quem confiar e o nível de confiança de cada entidade na, também chamada, web of trust.


Abaixo temos o link para acesso ao artigo onde pode-se ler o conteúdo acima.


Fonte:  
MIRANDA, L. G. WEB SEMÂNTICA E WEB SOCIAL EM ENGENHARIA DO CONHECIMENTO. Disponível em  <http://www.abepro.org.br/biblioteca/enegep2009_TN_WIC_098_664_13224.pdf>