“c” baseado na aprendizagem por auto
Transcrição
“c” baseado na aprendizagem por auto
CLÁUDIO LUÍS VIEIRA OLIVEIRA AUTOEXPLC SISTEMA TUTOR INTELIGENTE PARA AUXÍLIO AO ENSINO DA LINGUAGEM “C” BASEADO NA APRENDIZAGEM POR AUTO-EXPLICAÇÃO DE EXEMPLOS PUC-CAMPINAS 2005 CLÁUDIO LUÍS VIEIRA OLIVEIRA AUTOEXPLC SISTEMA TUTOR INTELIGENTE PARA AUXÍLIO AO ENSINO DA LINGUAGEM “C” BASEADO NA APRENDIZAGEM POR AUTO-EXPLICAÇÃO DE EXEMPLOS Dissertação apresentada como exigência para obtenção do Título de Mestre em Sistemas de Computação, ao Programa de PósGraduação do Centro de Ciências Exatas, Ambientais e de Tecnologias, Pontifícia Universidade Católica de Campinas. Orientador: Prof. Dr. Carlos Miguel Tobar Toledo PUC-CAMPINAS 2005 Ficha Catalográfica Elaborada pelo Sistema de Bibliotecas e Informação – SBI – PUC-Campinas t006.3 O48a Oliveira, Cláudio Luís Vieira AutoExplC: sistema tutor inteligente para auxílio ao ensino da linguagem “C” baseado na aprendizagem por auto-explicação de exemplos / Cláudio Luís Vieira Oliveira. - Campinas: PUC-Campinas, 2005. 107p. Orientador: Carlos Miguel Tobar Toledo. Dissertação (mestrado) – Pontifícia Universidade Católica de Campinas, Centro de Ciências Exatas, Ambientais e de Tecnologias, Pós-Graduação em Informática. Inclui apêndices e bibliografia. 1. Inteligência artificial – Aplicações educacionais. 2. Inteligência artificial – Processamento de dados. 3. Preceptores – Processamento de dados. 4. Ensino gerenciado por computador. 5. Ensino individualizado – Processamento de dados. 6. C (Linguagem de programação de computador) I. Tobar, Carlos Miguel. II. Pontifícia Universidade Católica de Campinas. Centro de Ciências Exatas, Ambientais e de Tecnologias. Pós-Graduação em Sistemas de Computação. III. Título. i Em memória dos meus pais, Manoel e Maria Creyde, que sempre me incentivaram e apoiaram na busca do conhecimento. ii AGRADECIMENTOS Ao Prof. Dr. Carlos Miguel Tobar Toledo, Orientador e incentivador dos meus trabalhos de pós-graduação no Centro de Ciências Exatas e Tecnológicas da Pontifícia Universidade Católica de Campinas, pela constante motivação, apoio, atenção e amizade. Aos Prof. Dr. Ricardo Luís de Freitas, Prof. Dr. Juan Manuel Adán Coello e Prof Dr. João Luís Garcia Rosa, Pelo estímulo e importantes sugestões. iii “E como, em toda a Galáxia, não descobriram nada mais precioso do que a Mente, incentivaram seu alvorecer por toda parte. Tornaram-se estrelas; lavradores semearam colheram.“ Arthur Charles Clarke (1917-) e, nos vez campos por de outra, iv RESUMO OLIVEIRA, C.L.V. AutoExplC - Sistema Tutor Inteligente para auxílio ao ensino da Linguagem “C” baseado na aprendizagem por auto-explicação de exemplos. Campinas, 2005. 107f. Dissertação (Mestrado) – Curso de Pós-Graduação em Sistemas de Computação, Pontifícia Universidade Católica de Campinas. Campinas, 2005. Os Sistemas Tutores Inteligentes (STI) têm auxiliado estudantes em diversos domínios, tais como geometria, química e programação. Esses domínios são considerados ideais, porque podem ser facilmente representados e também porque o tipo de interação entre o estudante e o STI pode ser limitado a um conjunto restrito de lexemas, símbolos e números. A proposta desta dissertação consiste em explorar a tecnologia de sistemas inteligentes no contexto do suporte a explicações em um STI, em que se usa a autoexplicação de exemplos para auxiliar no aprendizado da linguagem de programação “C”, mais especificamente para os níveis iniciais de aprendizagem, focando o processamento da língua natural e a classificação das explicações dos alunos. O ambiente proposto apresenta exemplos de programas, previamente elaborados pelo professor, e solicita ao aluno a explicação de trechos de código-fonte. Utilizando técnicas de entendimento aproximado da língua natural, o sistema tenta reconhecer o conteúdo da explicação gerada pelo aluno e, em seguida, envia o resultado a um módulo que procura classificar as explicações como corretas, incorretas ou incompletas em relação ao contexto da atividade proposta e, a partir disso, traça a estratégia de ensino para as etapas subseqüentes. Termos de indexação: inteligência artificial – aplicações educacionais, inteligência artificial – processamento de dados, preceptores – processamento de dados, ensino gerenciado por computador, ensino individualizado – processamento de dados, C (linguagem de programação de computador). v ABSTRACT OLIVEIRA, C.L.V. AutoExplC – An Intelligent Tutoring System to support “C” Language learning through exploration of example self-explanation. Campinas, 2005. 107p. Thesis (Master Degree) Post Graduation – Computer System, Pontifical Catholic University of Campinas. Campinas, 2005. Intelligent Tutoring Systems (ITS) have assisted students in several domains, such as geometry, chemistry and programming. These knowledge areas are considered ideal, because they can easily be represented and also because the type of interaction between the student and the ITS can be limited to a restricted set of words, symbols and numbers. The proposal of this thesis consists of exploring intelligent systems technology in the context of supporting explanations in an ITS, that supports self-explanation of examples to assist in the learning process of the “C” programming language for beginners. More specifically, this work emphasizes natural language processing and the classification of student’s explanations. The considered environment presents examples of programs, previously elaborated by the teacher, and requests the student to explain pieces of source code. Using techniques of approximate natural language understanding the system tries to recognize the content of the explanation generated by the student and, after that, it sends the result to a module that tries to classify the explanations as correct, incorrect or incomplete according to the context of the proposed activity and, considering this, traces the education strategy for the subsequent stages. Index terms: artificial intelligence - educational applications, artificial intelligence - data processing, tutors - data processing, computer aided learning, individual education - data processing, C (computer programming language). vi SUMÁRIO RESUMO .............................................................................................................. IV ABSTRACT ........................................................................................................... V LISTA DE FIGURAS........................................................................................... VIII LISTA DE TABELAS............................................................................................ IX 1. INTRODUÇÃO....................................................................................................1 2. REFERENCIAL TEÓRICO .................................................................................4 2.1. Auto-Explicação e Aprendizagem Através de Exemplos ...........................5 2.2. Sistemas Tutores Inteligentes (STI) .............................................................7 2.2.1. Modelo do Domínio....................................................................................9 2.2.2. Modelo do Estudante.................................................................................9 2.2.3. Modelo do Tutor ........................................................................................9 2.2.4. Ambiente de Aprendizado .......................................................................11 2.3. Representação do Conhecimento ..............................................................11 2.3.1. Representação Baseada em Regras.......................................................12 2.3.2. Lógica ......................................................................................................13 2.3.3. Redes Semânticas...................................................................................14 2.3.4. Frames ....................................................................................................15 2.3.5. Raciocínio Baseado em Casos................................................................16 2.3.6. Redes Bayesianas...................................................................................18 2.4. Processamento da Língua Natural .............................................................20 2.4.1. Análise Léxica .........................................................................................22 2.4.2. Análise Sintática ......................................................................................23 2.4.3. Análise Semântica ...................................................................................24 2.4.4. Análise Semântica Latente ......................................................................26 3. MODELO PROPOSTO .....................................................................................28 3.1. Trabalhos Relacionados..............................................................................29 3.2. Modelo para o STI ........................................................................................31 3.3. Escolha da Forma de Representação do Conhecimento .........................33 3.4. Definição das Rotinas para Entendimento Aproximado da Língua Natural ..............................................................................................................................34 3.5. Implementação .............................................................................................36 3.5.1. Modelo do Domínio..................................................................................37 vii 3.5.2. Modelo do Estudante...............................................................................38 3.5.3. Interface Aluno-Engenho .........................................................................38 3.5.4. Engenho de Inferência.............................................................................38 3.5.5. Interface do Professor .............................................................................39 3.6. Funcionamento do STI Proposto ................................................................40 3.6.1. Subsistema do Professor.........................................................................41 3.6.2. Subsistema do Aluno...............................................................................47 4. RESULTADOS .................................................................................................56 4.1. Avaliação Preliminar ....................................................................................59 4.2. Avaliação Final .............................................................................................61 5. DISCUSSÃO.....................................................................................................63 5.1. Análise da Avaliação Preliminar .................................................................65 5.2. Análise da Avaliação Final ..........................................................................67 5.2.1 Análise das Respostas Erradas................................................................69 5.2.2. Avaliação das Respostas Incompletas ....................................................70 5.2.3. Avaliação das Respostas Corretas..........................................................73 6. CONCLUSÃO ...................................................................................................78 7. REFERÊNCIAS ................................................................................................82 APÊNDICES .........................................................................................................88 A. Estrutura das Relações..................................................................................89 B. Atividades Propostas para a Avaliação do STI............................................91 C. Explicações Utilizadas na Avaliação do STI ................................................93 viii LISTA DE FIGURAS Figura 1: Modelo tradicional de um Sistema Tutor Inteligente ................................8 Figura 2: Escolha das táticas de ensino................................................................10 Figura 3: Proposta para o STI AutoExplC .............................................................32 Figura 4: Proposta para as rotinas para entendimento aproximado da língua natural ............................................................................................................36 Figura 5: Diagrama entidade-relacionamento dos modelos do STI ......................41 Figura 6: Janela inicial do subsistema do professor..............................................42 Figura 7: Cadastro do Exemplo.............................................................................42 Figura 8: Cadastro da Atividade............................................................................43 Figura 9: Conexão com a aplicação do aluno .......................................................47 Figura 10: Janela principal da aplicação do aluno ................................................48 Figura 11: Nós da Rede Bayesiana ......................................................................52 Figura 12: Cadastro dos pesos dos componentes da atividade proposta.............72 Figura 13: Componentes da explicação e respectivos pesos ...............................73 ix LISTA DE TABELAS Tabela 1: Armazenamento da estrutura “if-else” na relação Mapeador ............... 44 Tabela 2: Inclusão na relação Peso-Explicação ................................................... 46 Tabela 3: Extração dos radicais ............................................................................ 48 Tabela 4: Pré-etiquetagem dos radicais ............................................................... 49 Tabela 5: Resultado da pesquisa na relação Corpus ........................................... 50 Tabela 6: Mapeamento dos lexemas da explicação ............................................. 50 Tabela 7: Exemplo das faixas para classificação de uma explicação .................. 53 Tabela 8: Exemplo de um registro da relação Progresso ..................................... 54 Tabela 9: Avaliação Preliminar – Respostas Erradas ........................................... 59 Tabela 10: Problema da classificação de explicações sobre um único comando. 60 Tabela 11: Avaliação Final – Respostas Erradas ................................................. 61 Tabela 12: Exemplo da influência dos pesos dos nós .......................................... 64 Tabela 13: Algumas atividades propostas ............................................................ 66 Tabela 14: Etiquetagem dos lexemas que compõem a explicação ...................... 66 Tabela 15: Atuação do nó para identificação do contexto da explicação ............. 67 Tabela 16: Avaliação Final – Respostas Erradas do Nível 3 ................................ 69 Tabela 17: Explicação que foi classificada de forma equivocada ......................... 70 Tabela 18: Avaliação Final – Respostas Incompletas .......................................... 70 Tabela 19: Explicações incompletas classificadas como corretas ....................... 71 Tabela 20: Avaliação Final – Análise Corretas ..................................................... 73 Tabela 21: Explicações incorretamente classificadas pelo STI ............................ 74 Tabela 22: Continuação da Tabela 21 .................................................................. 75 Tabela 23: Continuação da Tabela 22 .................................................................. 76 Tabela 24: Síntese dos resultados obtidos na avaliação final em relação ao Nível 3 ...................................................................................................... 80 1. INTRODUÇÃO 2 A proposta desta dissertação consiste em explorar a tecnologia de sistemas inteligentes no contexto do suporte a explicações em um Sistema Tutor Inteligente (STI), em que se usa a auto-explicação de exemplos para auxiliar no aprendizado da linguagem de programação “C”.A auto-explicação de exemplos pode ser aplicada a domínios bem estruturados (SCHWORM; RENKL, 2002). Esta proposta foca a sua aplicação no aprendizado de linguagens de programação que, segundo Weber e colegas (1996), é considerada uma tarefa estruturada e de grande complexidade, exigindo a presença quase constante de um tutor, humano ou não, auxiliando e monitorando o aprendizado. Conhecer uma linguagem de programação não é o mesmo que saber programar. Ainda, segundo Weber e colegas (1996), o aprendizado de programação deve incluir as seguintes habilidades: a) resolução de problemas; b) conhecimento da sintaxe de uma determinada linguagem de programação; c) aprendizado de lógica de programação; d) utilização de um ambiente de programação, teste e depuração para os programas criados. No escopo deste trabalho, auto-explicações permitem desenvolver as três primeiras habilidades. Essas habilidades envolvem um certo grau de dificuldade. Porém, existe um consenso que a maior dificuldade relaciona-se à habilidade de resolver problemas dentro do contexto computacional, pois, mesmo que uma pessoa saiba resolver muito bem um problema na vida real, por exemplo uma equação do segundo grau, ela poderá encontrar grandes dificuldades em representá-lo computacionalmente (WEBER et al, 1996). A grande vantagem da aplicação da estratégia de auto-explicação de exemplos dentro do domínio do aprendizado de programação está justamente 3 fundamentada sobre a resolução de problemas para a aquisição de habilidades meta-cognitivas (CHI et al, 1989). O STI desenvolvido auxilia no ensino da linguagem de programação “C”, mais especificamente para os níveis iniciais de aprendizagem, focando o processamento da língua natural e a classificação das explicações dos alunos. O ambiente apresenta exemplos de programas, elaborados pelo professor, e solicita ao aluno a explicação dos mesmos. O sistema tenta reconhecer respostas corretas, incorretas ou incompletas e, a partir das mesmas, traça a estratégia de aprendizado para as etapas subseqüentes. Esta dissertação encontra-se organizada do seguinte modo: o Capítulo 2 apresenta os fundamentos teóricos estudados e que constituem os fundamentos para a definição do STI objeto do trabalho. No Capítulo 3 é apresentado o modelo proposto para o STI, precedido pela apresentação de alguns tutores que influenciaram essa proposta. O Capítulo 4 trata do processo adotado para realizar a avaliação da implementação do STI proposto, considerando os aspectos de velocidade de execução e reconhecimento adequado das explicações, enquanto o Capítulo 5 aborda a discussão dos resultados obtidos. A conclusão da presente dissertação é o objeto do Capitulo 6, no qual são abordadas algumas perspectivas para futuros trabalhos. 2. REFERENCIAL TEÓRICO 5 O referencial teórico desta dissertação consiste na revisão bibliografia, que para fins de estudo, encontra-se subdividida nos seguintes tópicos: autoexplicação, sistemas tutores inteligentes, representação do conhecimento e entendimento de língua natural. 2.1. Auto-Explicação e Aprendizagem Através de Exemplos Chi e colegas (1989, 1994) consideram que a auto-explicação é bastante positiva para o aprendizado, pois: • O aprendizado é um processo construtivo, no qual o aluno converte palavras e exemplos, gerados por um professor ou apresentados através de um texto, em habilidades, através da resolução de problemas. • A explicação é um mecanismo de estudo que permite ao aluno criar inferências e explicar as condições e conseqüências de cada passo de um exemplo, além de tornar possível, a aplicação de princípios e definições dos conceitos empregados com o objetivo de justificá-los. • O aprendizado envolve a integração de novas informações ao conhecimento já existente. Gerar explicações a si mesmo (autoexplicação) facilita este processo de integração. • A maior parte dos alunos escreve novos programas por analogia a programas exemplo. O sucesso desta prática está intimamente relacionado ao grau de entendimento que estes alunos obtiveram do exemplo. O aprendizado e o entendimento do exemplo é obtido através das explicações que os alunos geram enquanto estudam. A auto- 6 explicação é importante e necessária, dentro deste processo, porque muitos exemplos apresentam seqüências de ações não explicadas. Como conseqüência, motivar o aluno para produzir explicações espontâneas sobre um tópico abordado produzirá um melhor aprendizado em relação à leitura de um texto ou mesmo a uma explicação de terceiros. Outro benefício deste método está relacionado ao encorajamento dos processos cognitivos que estimulam o aprendizado (CONATI; VANLEHN, 1999). Os processos de aprendizado são freqüentemente considerados em termos de compreensão, aquisição de habilidades, ou ambos. No caso da compreensão, a informação declarativa que deverá ser entendida está relacionada a algum conhecimento que já está armazenado e organizado na memória. Desta forma, podemos entender que a compreensão consiste na instanciação de um conhecimento existente (CHI et al, 1994). O entendimento pleno só é obtido quando o aluno é capaz de processar uma porção não explicada de um exemplo, através da formulação de conclusões e a criação de inferências a partir da informação apresentada. Para fazer isso, o aluno precisa gerar explicações. O aprendizado através de exemplos é considerado um método natural e comum para a obtenção de novos conhecimentos. Freqüentemente, professores recorrem a exemplos para ilustrar um tópico abordado de forma a permitir ao aluno fixar o conhecimento transmitido (CONATI et al, 1997). Porém, o emprego de exemplos para o aprendizado não garante eficácia. O grau de eficácia está fortemente associado à maneira que o estudante explica a si mesmo os passos para a solução do exemplo, ou em outras palavras, o quanto o estudante aplica a habilidade meta-cognitiva da auto-explicação. 7 2.2. Sistemas Tutores Inteligentes (STI) O termo “Sistema Tutor Inteligente” é aplicado a programas que são projetados para o ensino e que fazem uso de técnicas de Inteligência Artificial (FREEDMAN et al, 2000). O objetivo principal destes programas consiste em complementar ou, até mesmo, substituir um tutor humano, com a vantagem de acompanhar o aluno em cada passo de aprendizado. Informações sobre as dificuldades específicas ou a velocidade de aprendizagem compõem um modelo de usuário, que reflete o conhecimento adquirido e a evolução frente ao entendimento do domínio que está sendo estudado. Os STIs podem ser considerados uma evolução dos tradicionais sistemas CAI (Computer Aided Instruction), mas que, ao contrário desses, utilizam técnicas de Inteligência Artificial e procuram gerar uma experiência individualizada de aprendizagem para o estudante, simulando as interações entre um professor e um aluno. O processo ensino-aprendizado apresenta grande dependência da interação e da adaptação, que são características típicas da inteligência humana, apresentando grandes dificuldades e desafios na implementação de soluções computacionais inteligentes. A maior parte dos projetos existentes não implementam todas as funcionalidades propostas pelos trabalhos teóricos, sendo, por essas razões, justificado investir no estudo tanto das técnicas de planejamento como também de implementação desses sistemas (LUSTOSA; ALVARENGA, 2004). De acordo com Hall e Wood (1990), os STIs consistem de uma composição interdisciplinar, sendo que o objetivo primário destes sistemas, consiste na modelagem e na representação do conhecimento de um especialista 8 humano, de modo a auxiliar a aprendizado do estudante através de processos personalizados e interativos. Dentro do ambiente de um STI, procura-se não apenas ensinar, mas maneiras de como ensinar. “Os STIs têm sido apresentados como altamente eficientes para a melhora do desempenho e motivação dos estudantes” (LIMA; ROSATELLI, 2003). É importante salientar, neste momento, que a utilização dos STIs trouxeram à tona algumas questões pedagógicas. As tecnologias que permitem automatizar métodos tradicionais de ensino e aprendizagem têm também auxiliado na criação de novos métodos além de redefinir metas educacionais (MCARTHUR et al, 1993). Dentre estes novos métodos, é possível citar vários aspectos do trabalho colaborativo e o aprendizado através de exemplos (LIMA; ROSATELLI, 2003). Um modelo tradicional de um STI apresenta quatro componentes: o modelo do domínio, o modelo do estudante, o modelo do tutor e um ambiente de aprendizado (FREEDMAN et al, 2000), conforme apresentado na Figura 1 e discutido em seguida. Aluno Ambiente de aprendizado Modelo do tutor Modelo do domínio Modelo do estudante Figura 1: Modelo tradicional de um Sistema Tutor Inteligente (FREEDMAN et al, 2000) 9 2.2.1. Modelo do Domínio O modelo do domínio possui a representação do conhecimento de um especialista na área sob estudo na qual o sistema irá atuar. É composto por conhecimentos declarativos e procedimentais e, apresenta-se organizado na forma de listas, diagramas de estruturas ou regras. O conhecimento declarativo define os termos do domínio, seus atributos e o relacionamento entre os termos. O conhecimento procedimental consiste de argumentos ou regras que serão utilizados na resolução dos problemas que são apresentados ao estudante. 2.2.2. Modelo do Estudante O modelo do estudante representa o grau de conhecimento do mesmo, seus acertos, erros e dificuldades. O modelo do estudante deve ser capaz de definir o nível de conhecimento do aluno a qualquer momento dentro do sistema. Este modelo também pode ser composto por conhecimentos declarativos e procedimentais. 2.2.3. Modelo do Tutor O modelo do tutor permite a simulação das decisões de um professor, um processo referente a intervenções pedagógicas e, posteriormente, permite a geração das instruções apropriadas baseando-se nas diferenças entre o modelo do domínio e o modelo do estudante. O modelo do tutor possibilita acompanhar a cobertura dos tópicos do domínio e analisa o entendimento do aluno através de avaliações. 10 A preocupação neste modelo não é a representação do conhecimento global, mas como um indivíduo representa seu próprio conhecimento através do uso de suas habilidades dentro do domínio. Um fator chave no projeto de um STI consiste na correta definição das estratégias e táticas de ensino. As estratégias de ensino podem ser definidas como planos que definem as formas de ensino e aprendizagem do aluno. Uma estratégia de ensino é composta por um conjunto de táticas de ensino, as quais consistem no trabalho que deverá ser desenvolvido pelo aluno para obter um determinado conhecimento. Durante a interação entre o aluno e o STI podem ser utilizadas diferentes estratégias de ensino com o objetivo de auxiliar o aluno a refletir e analisar os resultados oriundos de sua tomada de decisão. A escolha do procedimento a ser adotado, em um determinado instante da interação, deverá considerar as informações contidas no módulo do aluno. Após a aplicação de uma estratégia, por parte do STI, tem-se então o modelo de aluno modificado, uma vez que, o estado cognitivo percebido pode ter mudado. Durante a interação, o STI considera que a resolução de cada uma das atividades segue uma determinada seqüência lógica de etapas que devem ser cumpridas de maneira correta. Os recursos disponibilizados em cada etapa também podem ser considerados. Escolha do modelo do aluno Escolha da estratégia de ensino Figura 2: Escolha das táticas de ensino (Konzen; Frozza, 1999) Escolha das táticas de ensino 11 Conforme ilustrado pela Figura 2, as táticas de ensino que poderão ser aplicadas a determinado processo de aprendizagem do aluno são definidas após a escolha do modelo do aluno e da estratégia de ensino (KONZEN; FROZZA, 1999). 2.2.4. Ambiente de Aprendizado No caso do STI ser generativo (WOOLF et al, 2002), este STI deve ter a capacidade de analisar o processo atual de aquisição do conhecimento e, baseado nesta análise, gerar conclusões e instruções que poderão ser responsáveis pela redução das discrepâncias entre o modelo do domínio e o modelo do estudante. Este tipo de sistema é supostamente “inteligente” devido ao seu ambiente de aprendizado, que possui a capacidade de reagir de forma flexível e adaptativa ao processo de aquisição do conhecimento. A interface do ambiente de aprendizado é responsável pela troca de informações entre o sistema, o instrutor e o aluno. Deve ser capaz de mostrar informações coerentes com o nível de aprendizado do aluno e manter a coerência nas explicações apresentadas sobre o domínio que está sendo estudado. 2.3. Representação do Conhecimento Os STIs estão baseados na forma que os especialistas humanos resolvem os problemas, ou seja, a partir do conhecimento do domínio da aplicação. Isto traz a necessidade de representar o conhecimento do domínio. Há duas abordagens distintas para a representação do conhecimento (SRIRAM, 1997): 12 a) Representação declarativa - o conhecimento é especificado, mas as operações para sua utilização não são fornecidas; b) Representação procedimental - as operações de controle necessárias ao uso do conhecimento estão presentes no próprio conhecimento. Algumas das principais técnicas conhecidas para a representação do conhecimento dentro de um STI são: Representação Baseada em Regras, Lógica, Redes Semânticas, Frames, Raciocínio Baseado em Casos e Redes Bayesianas. 2.3.1. Representação Baseada em Regras A representação baseada em regras é a maneira mais ampla e originalmente utilizada na Inteligência Artificial para representação do conhecimento. Basicamente, consiste na representação do conhecimento do domínio através de um conjunto bem definido de regras, também denominadas regras de produção. As regras de produção podem ser formadas tanto de conhecimento declarativo (fatos), que é utilizado para representar o conhecimento sobre os relacionamentos no domínio do problema, como de conhecimento procedimental (heurísticas), que é o conhecimento sobre como solucionar o problema usando o conteúdo das regras, definindo assim uma base de conhecimento para um sistema baseado em regras. Cada regra é dada através da forma geral: se <condições> então <ações>, onde: 13 • <condições>: podem ser simples ou compostas, quando compostas são conectadas através dos conectivos lógicos para realizar a conjunção ou a disjunção. • <ações>: consistem nas ações que serão consideradas, caso o resultado da avaliação das <condições> seja verdadeiro. 2.3.2. Lógica A lógica consiste em um sistema formal definido por regras de formação e regras de inferência que, em sua origem, tinha como principal objetivo formalizar a semântica da língua natural. Sendo a lógica proposicional, também conhecida por lógica booleana, a mais tradicionalmente utilizada. Na lógica proposicional, os símbolos representam os fatos e é possível combiná-los através de operadores lógicos ou conectivos. Desta forma, pode-se formar sentenças complexas e facilmente representar fatos do mundo real através de proposições lógicas. Outra lógica empregada é a de predicados que possibilita expressar propriedades gerais ou específicas quando utilizados os quantificadores universal e existencial. A programação lógica ganhou aceitação na comunidade de pesquisadores da Inteligência Artificial, devido à sua elegância, simplicidade e perfeita base matemática (SRIRAM, 1997). Uma importante motivação que justifica o uso da lógica matemática é que, usando declarações lógicas como meio de armazenar conhecimentos, se obtém um mecanismo formal para realizar inferências sobre o conhecimento expresso. É importante salientar que não apenas as lógicas proposicional e de predicados são utilizadas para representar conhecimento em STIs, outras mais 14 diversas também o são, tais como a lógica modal, a lógica das probabilidades e a lógica nebulosa (fuzzy). 2.3.3. Redes Semânticas Uma rede semântica consiste de um conjunto de nós conectados por uma série de arcos que permitem representar conhecimento. Os nós em geral representam objetos e os arcos, as relações binárias entre esses objetos. Mas os nós também podem ser utilizados para representar outras entidades, de acordo com o contexto do domínio do problema. Um dos atrativos, por trás desta representação, é que o significado de um conceito vem do modo como ele é conectado a outros conceitos, para formar o conhecimento. As redes semânticas estão fundamentadas sobre um modelo computacional da memória humana denominada memória associativa, no qual é possível explicar diversos resultados experimentais sobre o comportamento da memória humana, como, por exemplo, o fato de que o reconhecimento de objetos que pertencem a classes mais numerosas toma mais tempo do que o reconhecimento dos pertencentes a classes menos numerosas (SRIRAM, 1997). Os nós encontrados nas redes semânticas, geralmente, estão classificados em: nó individual que é uma instância particular de uma classe, onde a classe pode ser definida como uma descrição de um ou mais objetos similares; ou nó genérico que define uma classe de objetos similares. Os relacionamentos comumente usados entre os nós em uma base de conhecimento são: • Generalização: envolve o agrupamento de um conjunto de nós genéricos para formar um outro nó. O processo inverso da 15 generalização é denominado de especialização e denotada por uma ligação é-um; • Classificação: envolve o agrupamento de um conjunto de nós individuais em um nó genérico. O processo inverso da classificação é denominado de instanciação. A classificação é representada por uma relação é-um; • Agregação ou composição envolve a construção de um objeto a partir de suas partes constituintes. Na literatura técnica sobre orientação a objetos, também é conhecida pela denominação todoparte. Um mecanismo de herança simples ou múltipla é obtido através dos relacionamentos é-um e pode ser considerado como uma das características mais fortes das redes semânticas, possibilitando que propriedades de um nó sejam especificadas apenas uma vez, no mais alto nível da hierarquia de conceitos, sendo herdados por todos os conceitos derivados. 2.3.4. Frames A representação de conhecimento através de frames, proposta por Minsky (1974), possibilita a modelagem e compreensão de linguagem natural. O conceito de frames também está presente na origem das idéias que levaram às linguagens de programação orientadas a objetos, bem como, na generalização desta representação para a representação denominada script. Em geral, um frame é uma coleção de atributos, chamados de slots, e valores, que descrevem alguma entidade do mundo (RICH; KNIGHT, 1993). Os frames integram conhecimento declarativo sobre objetos e eventos e 16 conhecimento procedimental sobre como recuperar informações ou calcular valores. Os atributos também apresentam propriedades que dizem respeito ao tipo de valores e às restrições de número que podem ser associadas a cada atributo. Assim como nas redes semânticas, uma das características nos frames é a possibilidade de que sejam criados novos subtipos de objetos que herdem todos as propriedades da classe original. Essa herança é bastante usada tanto para a representação do conhecimento como para a utilização de mecanismos de inferência. Um slot de relação é utilizado para ligar dois frames. A relação e sua herança associada podem ser definidas na maioria das linguagens baseadas em frame, sendo que as especificações de herança definem quanta informação é permitida ser herdada de um frame para outro. 2.3.5. Raciocínio Baseado em Casos O raciocínio baseado em casos (RBC) está fundamentado sobre a proposta de utilizar experiências passadas como base para lidar com novas situações similares, além de combinar as vantagens da recuperação da informação e do raciocínio baseado em regras (KOLODNER, 1993). Esta abordagem parece ser intuitiva: quando uma nova situação ocorre, procura-se, adotando um eficaz mecanismo de recuperação, utilizar algo que já foi utilizado com sucesso. Sendo que, soluções utilizadas em situações similares podem ajudar na solução desta nova situação. Por outro lado, o RBC pode funcionar também de maneira inversa, ou seja, a partir de contra-exemplos. Neste caso, em 17 uma nova situação, devem-se descartar as soluções utilizadas no passado e que resultaram em insucessos. A principal parte do conhecimento nos sistemas baseados em RBC está representada através de seus casos. Um caso pode ser definido como a abstração de uma experiência descrita em termos de seu conteúdo e contexto, podendo assumir deferentes formas de representação. O conhecimento neste contexto pode ser interpretado como sendo um conjunto de métodos que modelam um conhecimento especializado de modo de torná-lo disponível em um sistema inteligente. Apesar de um sistema RBC ser extremamente dependente da estrutura e do conteúdo de sua base de casos, seu conhecimento não está presente apenas nos seus casos, mas também nas etapas de desenvolvimento. Estas etapas são: • Representação dos casos - os casos devem manter o conhecimento de eventos ocorridos em situações passadas. De acordo com Kolodner (1993) os casos são formados por três elementos principais - a descrição do caso, o caso em si e o estado posterior do domínio após a aplicação da solução; • Indexação - consiste em um problema central em RBC e envolve a determinação dos tipos de índices que serão utilizados na etapa de recuperação; • Recuperação dos casos - uma vez definido o problema, esta etapa realiza a busca na base de casos e seleciona quais casos podem ser aproveitados para a solução do problema. Este processo é executado 18 por algoritmos que selecionam casos da base que apresentam um determinado grau de similaridade com o caso proposto; • Adaptação - o tipo principal de conhecimento usado durante a solução de um problema é aquele fornecido pelo conhecimento específico contido nos casos. Porém, existem situações em que este conhecimento não é suficiente ou apropriado para atender os requisitos da aplicação. Quanto isto ocorre, são utilizados conhecimentos de domínio, os quais podem contribuir para a identificação de dependências entre certas características de um caso e auxiliar na inferência de características adicionais; • Aprendizagem - novos casos ou casos adaptados podem ser adicionados à base de casos. O raciocínio baseado em casos pode ser aplicado em várias tarefas de raciocínio, tais como: propor soluções para novos problemas, antecipar, evitar e explicar falhas em soluções propostas, adequar ou retificar soluções propostas. 2.3.6. Redes Bayesianas As Redes Bayesianas são um modelo de representação do conhecimento incerto, baseado nos conceitos da teoria da Probabilidade Bayesiana, proposta pelo Reverendo Thomas Bayes em 1763. O conhecimento incerto é aquele que apresenta deficiências. Em determinado momento, os dados permitem a obtenção de uma representação não exata, parcial ou aproximada da realidade (BHATNAGAR; KANAL, 1986). É importante observar que o modelo baseia-se em probabilidades prévias e mais algumas informações com um certo nível de incerteza, para 19 representar o conhecimento. Um modelo totalmente incerto não seria de grande utilidade e não teria ponto de partida para a manipulação de suas situações e a geração de novas representações. A representação da Rede Bayesiana é feita através de um grafo direcionado acíclico no qual os nós representam variáveis de um domínio e os arcos representam a dependência condicional ou informativa entre as variáveis (JENSEN, 2001). A dependência é representada através de probabilidades, associadas a cada grupo de nós pais e filhos da Rede Bayesiana (RUSSEL; NORVIG, 1995). O elemento primário de uma linguagem de probabilidade é o evento. Podemos entender um evento como um estado de alguma parte de nosso mundo em um determinado intervalo de tempo (SIVIA, 1996). Dentro de uma Rede Bayesiana, o processo de aprendizado é o seguinte: a) o conhecimento de um conjunto de especialistas é representado em uma Rede Bayesiana, como é feito na construção de um sistema especialista probabilístico; b) um banco de dados é utilizado para atualizar este conhecimento, gerando uma ou mais novas Redes Bayesianas. O resultado inclui um refinamento do conhecimento dos especialistas originais e, em algumas ocasiões, a identificação de novas distinções e relacionamentos. Esta abordagem é robusta a erros no conhecimento do especialista, mesmo quando este conhecimento é incompleto ou não confiável, permitindo seu uso para melhorar o processo de aprendizagem (HECKERMAN, 1995). O processo de treinamento de uma Rede Bayesiana é similar ao utilizado nas redes neurais (HECKERMAN, 1995), porém apresenta duas vantagens: a) é extremamente simples colocar o conhecimento de um especialista em uma Rede Bayesiana e utilizá-lo para aumentar a eficiência e 20 precisão do aprendizado; b) os nós e arcos em uma Rede Bayesiana freqüentemente correspondem a distinções reconhecíveis e relacionamentos causais. Como conseqüência, é mais simples interpretar e entender o conhecimento codificado na representação. 2.4. Processamento da Língua Natural A capacidade de processamento de uma língua natural permite que os seres humanos comuniquem-se com os computadores da forma mais simples possível, utilizando uma língua com a qual já estão habituados. Evitando, deste modo, a necessidade de adaptação a formas inusitadas de interação, ou mesmo o aprendizado de uma língua artificial, cuja sintaxe costuma ser de difícil aprendizado e domínio. A comunicação entre pessoas e máquinas é uma área que tem motivado uma série de pesquisas. O objetivo final é permitir que usuário e equipamento possam se comunicar através de uma língua humana. Muitos autores de ficção científica descrevem cenários no futuro nos quais, por meio de uma simples conversa, as pessoas sejam capazes de explicar a tarefa que querem que seja executada e o computador seja capaz de executá-la. Estudos apontam para a possibilidade futura da existência de computadores com capacidade de compreensão da língua natural possibilitando, por exemplo, o processamento dos comandos expressos em linguagem (escrita ou falada) pelos usuários finais. Outra perspectiva para o futuro mostra que o desenvolvimento de modelos computacionais da língua natural permitirá um maior processamento de informações, visto que a maior parte do conhecimento humano está registrado na forma lingüística (RICH; KNIGHT, 1993). 21 O caráter interdisciplinar do processamento da língua natural ilustra o nível de complexidade normalmente requerido das abordagens desenvolvidas, as quais apresentam conceitos de inteligência artificial, teoria da computação, compiladores, lingüística computacional e de outras disciplinas. Basicamente, as aplicações dos sistemas que tratam a língua natural podem ser divididas em duas classes: aplicações baseadas em texto e aplicações baseadas em diálogos. Aplicações baseadas em texto são sistemas que procuram documentos específicos dentro de uma base de dados específica. Pode-se citar alguns exemplos: a tarefa de localizar livros relevantes em uma biblioteca; sistemas que realizam a tradução de documentos e aplicações que permitem sumarizar um determinado documento. Dentro das aplicações baseadas em diálogos, é possível citar os STIs, entre outros sistemas, que interpretam e respondem aos comandos expressos em uma língua natural qualquer, escrita ou falada. Para um sistema ser considerado processador da língua natural duas condições devem ser satisfeitas: • Um subconjunto de entrada e/ou saída do sistema é codificado em uma língua natural; • O processamento da entrada e/ou a geração da saída é baseada no conhecimento sobre aspectos morfológicos, sintáticos, semânticos de uma língua natural. Observa-se, principalmente com a segunda condição, a exigência da interpretação do conteúdo de uma sentença, sendo que esta condição não é satisfeita nos sistemas que processam a língua natural puramente como cadeias de caracteres como por exemplo, editores de texto ou pacotes estatísticos. 22 Para um computador realizar o processamento de uma língua natural inicialmente deve-se dividir essa língua em seus elementos básicos. Um lexema ou palavra é uma entrada individual em um léxico. Pode ser entendido como um conjunto particular de ortografia e fonologia que possui uma forma de representação simbólica do conhecimento. O léxico é um conjunto finito de lexemas, sendo o componente mais extenso da língua. Dentro deste contexto, os lexemas e seus respectivos significados são importantes quando conseguem prover as informações necessárias para obter representações significativas de sentenças inteiras. Esta abordagem é motivada pelo fato de que os lexemas, por si só, não se referem ao mundo, não podem ser determinados verdadeiros ou falsos, literais ou figurativos. Estes atributos apenas podem ser aplicados a sentenças e contribuem, de forma simplória, ao conceito de que o léxico é apenas uma relação de fragmentos simbólicos sem nenhuma estrutura sistemática. Para que um sistema computacional interprete uma sentença em língua natural, é necessário manter informações morfológicas, sintáticas e semânticas, armazenadas em um dicionário, juntamente com as palavras que o sistema compreende. As etapas do processamento da língua natural estão discriminadas a seguir (JURAFSKY; MARTIN, 2000) (RICH; KNIGHT, 1993). 2.4.1. Análise Léxica O analisador léxico identifica lexemas ou expressões isoladas em uma sentença, sendo este processo auxiliado por delimitadores, tais como símbolos para pontuação e espaços em branco. Os lexemas identificados são classificados 23 de acordo com seu tipo de uso ou, em língua natural, dentro de uma categoria gramatical. Neste contexto, uma instância de um lexema dentro de uma sentença gramaticalmente válida pode ser substituída por outra do mesmo tipo, configurando uma sentença ainda válida, por exemplo: substantivos, pronomes e verbos entre outros. Dentro de um mesmo tipo de lexema, existem grupos de regras que caracterizam o comportamento de um subconjunto de vocábulos da língua, por exemplo: formação do plural de substantivos terminados em "ão" e flexões dos verbos regulares terminados em "ar" dentre outros. Assim, a morfologia objetiva classificar os lexemas quanto à sua estrutura, forma, flexão e classificação (JURAFSKY; MARTIN, 2000). O emprego de um analisador léxico é fundamental para a compreensão de uma frase, pois para formar uma estrutura coerente de uma sentença, é necessário compreender o significado de cada um dos lexemas componentes (RICH; KNIGHT, 1993). 2.4.2. Análise Sintática O conceito de análise sintática está intimamente relacionado ao conceito de gramática, que pode ser definido como um conjunto de regras que expressam os modos que os símbolos de determinada língua podem ser agrupados e ordenados. Através da gramática da língua a ser analisada e das informações do analisador léxico, o analisador sintático procura construir árvores de derivação para cada sentença, mostrando como os lexemas estão relacionados entre si. 24 Durante a construção da árvore de derivação, é verificada a adequação das seqüências de lexemas às regras de construção impostas pela língua, na composição de frases, períodos ou orações. Dentre estas regras, pode-se citar a concordância e a regência nominal e/ou verbal, bem como o posicionamento de termos na frase. Um termo corresponde a um elemento de informação (lexema ou expressão), sendo tratado como unidade funcional da oração, participando da estrutura como um de seus constituintes que são denominados sintagmas. A análise sintática de uma oração em português deve levar em conta os seguintes sintagmas: termos essenciais (sujeito e predicado), termos integrantes (complementos verbal e nominal) e termos acessórios (adjunto adverbial, adjunto adnominal e aposto). A análise do período, por sua vez, deve considerar o tipo de período (simples ou composto), sua composição (por subordinação, por coordenação) e a classificação das orações (absoluta, principal, coordenada ou subordinada). Nos sistemas de processamento de língua natural, o maior problema é a transformação de uma frase potencialmente ambígua em uma não ambígua, a qual será utilizada pelo sistema. Esta transformação é conhecida como parsing. 2.4.3. Análise Semântica A semântica pode ser definida como o estudo do sistema de significados de uma língua. A lexema “significado” possui vários sentidos e as abordagens semânticas podem variar muito. Uma delas estabelece que o significado é a relação entre a linguagem e o mundo externo, sentido referencial ou denotativo, e que a semântica investiga a relação entre as palavras e os conceitos que as mesmas simbolizam. Outra abordagem está fundamentada no 25 estado mental do falante, refletindo um espectro de matizes pessoais e emocionais, ou seja, sentido afetivo ou conotativo. Outra ainda refere-se ao contexto social em que a língua é usada, do qual deriva parte desse significado, conhecida com sentido contextual. Uma quarta abordagem refere-se às relações sensoriais que conectam palavras e sintagmas, pelas quais sabe-se, por exemplo, que algumas palavras têm o "mesmo" significado, por exemplo, carro e automóvel. Além de outras que têm significado "oposto", por exemplo casado e solteiro. Outros lexemas possuem um significado inerente, como o caso do gato, que está incluso entre os animais. Em termos lingüísticos, é útil estabelecer a distinção entre significado estrutural, cuja forma deriva de sua posição e função no sistema gramatical da língua. Em termos computacionais, a análise semântica pode ser entendida como um processo no qual a representação do conhecimento é composta e atribuída a entradas lingüísticas. A criação da representação do conhecimento, de forma rica e precisa, obrigatoriamente envolve uma grande variedade de fontes de conhecimento e técnicas de inferência. Neste contexto, as fontes de conhecimento tipicamente adotadas estão relacionadas aos significados das palavras. Os significados são associados às estruturas gramáticas, conhecimentos sobre a estrutura da língua, conhecimentos sobre o contexto no qual a frase está inserida e um senso comum sobre o tópico abordado. A compreensão da relação entre as palavras é tão importante quanto a compreensão das próprias palavras. Enfoques formais para a semântica gramatical tentam descrever o sentido de uma frase mediante a tradução de sua estrutura sintática para uma fórmula lógica-semântica. Como não existe uma 26 correspondência imediata e biunívoca entre sintaxe e semântica, uma mesma estrutura sintática pode dar origem a diferentes representações semânticas. 2.4.4. Análise Semântica Latente A adoção da Análise Semântica Latente permite capturar a ocorrência semântica latente da informação, a partir da localização de palavras similares em um contexto similar existente dentro de um corpus. A Análise Semântica Latente foi desenvolvida originalmente como um método de recuperação de informação, ou seja, permite selecionar de uma grande base de dados um subconjunto de textos que combinam com a especificação da busca (WIEMER-HASTINGS et al, 1999). A partir de semelhanças das palavras-chave especificadas na busca, são selecionados os textos que apresentam o número mais elevado destas semelhanças. Outra característica da Análise Semântica Latente consiste na sua incapacidade de reconhecer sinônimos ou sentidos alternativos para as palavras-chave. A Análise Semântica Latente usa uma técnica estatística chamada de decomposição singular do valor, para reduzir uma matriz de co-ocorrência dos termos versus documentos a um conjunto de três matrizes muito menores, que descrevem um espaço semântico N-dimensional. A primeira dessas três matrizes resultantes especifica o vetor N-dimensional para cada um dos termos. A segunda corresponde aos vetores para os documentos. E a terceira determina a importância relativa de cada uma das dimensões de N. A relevância funcional desta técnica estabelece que uma representação reduzida reproduz da melhor maneira os dados originais e deve generalizar exemplos similares de palavras, que ocorrem em um contexto similar. Isto resulta em uma representação onde os 27 termos similares e seus originais têm vetores de similaridade na distância Ndimensional do espaço (LANDAUER, 2002). 3. MODELO PROPOSTO 29 STIs freqüentemente apresentam problemas aos alunos e verificam a solução passo a passo, podendo ainda apresentar dicas sensíveis ao contexto para cada passo da resolução. Porém, esses tutores não solicitam aos alunos explicações ou justificativas sobre os passos executados para a solução, ao contrário dos tutores humanos que procuram encorajar os alunos a raciocinar sobre os passos executados na solução de um determinado problema. Da mesma forma, a auto-explicação possui o potencial de ampliar o conhecimento do aluno sobre o domínio, resultando na obtenção de um conhecimento que permite generalizar melhor em novas situações. Porém, para o aluno se beneficiar do potencial da auto-explicação através de um STI, o mesmo deve ser capaz de realizar diálogos com o aluno no nível das explicações (POPESCU et al, 2003). O modelo proposto foi elaborado tomando-se como base o referencial teórico e também o estudo de alguns STIs existentes. 3.1. Trabalhos Relacionados Vários STIs foram estudados de forma a auxiliar na elaboração do projeto e definição do modelo desenvolvido. Dentre os quais é relevante citar: • Geometry Explanation Tutor (ALEVEN et al, 2001), construído a partir do PACT – Geometry Tutor (ALEVEN et al, 2001). Este STI solicita que o aluno explique, com suas próprias palavras, as respostas aos problemas de geometria apresentados. • CIRCSIM-Tutor (ZHOU et al, 1999) apresenta ao aluno uma descrição de uma mudança fisiológica e solicita predições sobre os efeitos que esta mudança ocasiona sobre sete importantes aspectos fisiológicos. A partir deste ponto, o STI conduz um diálogo com o aluno 30 visando corrigir os erros encontrados nas predições através de entradas e saídas em texto livre. • SE-Coach (CONATI et al, 1997) é um STI que permite orientar o aluno na geração de auto-explicações corretas e efetivas e, como conseqüência, melhorar o desempenho na resolução de problemas dentro do domínio de Física, mais especificamente as Leis de Newton, no nível universitário. • CECELIA (REDMOND; PHILLIPS, 1997) é um STI aplicado ao domínio de Química, mas especificamente para balanceamento de equações. Projetado com os conceitos de Raciocínio Baseado em Casos. O STI utiliza-se de técnicas de ensino que incluem a apresentação passo-a-passo da solução do caso, predições e explicações por parte do aluno das ações do especialista. O STI explora uma estratégia de ensino a partir de exemplos, privilegiando a resolução de uma grande quantidade de exemplos por parte do aluno ao invés de inserir grandes quantidades de “inteligência” dentro do tutor. • AutoTutor (GRAESSER et al, 1999) é um STI que simula padrões de discurso e estratégias educacionais de um típico tutor humano. Atua no domínio de fundamentos de hardware, sistemas operacionais e Internet em disciplinas de introdução à informática. O AutoTutor apresenta questões e problemas a partir de um script, em seguida procura compreender as contribuições colocadas pelo aluno e formula diálogos que são sensíveis a estas contribuições. 31 • ELM-ART (BRUSILOVSKY et al, 1996) é um STI desenvolvido para uso na internet, através de um navegador. Apresenta como objetivo principal possibilitar o aprendizado da linguagem de programação Lisp. Está baseado no ELM-PE (WEBER; MÖLLENBERG, 1994), que é um ambiente de ensino inteligente que permite programação baseada em exemplos, análises inteligentes das soluções dos problemas, além de recursos avançados de teste e depuração. • ACT Programming Tutor (CORBETT; BHATNAGAR, 1997) é um STI construído com base em um modelo cognitivo de conhecimento de programação. Consiste basicamente de um ambiente de resolução de problemas no qual os alunos aprendem a escrever pequenos programas em Lisp, Pascal ou Prolog. Alguns dos tutores estudados, tais como o AutoTutor (GRAESSER et al, 1999), CIRCSIM-Tutor (ZHOU et al, 1999) e SE-Coach (CONATI et al, 1997) possuem capacidade de executar o processamento da língua natural através do processamento estatístico da língua, correção ortográfica, identificação de palavras-chave, análise sintática e análise semântica latente. 3.2. Modelo para o STI O STI proposto, conforme mostrado na Figura 3, consiste basicamente de dois subsistemas. O primeiro é o subsistema do professor que consiste basicamente na interface entre o STI e o professor e é responsável pelo cadastro dos exemplos e respectivas soluções, bem como permite a criação dos problemas que serão apresentados ao aluno. 32 Aluno Interface aluno-engenho Engenho de inferência Domínio Conhecimento do aluno Interface do professor Professor Figura 3: Proposta para o STI AutoExplC (adaptado de Freedman et al, 2000) O subsistema do aluno permite a comunicação entre o STI e o aluno, possibilitando ao mesmo visualizar as atividades cadastradas previamente pelo professores e, em seguida, fornecer as explicações solicitadas. O modelo proposto para o STI é composto primariamente por duas bases de conhecimento: a) Domínio - armazena as informações relacionadas ao assunto que será ensinado, no caso a linguagem “C”; b) Conhecimento do aluno - representa o nível de conhecimento atual do aluno dentro do domínio. 33 Além das bases de conhecimento que compõem o STI, existem ainda: a) Engenho de inferência que realiza inferências, baseadas na base de conhecimento do aluno e do domínio. b) Interface aluno-engenho que realiza a comunicação entre o aluno e os demais módulos do STI e é capaz de prover um suporte eficaz para as partes instrumentais da tarefa, por exemplo, minimizando a carga cognitiva sobre a sintaxe e a depuração da programação, e que segundo Trafton e Reiser (1993), auxilia no desenvolvimento dos demais aspectos cognitivos necessários ao aprendizado de uma linguagem de programação. c) Interface do professor que realiza a comunicação entre o professor e o STI e é responsável por permitir o cadastro de tópicos, explicações e resoluções, além de permitir visualizar as explicações dos alunos. 3.3. Escolha da Forma de Representação do Conhecimento A evolução dos STIs mostra a necessidade de se tratar não apenas do conhecimento formal, mas também dos conhecimentos incertos e indeterminados (PEROTTO; VICARI, 2001). Pesquisas recentes com algoritmos de Redes Bayesianas têm permitido a modelagem de domínios complexos utilizando representações probabilísticas (MURRAY; VANLEHN, 2000). O formalismo das Redes Bayesianas permite ao usuário responder às evidências em uma escala gradativa, com valores entre 0 e 1 (incerteza), além de determinar regras ou padrões para tratar de uma evidência não informada, ou seja quando há uma indeterminação. 34 Outra vantagem deste formalismo é permitir uma forma mais natural de representação dos diferentes pesos relativos à influência de uma variável sobre outra, além de tratar a incerteza e a indeterminação através de princípios matemáticos fundamentados e modelar o conhecimento do especialista de um modo claro e intuitivo. Com base nas características citadas acima e devido ao bom desempenho apresentado em outros tutores estudados como, por exemplo, o SECoach (CONATI et al, 1997) e ACT Programming Tutor (CORBETT; BHATNAGAR, 1997), as Redes Bayesianas foram escolhidas para representar o conhecimento no STI proposto. 3.4. Definição das Rotinas para Entendimento Aproximado da Língua Natural Os STIs têm auxiliado estudantes em diversos domínios, tais como geometria, química e programação. Esses domínios são ideais, porque podem ser facilmente representados e porque o tipo de interação entre o estudante e o STI pode ser limitado à entrada de números, símbolos, ou simples palavras-chave. Objetivando auxiliar estudantes de outras áreas e expandir os domínios para aplicação dos STIs, surge a Análise Semântica Latente com sua abordagem baseada em corpus, que permite a compreensão de uma entrada textual que não é sensível a erros de ortografia ou gramática (WIEMER-HASTINGS et al, 1999). No passado, os STIs mostraram grande eficiência em determinados tipos de domínios. O LISP TUTOR auxiliou muitos estudantes as escrever programas de uma maneira correta (CORBETT; ANDERSON, 1992). Os tutores da álgebra e da geometria foram a base para o currículo de matemática no Ensino Médio por dois anos (ANDERSON et al,1995). Estudantes de cursos de 35 graduação aprenderam física em um STI (VANLEHN et al, 1998). A eficiência desses STIs é indiscutível, porém o tipo de interação que suportavam estava limitado a pressionar teclas ou incorporar alguns números ou símbolos. Mesmo os sistemas que aceitavam entradas do tipo texto livre dos estudantes estavam limitados a entradas de uma única palavra (FREEDMAN et al, 1998). Esse tipo de interação suportado pelos STIs conduz a uma limitação no escopo de utilização, ou à profundidade atingida dentro do domínio. Sem os avanços significativos obtidos na aplicação de técnicas da compreensão de língua natural, o uso de um STI dentro de um domínio como história ou filosofia seria muito difícil (WIEMERHASTINGS et al, 1999). Dentro deste contexto, surge uma nova geração de tutores, tal como, o AutoTutor (GRAESSER et al, 1999), cujo projeto demonstra maneiras de suportar uma interação de diálogo entre tutor e estudante em diversos tipos de domínios. O elemento chave consiste na avaliação das respostas do estudante usando a Análise Semântica Latente sobre uma sentença da língua natural. Conforme ilustrado na Figura 4, o módulo de entendimento aproximado da língua natural tenta efetuar as seguintes operações a partir da explicação gerada pelo aluno: • Análise Léxica - agrupa os caracteres em palavras (tokens) e, em seguida, submete os tokens a um algoritmo de extração de radicais (PORTER, 1980). • Análise Sintática - recebe como entrada a seqüência de tokens provenientes da análise léxica e gera uma árvore de derivação, se estiver de acordo com a gramática. 36 • Análise Semântica Latente - a idéia chave de um analisador semântico consiste no conceito de que o significado de uma sentença pode ser obtido a partir do significado de cada uma de suas partes. Análise Léxica Análise Sintática Análise Semântica Latente Figura 4: Proposta para as rotinas para entendimento aproximado da língua natural - adaptado de Jurafsky e Martin (2000) e Wiemer-Hastings e outros (1999) O módulo de entendimento aproximado da língua natural proposto tenta minimizar o problema da precisão na determinação do conteúdo semântico das explicações permitindo ao professor: • Visualizar as explicações geradas pelos alunos e compará-las com os resultados fornecidos pelo STI; • Acrescentar lexemas não conhecidos ao léxico (RUSSEL; NORVIG, 1995). 3.5. Implementação Na pesquisa realizada sobre ferramentas necessárias à implementação do STI, foram priorizados os aspectos de desempenho, portabilidade e distribuição gratuita. Desta forma, optou-se pela linguagem de programação Java disponibilizada pela Sun, além do conector para banco de dados MySQL 37 Connector/J. Seguindo os mesmos critérios adotados acima, o sistema gerenciador de banco de dados selecionado foi o MySQL. Tal ferramental foi usado na implementação dos componentes do STI apresentado a seguir. 3.5.1. Modelo do Domínio Por definição, o modelo do domínio deve representar o conhecimento de um especialista na área em que o sistema irá atuar. É composto por conhecimentos declarativos e procedimentais. Para a representação dos conhecimentos declarativos do modelo do domínio foram implementadas as seguintes relações: • Mapeador - contém os diversos comandos da linguagem “C”, com as respectivas estruturas e lexemas da língua portuguesa associados que são esperados durante a explicação do aluno. • Tópico - contém os tópicos da linguagem de programação que são cobertos pelo STI. • Exemplo - contém o número e a descrição do problema proposto e o código-fonte em linguagem “C” necessário para resolvê-lo. • Explicação - contém as áreas do código-fonte (selecionadas pelo professor) que o aluno será solicitado a explicar, além do tópico que está relacionado à explicação. • Peso-Explicação - cada explicação cadastrada possibilita a separação dos diversos comandos da linguagem que compõem a explicação, sendo que, para cada comando, é possível determinar um grau de relevância dentro da explicação. Por padrão, a interface do professor 38 identifica todos os elementos da explicação como essenciais, porém, o professor pode realizar a sua própria configuração. 3.5.2. Modelo do Estudante O modelo do estudante possui a responsabilidade de representar o grau de conhecimento do mesmo, seus acertos, erros e dificuldades. O modelo do estudante é capaz de definir o nível de conhecimento do aluno a qualquer momento dentro do sistema. Encontra-se implementado através das seguintes relações: • Aluno - armazena o código, nome e senha para acesso ao STI por parte do estudante. • Progresso - representa o nível de conhecimento do aluno, armazenando suas explicações, acertos, tempos para resolução dos problemas apresentados, além da avaliação gerada pelo STI após cada explicação. 3.5.3. Interface Aluno-Engenho A interface aluno-engenho possui como objetivos principais apresentar os exemplos ao aluno. Em seguida, solicita ao aluno uma explicação. Após receber a explicação gerada pelo aluno, a interface aluno-engenho envia a mesma para o engenho de inferência. 3.5.4. Engenho de Inferência O engenho de inferência é responsável por realizar o reconhecimento aproximado da língua natural e classificar a explicação recebida. Ao receber a 39 explicação gerada pelo aluno, é realizada inicialmente a separação das palavras. Em seguida, cada palavra é submetida à versão para língua portuguesa do Algoritmo de Porter para extração de radicais - Porter Stemming Algorithm (PORTER, 1980). Esta versão para língua portuguesa foi desenvolvida pelo próprio Porter e encontra-se disponível no site do autor (PORTER, 1980). A próxima etapa consiste em realizar Análise Semântica Latente (WIEMER-HASTINGS et al, 1999), através da etiquetagem dos radicais. Para isso, utiliza-se um corpus com 82.933 palavras etiquetadas da língua portuguesa (AIRES, 2000). Em seguida, em relação ao trecho de código que deve ser explicado, procura-se mapear os radicais para comandos da linguagem “C”, cujos componentes constituem os nós de entrada de uma Rede Bayesiana. Após realizar o mapeamento, a Rede Bayesiana é alimentada com informações sobre os nós observados e não observados para, de acordo com os pesos atribuídos pelo professor, realizar a classificação da explicação dentro de três valores possíveis: correta, incompleta ou incorreta. 3.5.5. Interface do Professor A interface do professor possibilita ao professor realizar o cadastro dos alunos, visualizar as explicações geradas e também cadastrar os exemplos e as respectivas soluções, bem como permite a criação das atividades que serão apresentadas ao aluno e motivarão o mesmo a gerar explicações. Dentro do cadastro das atividades, os componentes dos comandos da linguagem “C” que compõem a atividade recebem sempre um peso padrão, ou seja, todos os comandos receberão um mesmo peso. Porém, é possível ao professor definir diferentes pesos para os diversos componentes. Por exemplo, 40 em um trecho de programa selecionado que contém um comando “while” e um comando “if”, é possível atribuir um peso maior ao comando “while”. Quando o aluno tiver explicado esta atividade, este fato fará o STI considerar de modo mais relevante o trecho da explicação relacionado ao comando “while”, o que pode resultar em uma avaliação correta mesmo na ausência de texto explicativo para o comando “if”. 3.6. Funcionamento do STI Proposto O STI proposto é composto pelo subsistema do professor e pelo subsistema do aluno. O subsistema do professor permite cadastrar os exemplos e identificar o trecho do código-fonte que deverá ser explicado pelo aluno. Inicialmente, o professor deve inserir o enunciado do problema proposto juntamente com o programa que o resolve. No programa cadastrado, é possível identificar as linhas que deverão ser explicadas e associá-las a um determinado tópico do STI. No subsistema do professor também é possível visualizar as explicações dadas pelos alunos, a classificação que o STI atribuiu às mesmas, além de permitir ao professor acrescentar novos lexemas ao mapeador de comandos da linguagem “C”. A execução do subsistema de aluno inicia-se apresentando um exemplo de programa em Linguagem “C”. A próxima etapa consiste em instruir o aluno a explicar o propósito de trechos de comandos utilizados na resolução do problema proposto. O aluno, por exemplo, poderá explicar o funcionamento de qualquer função ou variável seguindo qualquer ordem dentro do trecho apresentado, não 41 necessariamente da esquerda para a direita. O aluno deverá trabalhar no trecho apresentado até que o mesmo esteja adequadamente explicado. Portanto, o subsistema do aluno executa as seguintes tarefas: apresentar o tópico que será ensinado, exibir o código fonte de um exemplo, solicitar ao aluno que explique um determinado trecho do exemplo, permitindo ao aluno criar auto-explicações. Em seguida, ocorre a avaliação da explicação, sendo determinada a mensagem que deverá ser apresentada ao aluno. Mapeador Acessar Explicação Corpus Resolver Gerar Possuir Aluno Peso-Explicação Etiqueta Exemplo Possuir Possuir Progresso Figura 5: Diagrama entidade-relacionamento dos modelos do STI Com o intuito de ilustrar o funcionamento dos Subsistemas do Aluno e do Professor que são abordados a seguir, a Figura 5 mostra o diagrama entidaderelacionamento das relações existentes nos modelos do STI. No Apêndice A é detalhado a estrutura das relações com explicações sobre os conteúdos dos campos. 3.6.1. Subsistema do Professor A janela inicial do subsistema do professor apresenta os exemplos cadastrados e também um menu com os recursos disponíveis (Figura 6). 42 Ao acessar esta janela, o professor pode escolher um exemplo já cadastrado ou pressionar o botão Incluir exemplo, para que a janela de Cadastro do Exemplo seja exibida (Figura 7). Na janela cadastro do exemplo, o professor formula um problema e, em seguida, cadastra o código-fonte em “C” necessário para a resolução do problema. Figura 6: Janela inicial do subsistema do professor. Figura 7: Cadastro do Exemplo Na próxima etapa, o professor cadastra as atividades, para as quais serão solicitadas as explicações, que deverão ser geradas para o respectivo exemplo. Para isso, basta apenas selecionar o trecho do código fonte que deverá ser explicado e, em seguida, pressionar o botão Incluir. A janela de cadastro da 43 atividade é exibida (Figura 8) e o professor deve cadastrar um texto de ajuda para a explicação e associar a atividade a um determinado tópico da Linguagem “C”. Figura 8: Cadastro da Atividade Após o cadastro da atividade, ainda é possível ajustar a importância relativa de cada parte do trecho de código-fonte selecionado, atribuindo pesos diferenciados através dos botões Essencial, Necessária e Desejada existentes na Janela de Cadastro do Exemplo. O padrão consiste em aplicar o peso “Essencial” (texto formatado em vermelho) para todos os componentes do trecho do códigofonte. Neste exemplo, pode-se observar que o trecho do programa “maior = v[i];” está indicado como “Necessário”, ou seja, o professor definiu um peso menor para esta linha, em relação ao restante do trecho do código-fonte. Para realizar esta definição, o professor selecionou o trecho do programa “maior = v[i];” e, em seguida, pressionou o botão “Necessário”. O STI não permite, para fins de atribuição de pesos, que o professor utilize trechos que não se encontram dentro do código-fonte selecionado. A seguir, detalha-se como essa etapa é conduzida internamente pelo subsistema, bem como as bases de dados envolvidas. Na primeira etapa, que consiste no cadastro do exemplo, é utilizada apenas a relação Exemplo. Após o cadastro do exemplo, o professor seleciona os trechos do código-fonte que deverão ser explicados. Em seguida, realiza-se a verificação e a separação dos componentes do código-fonte que foi selecionado e a janela de cadastro das atividades é exibida (Figura 8). 44 Para realizar a separação dos componentes do código-fonte selecionado são utilizadas, como referência, as informações contidas na relação Mapeador. Esta relação apresenta como finalidade armazenar a sintaxe das instruções da Linguagem “C” suportadas pelo tutor. Com o objetivo de ilustrar a utilização da relação Mapeador, a seguir, é analisado como o comando “if-else” da linguagem “C” é armazenado nesta relação (Tabela 1). Tipo Comando id# If id# else Sintaxe Terminador NúmeroComponente Deslocamento Lexema <e>caso; verificar; ) 2 0 testar; se; quando;</e> <e>senão; caso; contrário; id# N 1 0 outra; forma; outra; maneira;</e> Tabela 1: Armazenamento da estrutura “if-else” na relação Mapeador id# (expr#) O comando “if-else” é armazenado em duas linhas da respectiva relação, sendo que a primeira coluna armazena o tipo do componente e pode ser id# para representar palavras reservadas linguagem, opla# para operadores lógico ou aritmético, opat# para operadores de atribuição, expr# para expressões, atrib# expressões de atribuição e var# para identificar variáveis da linguagem. A coluna comando contém o radical que corresponde ao comando, enquanto a coluna sintaxe o formato esperado. Na coluna terminador, é encontrado o caracter que finaliza a linha de comando, neste caso o valor N, presente para a linha que representa o “else”, indica que não há caracter terminador. A coluna número de componentes indica a quantidade de componentes que formam o comando. Por exemplo, a linha do comando “if” 45 indica a existência de dois componentes, que são a palavra reservada “if”, seguida de uma expressão delimitada por parêntesis. A coluna deslocamento informa, incluindo o comando, onde começam os componentes do comando. Por exemplo, considerando a linha do comando “if” este campo assume o valor zero, pois, não existem componentes do comando à esquerda da palavra reservada “if”. Por outro lado, considerando uma instrução “j++”, este campo assumiria o valor “–1”, pois antes do operador “++” existe um componente do operador, neste caso, a variável “j”. Finalizando, a coluna lexema indica quais palavras, da Língua Portuguesa, são esperadas durante o processo de entendimento aproximado da língua natural. Quanto utilizada, a etiqueta <e> indica que são lexemas essenciais, ou seja, pelo menos um deles é esperado para poder mapear o lexema. Por outro lado, a etiqueta <o> indica um lexema opcional que pode ou não estar presente na explicação e que não influenciará no processo de mapeamento. Considerando o exemplo apresentado na Tabela 1, para identificar a palavra reservada “if”, deverá ser obrigatoriamente encontrado dentro da explicação do aluno um dos seguintes lexemas: “caso”, “verificar”, “testar”, “se” ou “quando”. Voltando à Figura 7, uma vez separados todos os componentes, são armazenadas as suas posições de início e término dentro do código-fonte para fins de formatação do texto a ser exibido pela interface aluno-engenho. As posições de início e término são determinadas, em termos de caracter, a partir do início do programa cadastrado. Neste momento, também é atribuído, por padrão, o peso “Essencial” a todos os componentes, de modo que todos, em um primeiro momento, apresentam o peso “Essencial”. 46 Ao preencher os campos do cadastro de atividades e escolher a opção gravar, as informações relativas à atividade serão armazenadas nas relações Explicação e Peso-Explicação. A Tabela 2 mostra como é realizada a separação e a inclusão dos pesos da explicação apresentada no exemplo anterior (Figura 6). É importante observar também a alteração da importância do componente “maior = v[i]” de “Essencial” (Importância = 4) para “Necessária” (Importância = 2) e o respectivo ajuste dos pesos. Sendo que os pesos são atribuídos através da média ponderada dos pesos em relação ao contexto geral da atividade que está sendo cadastrada. Por exemplo, considerando a Tabela 2, tem-se que a soma das importâncias dos componentes é 10 (4 + 4 + 2), desta forma, considerando a primeira linha da Tabela 6, que representa o componente “if”, determina-se que o peso é 0,4 (4 / 10). NúmeroExemplo 6 6 6 NúmeroSeleção- SeleçãoComponente Importância Explicação Início Término 1 94 95 if 4 1 98 109 v[i] > maior 4 1 121 132 maior = v[i] 2 Tabela 2: Inclusão na relação Peso-Explicação Peso 0,4 0,4 0,2 As atividades definidas pelo professor neste subsistema irão compor a seqüência de exercícios que o aluno irá tentar resolver. Esta seqüência será mostrada ao aluno seguindo uma ordenação através do número do tópico associado à atividade depois, dentro do tópico, a ordem de cadastro do exemplo e finalizando, dentro do exemplo, a ordem de cadastro da explicação. No subsistema do professor, além das etapas descritas anteriormente, também é possível realizar o cadastro dos tópicos da linguagem que serão abordados e os alunos que utilizarão o tutor. Outra opção disponível consiste na 47 visualização das explicações geradas pelos alunos e a respectiva avaliação gerada pelo STI. 3.6.2. Subsistema do Aluno O subsistema do aluno, que é composto pela interface aluno-engenho e pelo engenho de inferência, inicia-se realizando a identificação do aluno que irá utilizar o STI. Após a sua identificação (Figura 9), procura-se na relação progresso o seu estágio atual de evolução dentro do STI. Para isso determina-se, a partir da seqüência definida pelo professor, quais as atividades que já foram executadas com sucesso e quais estão pendentes. A barra de progresso, mostrada na porção inferior do subsistema do aluno (Figura 10), mostra o estágio atual do aluno em comparação com as atividades propostas. Uma vez definido o estágio atual do aluno, carrega-se o exemplo adequando, salientando os trechos do código-fonte que deverão ser explicados. Figura 9: Conexão com a aplicação do aluno Considerando o exemplo cadastrado anteriormente, o STI apresenta ao aluno a janela mostrada na Figura 10 e aguarda uma explicação relacionada à utilização do comando “if”: 48 Figura 10: Janela principal da aplicação do aluno O aluno formula a explicação e pressiona o botão Avaliar. O STI recebe a explicação e, através do componente de entendimento aproximado da língua natural existente no engenho de inferência, tenta mapear a explicação gerada pelo aluno em comandos da Linguagem “C”. Ilustrando o funcionamento do subsistema do aluno, é considerada a seguinte explicação do aluno para a atividade proposta na Figura 10: “verificar se v índice i é maior que a variável maior então atribuir v índice i à variável maior”. Lexema verificar se v índice i e maior Radical {verific} {se} {v} {índic} {i} {é} {maior} Lexema Radical Lexema que {que} índice a {a} i variável {variável} a maior {maior} variável então {entã} maior atribuir {atribu} v {v} Tabela 3: Extração dos radicais Radical {índic} {i} {à} {variável} {maior} 49 O componente de entendimento aproximado da língua natural inicialmente recebe a explicação e a separa em palavras. O próximo passo consiste em efetuar a associação dos radicais a partir das palavras conforme mostrado na Tabela 3. Após a extração dos radicais, os mesmos são submetidos a um processo de pré-etiquetagem, que consiste basicamente em identificar, entre os radicais dos lexemas, os nomes das variáveis utilizadas no bloco de código-fonte que foi explicado. É importante observar no quadro abaixo que as variáveis do programa recebem uma etiqueta (VAR) e recebem na propriedade “observado” do nó o valor verdadeiro (v), ou seja, foram identificados dentro da explicação. Por exemplo, considerando a variável “i” (Tabela 4), a mesma irá receber uma etiqueta com a identificação de “VAR” e é identificada como “observada” (mapeada) dentro da explicação dada pelo aluno. Lexema verificar se v índice i é maior que a variável Etiqueta Lexema Etiqueta {verific} maior {maior: VAR, v} {se} então {entã} {v: VAR, v} atribuir {atribu} {índic} v {v: VAR, v} {i: VAR, v} índice {índic} {é} i {i: VAR, v} {maior: VAR, v} a {à} {que} variável {variável} {a} maior {maior: VAR, v} {variável} Tabela 4: Pré-etiquetagem dos radicais Concluída a pré-etiquetagem, os lexemas que não foram mapeados como nome de variável são, então, enviados para o processo de etiquetagem propriamente dito, o qual está baseado em um Corpus com lexemas da língua portuguesa (AIRES, 2000). O componente de entendimento aproximado da língua natural procura por lexemas com radicais similares para realizar a etiquetagem dos lexemas remanescentes. Por exemplo, considerando o lexema “verificar”, que possui o 50 radical “verific”, a consulta ao Corpus irá retornar as seguintes possibilidades de etiquetas para o lexema: Lexema Etiqueta Ocorrências verificar VTD 5 verifica VTD 1 verificados VTD 1 Tabela 5: Resultado da pesquisa na relação Corpus Neste caso, quando identificada alguma ambigüidade será escolhida a etiqueta do lexema que apresentar maior número de ocorrências dentro do corpus. Após a etiquetagem de todos os lexemas existentes na explicação, o componente de entendimento aproximado da língua natural retira os lexemas irrelevantes para a determinação do conteúdo da explicação, como por exemplo, artigos e adjuntos adverbiais. As regras utilizadas para desconsiderar os lexemas irrelevantes estão definidas dentro da relação Etiqueta. Por exemplo, considerando o lexema verificar, é possível observar que o mesmo recebeu a etiqueta “VTD” (Tabela 5). Realizando a procura desse lexema na relação Etiqueta no banco de dados, obtém-se um resultado indicando que se trata de um verbo transitivo direto, o que significa que o mesmo não pode ser ignorado na etapa seguinte (mapeamento). Lexema verificar se v índice I é maior que a variável Etiqueta Lexema Etiqueta {verific: VTD, v} maior {maior: VAR, v} {se: PPOA, f} então {entã: ADV, d} {v: VAR, v} atribuir {atribu: VBI+PPOA, v} {índic: N, f} v {v: VAR, v} {i: VAR, v} índice {índic: N, f} {é: VLIG, f} I {i: VAR, v} {maior: VAR, v} à {à: PREP+ART, f} {que: PR, f} variável {variável: ?, f} {a: PREP, d} maior {maior: VAR, v} {variável: ?, f} Tabela 6: Mapeamento dos lexemas da explicação 51 A última etapa de funcionamento do componente de entendimento tenta mapear os lexemas em comandos da Linguagem “C”. Este processo consiste, com base na relação Mapeador, em encontrar as instruções associadas aos lexemas utilizados na explicação. O resultado obtido ao final desta etapa é apresentado na Tabela 6. Onde, um valor verdadeiro (v) na etiqueta indica que o lexema foi mapeado para um comando da linguagem “C”. Falso (f) demonstra que não foi possível mapear o lexema. E desprezado (d) significa que o lexema não foi considerado relevante para identificação do significado da explicação. Por exemplo, a partir do lexema verificar é possível determinar, a partir da Tabela 1, que o mesmo permite mapear um comando “if”, pois o mesmo possui os seguintes lexemas determinados como essenciais: “caso”, “verificar”, “testar”, “se” e “quando”. Neste momento, o nó relativo ao comando “if” (Figura 11) é determinado como “observado”. Desta forma, o subsistema do aluno determina a proximidade entre o trecho de código-fonte esperado e o mapeado, alimentando os nós da Rede Bayesiana (Figura 11) com os componentes esperados pela explicação, os respectivos pesos e se o nó conseguiu ser mapeado pelo componente de entendimento aproximado da língua natural. O resultado, produzido pela Rede Bayesiana indica o grau de proximidade da explicação gerada pelo aluno em relação ao esperado pelo professor. 52 Peso: 0,4 Observado: sim if Peso: 0,4 Observado: sim v[i] > maior Peso: 0,2 Observado: sim maior = v[i] avaliação Figura 11: Nós da Rede Bayesiana A partir do resultado gerado pela Rede Bayesiana, o STI classifica a explicação do aluno em correta, incompleta ou incorreta, determinando se o aluno irá prosseguir para uma nova atividade ou se deverá repetir ou completar a explicação gerada originalmente. A classificação da explicação do aluno é determinada pelas seguintes faixas: • Correta - soma dos pesos dos componentes da explicação determinadas pelo professor em relação ao “ideal”, sendo determinada da seguinte forma: Ideal = número de componentes * importância “essencial” No exemplo: Ideal = 3 * 4 = 12 Tolerância máxima = soma das importâncias definidas pelo professor. No exemplo: Tolerância máxima = 4 + 4 + 2 = 10 Correta = Tolerância máxima / Ideal Considerando o exemplo: Correta = 10 / 12 * 100 = 83,33% • Incorreta - apresenta valores entre zero e o mínimo aceitável, sendo determinado da seguinte maneira: Tolerância mínima = soma das importâncias atribuídas pelo professor diferentes de “essencial”. No exemplo: Tolerância mínima = 2 53 Incorreta = Tolerância mínima / Ideal. Considerando o exemplo: Incorreta = 2 / 12 * 100 = 16,66% • Incompleta - deve estar entre a porcentagem identificada no item Correta e também ser maior que o mínimo aceitável. Sendo, para este exemplo, definida uma faixa entre 16,66 % e 83,33%. Em resumo, considerando os pesos cadastrados para a atividade mostrada na Tabela 2, é possível definir as seguintes faixas de valores para a classificação da explicação: Classificação Faixa Correta >= 83,33% Incompleta > 16,66 % e < 83,33% Incorreta <= 16,66% Tabela 7: Exemplo das faixas para classificação de uma explicação Uma vez realizada a classificação da explicação gerada pelo aluno, toda a informação pertinente é inserida na relação progresso (Tabela 8). Um procedimento de consulta às informações contidas nesta relação permite determinar instantaneamente o desempenho do aluno perante as atividades propostas, além de permitir ao professor analisar as avaliações geradas pelo STI. A partir de uma análise mais aprofundada da Tabela 8 é importante, neste momento, detalhar o conteúdo armazenado no campo Avaliação que consiste, na verdade, na síntese de todos os passos realizados pelo STI para gerar a classificação da explicação recebida, conceitos estes que serão de grande importância para o entendimento dos capítulos subseqüentes. Dentro deste campo, inicialmente, deve ser observado o resultado da etapa de entendimento aproximado da língua natural. Esta etapa consiste em identificar cada lexema constituinte da explicação, seguido do seu radical, etiqueta e se o mesmo foi mapeado, ou não, ou ainda, se foi desconsiderado. Por exemplo, considerando o lexema “verificar”, tem-se “{verific: VTD, v}”. O próximo parâmetro, armazenado 54 neste campo, consiste no índice de lexemas reconhecidos que corresponde à porcentagem dos lexemas que compõem a explicação e que foram mapeados. No exemplo mostrado na Tabela 8, tem-se que dos 19 lexemas que compõem a explicação 9 foram mapeados e 2 foram desprezados, desta forma, o índice é calculado como (9 + 2) / 19, ou seja, 0,5789. Campo Código-Aluno Número-Tópico Número-Exemplo NúmeroExplicação Tentativa Bloco-Código Explicação Avaliação (do STI) Situação (Classificação) Data-Início Data-Término Valor 011 15 6 1 2 if (v[i] > maior) maior = v[i]; verificar se v índice i é maior que a variável maior então atribuir v índice i à variável maior Entendimento aproximado da língua natural: verificar {verific: VTD, v} se {se: PPOA, f} v {v: VAR, v} índice {índic: N, f} i {i: VAR, v} é {é: VLIG, f} maior {maior: VAR, v} que {que: PR, f} a {a: PREP, d} variável {variável: ?, f} maior {maior: VAR, v} então {entã: ADV, d} atribuir {atribu: VBI+PPOA, v} v {v: VAR, v} índice {índic: N, f} i {i: VAR, v} à {à: PREP+ART, f} variável {variável: ?, f} maior {maior: VAR, v} Índice de lexemas reconhecidos: 0.5789473684210527 Mapeamento:(if v), (v v), (i v), (> v), (maior v), (maior v), (= v), (v v), (i v), Classificador:if 0.4 true v[i] > maior 0.4 true maior = v[i] 0.2 true Avaliação: 1.0 Faixas: 0.1666 - 0.8333 Classificação: C – Correta AutoExplC: Ótimo é isso mesmo. C 1/9/2005 20:10:34 1/9/2005 20:10:34 Tabela 8: Exemplo de um registro da relação Progresso O parâmetro mapeamento mostra os componentes que integram o trecho do código fonte da explicação e se foram, ou não mapeados. Por exemplo, “(if v)” indica que a palavra reservada “if” foi mapeada. O parâmetro classificador é responsável por representar os nós da Rede Bayesiana, com seus respectivos nome, peso e observação. Por exemplo, “if 0.4 true” indica o nó relacionado à palavra reservada “if” (Figura 11), com o peso de 0,4 e, também, que o mesmo foi observado a partir do mapeamento da explicação (true). 55 O parâmetro avaliação contém o resultado gerado pela Rede Bayesiana, este parâmetro posteriormente é comparado com o parâmetro faixas que contém os valores base para classificação da explicação como correta, incompleta ou errada. Por exemplo, o parâmetro faixas com os valores 0,1666 – 0,8333, indica que a saída produzida pela Rede Bayesiana será considerada errada se apresentar um valor menor ou igual a 0,1666, será considerada incompleta se apresentar valor maior que 0,1666 e menor que 0,8333 e, por fim, será considerada correta se apresentar um valor maior ou igual a 0,8333 (Tabela 7). O resultado obtido é encontrado no parâmetro classificação. Tomando como base a classificação da explicação, o STI apresenta ao aluno um retorno quanto ao seu progresso (parâmetro AutoExplC), indicando o que o aluno deverá fazer em seguida, que pode ser a mesma atividade, no caso de explicações erradas ou incompletas, ou uma outra atividade, para o caso de explicações consideradas corretas pelo STI. 4. RESULTADOS 57 O STI proposto foi avaliado a partir da especificação de 25 atividades (Apêndice B) e da submissão do mesmo a um conjunto de 125 explicações (Apêndice C). Essas explicações encontram-se divididas em três níveis, sendo que a intenção primária desta avaliação consiste em tentar verificar quatro pontos determinantes para o funcionamento do STI: • Velocidade do módulo de entendimento aproximado da língua natural. Pois, considerando o fator interação aluno-tutor, um dos fatores primordiais no STI consiste no rápido retorno ao aluno da avaliação sobre a explicação recebida; • Detecção de explicações erradas, sem relação com o domínio (Nível 1): O tutor deve diagnosticar como errada uma explicação que não apresente relação alguma com o domínio. Desta forma, definiu-se que este nível é composto por 25 explicações que contém lexemas que foram sorteados ao acaso (aleatoriamente) dentro do Corpus. As explicações, na quase totalidade, não apresentam sentido algum. • Detecção das explicações erradas, relacionadas com o domínio (Nível 2): O tutor não deve aceitar uma série de lexemas relevantes ao domínio, porém sintaticamente sem sentido algum, ou seja explicações construídas ao acaso utilizando apenas lexemas referentes ao domínio. Este nível também é composto por 25 explicações. Foi realizado o mesmo procedimento com relação ao Nível 1, porém, há uma diferença fundamental: apenas lexemas que são suportados pelo mapeador de comandos “C” do STI foram utilizados no processo de geração. • Detecção de explicações geradas por um ser humano (Nível 3): O tutor deveria se comportar, adequadamente, a partir de situações 58 “reais”, considerando explicações que apresentam um conteúdo relevante ao contexto em estudo e frases sintaticamente corretas e que englobam erros, acertos e incompletudes. São 75 explicações sintaticamente corretas, construídas por um ser humano, especialista no domínio de atuação do STI. Todas as frases apresentam algum sentido dentro do contexto de aplicação do tutor e, dentre as mesmas, encontram-se explicações corretas, incompletas e erradas igualmente distribuídas. As atividades propostas apresentam vários graus de complexidade, abrangendo desde a solicitação de explicação para um simples comando, passando pela explicação de uma linha e, finalizando com a explicação de trechos do programa, ou seja, várias linhas do código fonte. A intenção, neste caso, consiste em tentar determinar a precisão do STI a partir de vários graus de complexidade das atividades propostas e, por conseqüência, a complexidade da explicação. Após a submissão ao STI do conjunto de explicações de acordo com as atividades propostas (Apêndice B) comparou-se, inicialmente, o tempo de execução do módulo de entendimento aproximado da língua natural para cada uma das frases. Posteriormente, como o objetivo de avaliar a precisão do STI na avaliação das explicações, determinou-se para cada tipo de classificação gerada a média, mediana, desvio padrão e intervalo de confiança em relação ao esperado, determinado, neste caso, por um especialista humano. 59 4.1. Avaliação Preliminar Conforme mostrada na Tabela 18, uma primeira avaliação demonstrou um funcionamento satisfatório do STI quanto à velocidade de execução do módulo de entendimento aproximado da língua natural com um tempo médio para avaliação da explicação do aluno de 100ms e máximo de 700ms. Estes valores foram obtidos através da média e do valor máximo da diferença de tempo entre os valores dos campos Data-Término e Data-Início existentes na relação Progresso (Tabela 17). Nesta avaliação, a exibição das atividades, por parte de interface do aluno, foi desativada de modo que os tempos armazenados nos campos DataTérmino e Data-Início correspondem, respectivamente, ao início e término da execução do componente de entendimento aproximado da língua natural e do engenho de inferência para cada uma das explicações submetidas. Apesar dos resultados gerais mostrarem um funcionamento adequado do STI na questão da avaliação das explicações recebidas, foi observado uma falha no entendimento de algumas explicações como mostrado na Tabela 9. Nos níveis 1, 2 e 3, respectivamente, foram classificadas 1, 17 e 15 questões como corretas quando, na verdade, esperava-se nenhuma correta. Além de 7, 91 e 14 explicações classificadas como incompletas nos níveis 1, 2 e 3, respectivamente. Esperado Nível 1 2 3 Respostas Obtidas Errada Correta Incompleta Errada Total 625 1 7 617 Média 100,00% 0,16% 1,12% 98,72% Total 625 17 91 517 Média 100,00% 2,72% 14,56% 82,72% Total 625 15 14 596 Média 100,00% 2,40% 2,24% 95,36% Total Geral 1.875 33 112 1.730 Média 92,27% Mediana 95,36% Desvio Padrão 8,44% Invervalo de Confiança 0,0003276 Tabela 9: Avaliação Preliminar – Respostas Erradas 60 Após uma análise detalhada das explicações inadequadamente classificadas, foi constatado que o problema era devido a uma falha no entendimento de explicações muito simples, ou seja, aquelas geradas exclusivamente para explicar um único comando da linguagem. Esse erro ocorria quando a explicação de um único comando era avaliada, gerava-se um peso elevado para a Rede Bayesiana que, conseqüentemente, ocasionava a irrelevância de qualquer outro componente existente na explicação. Por exemplo, considerando a Tabela 10, a presença do lexema “digitar” na explicação, lexema este relacionado ao comando “getchar()” no mapeador, faz com que a explicação seja classificada como correta. BlocoExplicação Código getchar() dividir precisão dados enquanto subtrair ponteiro dividir multiplicar digitar executar curto sem atribuir Avaliação (do STI) Entendimento aproximado da língua natural: dividir {divid: N, f} precisão {precisã: N, f} dados {dad: N, f} enquanto {enquant: CONJSUB, d} subtrair {subtra: ?, f} ponteiro {ponteir: ?, f} dividir {divid: N, f} multiplicar {multiplic: VTD, f} digitar {digit: N, v} executar {execut: VINT, f} curto {curt: ADJ, f} sem {sem: PREP, d} atribuir {atribu: VBI+PPOA, f} Mapeamento: (getchar v), Classificador: getchar 1.0 true Avaliação: 1.0 Faixas: 0.0 - 1.0 Classificação: C - Correta AutoExplC: Está correto! Tabela 10: Problema da classificação de explicações sobre um único comando Com o objetivo de minimizar este problema, foi acrescentado à Rede Bayesiana mais um nó que é responsável por apresentar um peso relativo para os lexemas existentes na explicação mas que não foram mapeados pelo módulo e, desta forma, determinar um peso para o contexto da explicação recebida em relação à atividade proposta. Após sucessivos testes com o arquivo de avaliação, 61 determinou-se que o melhor desempenho do STI ocorre quando esse nó é ajustado para “observado” quando a explicação possui menos que 55% dos lexemas mapeados. 4.2. Avaliação Final Uma vez constatado um funcionamento mais satisfatório do módulo de entendimento aproximado da língua natural com a implementação da resolução para o problema acima descrito, o STI foi submetido a uma nova avaliação, respeitando-se o mesmo conjunto de atividades e explicações submetidas na avaliação preliminar. Analisando o desempenho do STI com relação ao tempo de execução, não foram observadas mudanças, permanecendo os mesmos valores médio e máximo. A Tabela 11 mostra uma síntese do desempenho obtido pelo STI referente às respostas erradas encontradas nos três níveis da avaliação, cuja análise encontra-se no próximo capítulo. Esperado Nível 1 2 3 Respostas Obtidas Errada Correta Incompleta Errada Total 625 4 621 Média 100,00% 0,00% 0,64% 99,36% Total 625 68 557 Média 100,00% 0,00% 10,88% 89,12% Total 625 3 23 599 Média 100,00% 0,48% 3,68% 95,84% Total Geral 1.875 3 95 1.777 Média 94,77% Mediana 95,84% Desvio Padrão 5,20% Invervalo de Confiança 0,0001364 Tabela 11: Avaliação Final – Respostas Erradas É importante observar, na coluna das respostas corretas obtidas, o efeito da modificação realizada no módulo. Houve uma redução significativa do 62 número de ocorrências de classificações indevidas, ou seja, a Tabela 9 (Avaliação Preliminar) apresenta 33 casos contra apenas 3 na Avaliação Final (Tabela 11). Observando as colunas com as explicações indevidamente classificadas como incompletas ocorreu também uma redução, em escala menor, de 112 (Tabela 9) para 95 casos (Tabela 11). 5. DISCUSSÃO 64 O resultados, STI proposto quanto apresentou analisados de um uma desempenho maneira global, satisfatório. Os mostram um funcionamento adequado do módulo de entendimento aproximado da língua natural. Por outro lado, questões relacionadas à identificação do contexto da explicação, dentro da atividade proposta para o STI, podem ser melhorados em trabalhos futuros. A qualidade das atividades cadastradas pelo professor também apresenta um fator determinante para um bom desempenho do STI, assim como ocorre em qualquer outra atividade que envolve a interação entre professor-aluno, por exemplo, elaboração de listas de exercícios e formulação de questões para uma avaliação. Por exemplo, as atividades devem ser elaboradas com o intuito de verificar o entendimento que aluno possui sobre determinado tópico, permitindo também, que ao gerar as explicações solicitadas pelo STI, o aluno amplie e complemente esse entendimento. Para atingir a esse objetivo, o professor deve evitar a formulação de atividades sobre apenas um determinado comando, variável ou função da linguagem “C”, dando preferência a construção de atividades que envolvam uma ou mais linhas do código-fonte. Número Bloco de Código Componente Importância Peso while Essencial 0,444444 10 while (ch != ‘A’) ch != ‘A’ Essencial 0,444444 ch = getchar(); ch = getchar Desejada 0,111111 Tabela 12: Exemplo da influência dos pesos dos nós Outra característica relevante consiste na correta aplicação dos pesos, que devem sem compatíveis ao nível de entendimento que o professor deseja que o aluno atinja. Pois, esses pesos são determinantes no momento de realizar a classificação da explicação gerada pelo aluno. Para ilustrar essa consideração, analisando a atividade 10 (Tabela 12), é possível observar que foi atribuído um 65 peso maior aos componentes da explicação relacionados à linha do comando “while” enquanto a linha que apresenta a função “getchar()” apresenta um peso mínimo. Essa característica da atribuição de pesos determina que o STI considerará muito mais as explicações que se referem apenas ao comando “while”, mesmo na presença das que se referenciem ao funcionamento do “getchar()” e à atribuição recebida pela variável “ch”. Desta forma, a explicação “enquanto ch diferente de A” seria classificada como correta pelo STI enquanto um especialista humano diria que a mesma está incompleta. 5.1. Análise da Avaliação Preliminar A avaliação preliminar foi importante no sentido de tentar determinar o funcionamento como um todo do STI. Porém, com preocupações adicionais relacionadas à velocidade de execução do engenho de inferência e do componente de entendimento aproximado da língua natural, além da precisão da avaliação das explicações por parte do tutor. Os resultados obtidos foram satisfatórios, mostrando apenas uma necessidade de ajuste da Rede Bayesiana para explicações sobre um único comando da linguagem “C”. Este problema está em grande parte relacionado à complexidade da explicação necessária, para pequenos códigos a serem explicados. Por exemplo, o STI nas atividades 11, 14, 15 e 25, apresentadas na Tabela 13, apresentou dificuldade em determinar o contexto da explicação gerada e acabou aceitando como corretas várias explicações erradas. Por outro lado, foi observado que a eficiência do STI aumentou, conforme aumentou o grau de complexidade da explicação esperada, por exemplo, nas atividades 4, 6, 17, e 23 mostradas na Tabela 13. 66 Número Bloco de Código Componente Importância while Essencial 4 while(i<y) i < y Essencial { i++; i ++ Essencial r*=x; } r *= x Necessária if Essencial 6 if (v[i] > maior) v[i] > maior Essencial maior = v[i]; maior = v[i] Necessária 11 getchar() getchar Essencial 14 break break Essencial 15 default default Essencial for Essencial 17 for (int i = 0; i < 3; i++) int i = 0 Desejada { auxiliar[j] = vetor[i]; i<3 Essencial j--; i ++ Essencial } auxiliar[j] = vetor[i] Essencial j -Essencial if Essencial 23 if (v[j] < v[menor]) v[j] < v[menor] Essencial menor = j; menor = j Essencial 25 void void Essencial Tabela 13: Algumas atividades propostas Peso 0,285714 0,285714 0,285714 0,142857 0,4 0,4 0,2 1 1 1 0,190476 0,047619 0,190476 0,190476 0,190476 0,190476 0,333333 0,333333 0,333333 1 Não se pode esquecer do nó que foi adicionado à Rede Bayesiana. O peso atribuído a este nó tenta determinar o grau de similaridade do contexto da explicação dentro da atividade proposta. Este grau de similaridade é determinado identificando-se o percentual de lexemas existentes na explicação que foram mapeados. Considerando o exemplo mostrado na Tabela 10, apenas 3 lexemas (“enquanto”, “digitar” e “sem”) de um total de 13 lexemas (Tabela 14) foram mapeados. Desta forma, determina-se o índice de lexemas reconhecidos em torno de 23%. Lexema Etiqueta Lexema Etiqueta dividir {divid: N, f} multiplicar {multiplic: VTD, f} precisão {precisã: N, f} digitar {digit: N, v} dados {dad: N, f} executar {execut: VINT, f} enquanto {enquant: CONJSUB, d} curto {curt: ADJ, f} subtrair {subtra: ?, f} sem {sem: PREP, d} ponteiro {ponteir: ?, f} atribuir {atribu: VBI+PPOA, f} dividir {divid: N, f} Tabela 14: Etiquetagem dos lexemas que compõem a explicação 67 Como este índice está abaixo de 55%, o respectivo nó é ajustado como observado e a classificação da explicação, neste momento, passa a ser influenciada também por esse nó (Tabela 15). BlocoExplicação Código getchar() dividir precisão dados enquanto subtrair ponteiro dividir multiplicar digitar executar curto sem atribuir Avaliação (do STI) Entendimento aproximado da língua natural: dividir {divid: N, f} precisão {precisã: N, f} dados {dad: N, f} enquanto {enquant: CONJSUB, d} subtrair {subtra: ?, f} ponteiro {ponteir: ?, f} dividir {divid: N, f} multiplicar {multiplic: VTD, f} digitar {digit: N, v} executar {execut: VINT, f} curto {curt: ADJ, f} sem {sem: PREP, d} atribuir {atribu: VBI+PPOA, f} Índice de lexemas reconhecidos: 0.23076923076923073 Mapeamento: (getchar v), Classificador: getchar 1.0 true Avaliação: 0.23076923076923073 Faixas: 0.0 - 1.0 Classificação: I - Incompleta AutoExplC: Você está no caminho certo. Mas, por favor, complete a explicação. Tabela 15: Atuação do nó para identificação do contexto da explicação 5.2. Análise da Avaliação Final A primeira preocupação ao analisar os resultados obtidos foi observar o comportamento do STI com a adoção do nó adicional à Rede Bayesiana, com o objetivo de melhorar o desempenho do mesmo perante as explicações solicitadas apenas sobre um determinado comando da linguagem “C”. Apesar de não conseguir sanar por completo a questão da determinação do contexto, comparando os resultados descritos na Tabela 11 com os resultados anteriores mostrados na Tabela 9, considerando a coluna das classificações corretas obtidas, houve um aumento para a casa de 94,77% da precisão do tutor. Observando os valores relativos à média, ou seja, a porcentagem de 68 classificações satisfatórias do STI frente ao esperado, notou-se uma pequena melhora, aumentando de 92,27% na avaliação preliminar (Tabela 9) para 94,77% na avaliação final (Tabela 11) aproximando-se do valor da mediana 95,84% (Tabela 11), valor este que consiste na medida de localização do centro da distribuição dos valores das médias obtidas nos níveis 1, 2 e 3. Outro parâmetro significativo está relacionado à redução do desvio padrão de 8,44% na avaliação preliminar (Tabela 9) para 5,20% na avaliação final (Tabela 11), valor este que é baseado nos desvios em torno da média aritmética e que leva em consideração a totalidade dos valores em estudo, consistindo em um indicador de variabilidade bastante estável. Concluindo, é relevante também mostrar a redução do intervalo de confiança de 0,0003276 (Tabela 9) para 0,0001364 (Tabela 11), o qual expressa o conceito que existe um determinado nível de confiança em que a média se encontra dentro do intervalo. Outra importante consideração está relacionada à grande diferença na classificação das questões incompletas por parte do STI em relação ao esperado. Neste caso, é necessário observar que um lexema “enquanto”, por exemplo, ao ser encontrado, é mapeado para o comando “while” da Linguagem “C”. Este mapeamento, por sua vez, pode produzir um determinado peso na Rede Bayesiana. Por outro lado, o comando “while” é composto por um segundo componente que representa a condicional. Neste caso, quando se encontra uma explicação que não tem nada a ver com a condição esperada, o STI apenas irá considerá-la como não observada perante aos nós da Rede Bayesiana. Porém, o comando “while” já observado anteriormente irá influenciar uma possível classificação incompleta por parte do STI, independente do que foi observado no 69 restante da explicação. Considerando, por outro lado, o ponto de vista de um especialista humano, este consideraria a explicação errada, pois apesar do estudante ter explicado uma parte dos comandos necessários, esta explicação ocorreu fora do contexto da atividade proposta. 5.2.1 Análise das Respostas Erradas Uma vez constatado o funcionamento global do STI, a análise é concentrada sobre o conjunto de 25 explicações erradas do nível 3, geradas por um especialista humano. Conforme mostrado na Tabela 16, o STI conseguiu classificar corretamente 88% das explicações submetidas. Esperado Respostas Obtidas Errada Correta Incompleta Errada Total Geral 25 1 2 22 Média 100,00% 4,00% 8,00% 88,00% Tabela 16: Avaliação Final – Respostas Erradas do Nível 3 Neste caso é importante observar a existência de uma explicação incorreta, mas que o STI analisou como correta (Tabela 17). O problema, conforme detalhado a seguir, é provocado pela questão da não identificação do contexto da explicação. Este problema ocorre quando a explicação concentra-se sobre um único comando, ou seja, é utilizado apenas um nó da Rede Bayesiana para o componente da explicação o que provoca, uma vez observado esse nó, a classificação como correta. É importante salientar também, que para este caso, o índice de lexemas reconhecidos foi de 66,66%, ou seja, o lexema “teclado” foi mapeado e o lexema “o”, por ser um artigo, foi desconsiderado. Este índice, que está acima dos 55%, faz com que o nó para identificação do contexto não seja 70 considerado como observado, não influenciando, desta forma, na classificação da explicação pelo STI. BlocoExplicação Código getchar() apagar o teclado Avaliação (do STI) Entendimento aproximado da língua natural: apagar {apag: VTD, f} o {o: ART, d} teclado {tecl: N, v} Índice de lexemas reconhecidos: 0.6666666666666667 Mapeamento: (getchar v), Classificador: getchar 1.0 true Avaliação: 1.0 Faixas: 0.0 - 1.0 Classificação: C - Correta AutoExplC: Parabéns! Tabela 17: Explicação que foi classificada de forma equivocada 5.2.2. Avaliação das Respostas Incompletas A Tabela 18 mostra a síntese do comportamento do STI em relação às explicações incompletas e concentrou-se sobre a amostra das 25 explicações (incompletas) presentes no nível 3. Esperado Respostas Obtidas Incompleta Correta Incompleta Errada Total Geral 25 4 13 8 Média 100,00% 16,00% 52,00% 32,00% Tabela 18: Avaliação Final – Respostas Incompletas Nesta análise, na qual o STI obteve uma precisão de 52,00%, serão consideradas as quatro explicações que foram classificadas como corretas (Tabela 19). 71 Item Bloco-Código Explicação Avaliação (do STI) A while (ch != ‘A’) enquanto Entendimento aproximado da língua natural: ch = getchar(); ch diferente enquanto {enquant: CONJSUB, d} ch {ch: VAR, v} diferente de A {diferent: ADJ, v} de {de: PREP, d} A {A: VAR, v} Índice de lexemas reconhecidos: 1.0 Mapeamento: (while v), (ch v), (!= v), (A v), (ch v), (= f), (getchar f), B C getchar() Ler break Sair Classificador: while 0.444444444444444 true ch != ‘A’ 0.444444444444444 true ch = getchar 0.111111111111111 false Avaliação: 0.888888888888889 Faixas: 0.08333333333333333 - 0.75 Classificação: C - Correta AutoExplC: Parabéns! Entendimento aproximado da língua natural: ler {ler: VTD, v} Índice de lexemas reconhecidos: 1.0 Mapeamento: (getchar v), Classificador: getchar 1.0 true Avaliação: 1.0 Faixas: 0.0 - 1.0 Classificação: C - Correta AutoExplC: Parabéns! Entendimento aproximado da língua natural: sair {sair: VTI, v} Índice de lexemas reconhecidos: 1.0 Mapeamento: (break v), D pont_vetor++; Classificador: break 1.0 true Avaliação: 1.0 Faixas: 0.0 - 1.0 Classificação: C - Correta AutoExplC: Ótimo é isso mesmo. incrementa Entendimento aproximado da língua natural: r incrementar {increment: ?, v} pont_vetor {pont_vetor: VAR, pont_vetor v} Índice de lexemas reconhecidos: 1.0 Mapeamento: (pont_vetor v), (++ v), Classificador: pont_vetor ++ 1.0 true Avaliação: 1.0 Faixas: 0.0 - 1.0 Classificação: C - Correta AutoExplC: Correto! Por favor, responda a próxima questão. Tabela 19: Explicações incompletas classificadas como corretas 72 Analisando o primeiro caso: “while (ch != ‘A’) ch = getchar();” (Item A), foi considerado um peso “desejável” para o trecho “ch =getchar()” (Figura 12) o que determina que o STI dará uma maior importância aos componentes do comando de repetição (Figura 13), os quais uma vez observados, farão com que a explicação seja considerada correta, independente da mesma não realizar referências ao trecho restante. Figura 12: Cadastro dos pesos dos componentes da atividade proposta Observando a explicação “enquanto ch diferente de A” existente na Tabela 19, os lexemas “enquanto”, “ch”, “diferente” e “A” foram mapeados, produzindo na saída da Rede Bayesiana um valor superior a 75%, que, para esta atividade, é o valor mínimo para a explicação ser classificada como correta. Desta forma, devido à atribuição dos pesos para os componentes da explicação (Figura 13), torna-se desnecessário explicar a linha de comando “ch = getchar();” para a explicação ser considerada correta. As demais explicações classificadas de forma equivocada referem-se novamente à dificuldade da determinação do contexto para explicações solicitadas sobre um único componente da linguagem, a qual já foi discutida anteriormente. 73 Peso: 0,44444 while Peso: 0,44444 ch != ‘A’ Peso: 0,11111 ch = getchar avaliação Figura 13: Componentes da explicação e respectivos pesos É importante salientar que a grande dificuldade do STI encontra-se na classificação deste tipo de explicação, pois, a correta determinação do contexto da explicação é crucial para uma adequada classificação. Esta atividade, para um especialista humano, é relativamente simples, porém consiste em um grande desafio para o processamento da língua natural, sendo ainda mais agravada pela utilização de abordagens simplificadas, como a análise semântica latente, adotada no STI sob discussão. 5.2.3. Avaliação das Respostas Corretas Com relação à avaliação das respostas corretas, é possível observar na Tabela 20 que o módulo de entendimento aproximado da língua natural conseguiu classificá-las corretamente em 18 das 25 (72%) atividades propostas. Outro ponto relevante consiste no fato que nenhuma das explicações foi considerada errada pelo STI. Esperado Respostas Obtidas Correta Correta Incompleta Errada Total Geral 25 18 7 0 Média 100,00% 72,00% 28,00% 0,00% Tabela 20: Avaliação Final – Análise Corretas A análise a seguir é detalhada sobre as sete explicações que foram classificadas como incompletas (Tabelas 21, 22, e 23). 74 Observando os itens A e F mostrados nas Tabelas 21, 22 e 23, nota-se que o não entendimento ocorreu devido a uma falha na construção do módulo do mapeador de comandos que, nestas atividades, não conseguiu identificar a utilização de vetores. Por outro lado, nos itens C e D (Tabelas 21, 22 e 22), a falha ocorreu devido à existência de ambigüidade no operador para ponteiros “*” em relação ao operador de multiplicação. Neste caso, novamente, o problema ocorreu no mapeador de comandos. Item Bloco-Código Explicação A int v[5] = { 4, 3, 8, 2, 1}; declarar uma variável vetor de inteiros, v e inicializar com os valores 4, 3, 8, 2, 1 Avaliação (do STI) Entendimento aproximado da língua natural: declarar {declar: VINT, v} uma {uma: ART, d} variável {variável: ?, v} vetor {vetor: ?, v} de {de: PREP, d} inteiros {inteir: ADJ, v} v {v: VAR, v} e {e: CONJCOORD, d} inicializar {inicializ: ?, v} com {com: PREP, d} os {os: ART, d} valores {valor: N, d} 4 {4: VAR, v} {: PREP, d} 3 {3: VAR, v} {: PREP, d} 8 {8: VAR, v} {: PREP, d} 2 {2: VAR, v} {: PREP, d} 1 {1: VAR, v} Índice de lexemas reconhecidos: 1.0 Mapeamento: (int v), (v v), (5 f), (= f), (4 v), (3 v), (8 v), (2 v), (1 v), B default executar este bloco padrão Classificador: int 0.5 true v[5] = 4 3 8 2 1 0.5 false Avaliação: 0.5 Faixas: 0.0 - 1.0 Classificação: I - Incompleta AutoExplC: Você está no caminho certo. Mas, por favor, complete a explicação. Entendimento aproximado da língua natural: executar {execut: VINT, f} este {este: PD, f} bloco {bloc: N, f} padrão {padrã: N, v} Índice de lexemas reconhecidos: 0.25 Mapeamento: (default v), Classificador: default 1.0 true Avaliação: 0.25 Faixas: 0.0 - 1.0 Classificação: I - Incompleta AutoExplC: Por favor, complete a explicação Tabela 21: Explicações incorretamente classificadas pelo STI 75 Item Bloco-Código C int *pont_vetor; Explicação declarar a variável ponteiro para inteiros pont_vetor Avaliação (do STI) Entendimento aproximado da língua natural: declarar {declar: VINT, v} a {a: PREP, d} variável {variável: ?, v} ponteiro {ponteir: ?, v} para {par: PREP, d} inteiros {inteir: ADJ, v} pont_vetor {pont_vetor: VAR, v} Índice de lexemas reconhecidos: 1.0 Mapeamento: (int v), (* f), (pont_vetor v), D while (*pont_vetor != 0) enquanto o { pont_vetor++; conteúdo do } ponteiro pont_vetor for diferente de 0 incrementar o endereço do ponteiro Classificador: int 0.5 true * pont_vetor 0.5 false Avaliação: 0.5 Faixas: 0.0 - 1.0 Classificação: I – Incompleta AutoExplC: Você está no caminho certo. Mas, por favor, complete a explicação. Entendimento aproximado da língua natural: enquanto {enquant: CONJSUB, d} o {o: ART, d} conteúdo {conteúd: N, v} do {do: PREP+ART, f} ponteiro {ponteir: ?, v} pont_vetor {pont_vetor: VAR, v} for {for: VLIG, f} diferente {diferent: ADJ, v} de {de: PREP, d} 0 {0: VAR, v} incrementar {increment: ?, v} o {o: ART, d} endereço {enderec: N, f} do {do: PREP+ART, f} ponteiro {ponteir: ?, v} Índice de lexemas reconhecidos: 0.7333333333333334 Mapeamento: (while v), (* f), (pont_vetor v), (!= v), (0 v), (pont_vetor v), (++ v), Classificador: while 0.333333333333333 true * pont_vetor != 0 0.333333333333333 false pont_vetor ++ 0.333333333333333 true Avaliação: 0.6666666666666667 Faixas: 0.0 - 1.0 Classificação: I - Incompleta AutoExplC: Por favor, complete a explicação Tabela 22: Continuação da Tabela 21 76 Item Bloco-Código E pont_vetor++; Explicação incrementar o endereço do ponteiro pont_vetor Avaliação (do STI) Entendimento aproximado da língua natural: incrementar {increment: ?, v} o {o: ART, d} endereço {enderec: N, f} do {do: PREP+ART, f} ponteiro {ponteir: ?, f} pont_vetor {pont_vetor: VAR, v} Índice de lexemas reconhecidos: 0.5 Mapeamento: (pont_vetor v), (++ v), F printf("%f, ", v[i]); Classificador: pont_vetor ++ 1.0 true Avaliação: 0.5 Faixas: 0.0 - 1.0 Classificação: I – Incompleta AutoExplC: Por favor, complete a explicação imprimir o valor Entendimento aproximado da língua natural: do elemento do imprimir {imprim: VTI+PPOA, v} o {o: ART, d} vetor v com valor {valor: N, f} índice i, utilizando do {do: PREP+ART, f} elemento {element: N, f} do uma máscara %f {do: PREP+ART, f} vetor {vetor: ?, f} v {v: VAR, v} com {com: PREP, d} índice {índic: N, f} i {i: VAR, v} {: PREP, d} utilizando {utiliz: VTD, f} uma {uma: ART, d} máscara {másc: N, f} %f {%f: CON, v} Índice de lexemas reconhecidos: 0.5 Mapeamento: (printf v), (%f, v), (v v), (i v), G void declarar uma função que retorna nada Classificador: printf 0.5 true "%f, " v[i] 0.5 true Avaliação: 0.5 Faixas: 0.0 - 1.0 Classificação: I - Incompleta AutoExplC: Por favor, complete a explicação Entendimento aproximado da língua natural: declarar {declar: VINT, f} uma {uma: ART, d} função {funçã: N, f} que {que: PR, f} retorna {retorn: VTI, f} nada {nad: PIND, v} Índice de lexemas reconhecidos: 0.33333333333333337 Mapeamento: (void v), Classificador: void 1.0 true Avaliação: 0.33333333333333337 Faixas: 0.0 - 1.0 Classificação: I - Incompleta AutoExplC: Por favor, complete a explicação Tabela 23: Continuação da Tabela 22 77 Nos itens B, E e G mostrados nas Tabelas 21, 22 e 23, o problema ocorreu devido à inclusão de um nó à Rede Bayesiana para tentar minimizar o problema do STI não conseguir identificar o contexto em atividades que solicitam a explicação de apenas um comando da linguagem. Nestas três atividades, apesar do STI conseguir identificar a existência dos lexemas esperados para a explicação, o peso do nó utilizado para identificar o contexto fez com que, em todos os casos, as explicações fossem classificadas como incompletas. 6. CONCLUSÃO 79 O presente trabalho é dividido em várias etapas. Inicialmente é realizada a revisão bibliográfica sobre auto-explicação de exemplos e STIs. Esta etapa inicial permite uma concepção prévia do modelo do STI que foi proposto. Em um segundo momento, os esforços são concentrados na pesquisa para determinar a forma de representação do conhecimento que foi adotada no STI, a terceira etapa é o estudo e a definição de como realizar o processamento da língua natural. A última etapa consistiu no processo de avaliação do STI e a análise dos resultados obtidos. As pesquisas em STI apresentam uma grande preocupação relacionada com a construção de ambientes que possibilitem um aprendizado mais eficiente. Outro fator relevante consiste na interação entre aluno e tutor que, cada vez mais, procura se aproximar da interação aluno-professor, tornando o STI uma extensão da sala de aula e fazendo com que esta interação ocorra de maneira mais natural possível. Por outro lado, o desenvolvimento de STIs apresenta uma série de dificuldades e desafios, entre os quais pode-se salientar a representação do conhecimento, o entendimento da língua natural e a avaliação, por parte do STI, da explicação gerada pelo aluno. Além da escolha da representação do conhecimento, é importante também observar o grande volume de trabalho que é necessário para mapear o conhecimento de um especialista humano para uma base de conhecimento. Técnicas de processamento da língua natural permitem grandes avanços nesta interação, porém ainda apresentam um alto grau de dificuldade na sua implementação. Dentro deste contexto a abordagem da análise semântica latente (WIEMER-HASTINGS et al, 1999), utilizada no tutor proposto nesta dissertação, 80 apresenta bons resultados em domínios que podem ser representados através de um conjunto restrito de lexemas. A adoção desta técnica facilitou de maneira significativa o processo de implementação do módulo de entendimento aproximado da língua natural e, como analisado anteriormente, apresentou resultados satisfatórios, conforme sintetizado na Tabela 24. Considerando o desempenho global do STI no Nível 3 (Tabela 24), ou seja, analisando o desempenho do STI em relação às explicações criadas por um especialista humano, pode-se observar uma precisão média de 70,67% na avaliação adequada das explicações, estando esse valor próximo à mediana 72%. Por outro lado, os valores elevados no desvio padrão (18,04%) e no intervalo de confiança (0,013576) são influenciados, em grande parte, pela dificuldade apresentada pelo STI na classificação das explicações incompletas, fato este, já discutido anteriormente no item 5.2.2. Amostra Errada Incompleta Correta Média Obtida 88,00% 52,00% 72,00% Média 70,67% Mediana 72,00% Desvio Padrão 18,04% Invervalo de Confiança 0,013576 Tabela 24: Síntese dos resultados obtidos na avaliação final em relação ao Nível 3 Considerando a avaliação, por parte do STI, das explicações geradas, a adoção de técnicas de raciocínio probabilístico mostraram-se acertadas pois conseguem trabalhar com razoável precisão dentro de um ambiente que muitas vezes recebe dados incertos ou imprecisos, pois não é possível deixar de lado o fato do aluno estar em processo de aprendizado e que fatores de incerteza estejam sempre presentes dentro deste contexto. 81 Algumas das limitações observadas no STI podem ser abordadas em trabalhos futuros, dentre os quais é relevante citar: • Um estudo mais aprofundado sobre as faixas ideais para classificação das explicações poderia aumentar sensivelmente a precisão do STI referente à classificação das respostas incompletas. • A implementação de melhorias no módulo mapeador de comandos da linguagem “C”, além de uma possível integração do tutor com um compilador da linguagem “C”, permitiria a melhoria na classificação das explicações por parte do STI e também possibilitaria ampliar o escopo de atuação do STI, permitindo extrapolações e simulações de alterações efetuadas sobre o código-fonte. • Investigação sobre o uso do Raciocínio Baseado em Casos como alternativa para tentar aumentar a precisão do STI na classificação das explicações. • Necessidade do aprimoramento do próprio módulo de entendimento aproximado da língua natural dando uma ênfase maior à questão da análise semântica ao invés da técnica de análise semântica latente utilizada neste STI. 7. REFERÊNCIAS 83 AIRES, R. V. X. Implementação, Adaptação, Combinação e Avaliação de Etiquetadores para o Português do Brasil. 2000. Dissertação (Mestrado) Instituto de Ciências Matemáticas e de Computação de São Carlos, Universidade de São Paulo, São Carlos, 2000. Disponível em: <http://www.nilc.icmc.usp.br/nilc/pessoas/rachelport.htm>. Acesso em: 10 de maio de 2005. ALEVEN, V.; POPESCU, O.; KOEDINGER, K. Towards tutorial dialog to support self-explanation: Adding natural language understanding to a cognitive tutor. In: INTERNATIONAL CONFERENCE ON AI AND EDUCATION, 10., 2001. Anais 10th International Conference on AI and Education. Disponível em: <http://citeseer.nj.nec.com/ 510868.html>. Acesso em: 10 de novembro 2003. ANDERSON, J. R.; CORBETT, A. T.; KOEDINGER, K. R.; PELLETIER, R. Cognitive tutors: Lessons learned. The Journal of the Learning Sciences, n.4, p.167–207, 1995. Disponível em: <http://act-r.psy.cmu.edu/papers/ Lessons_Learned.html>. Acesso em: 3 de maio de 2005. BHATNAGAR, R. K.; KANAL, L. N. Handling Uncertain Information: A Review of Numeric and Non-numeric Methods In: KANAL, L.N.; LEMMER, J.F. Uncertainty in Artificial Intelligence. Amsterdam: Elsevier Science, 1986. BRUSILOVSKY, P.; SCHWARZ, E.; WEBER, G. ELM-ART: An intelligent tutoring system on World Wide Web. In: FRASSON, C.; GAUTHIER, G.; LESGOLD, A. Intelligent Tutoring Systems. Berlin: Springer Verlag, 1996. v.1086, p.261269. CHI, M. T. H.; BASSOK, M.; LEWIS, M. W.; REIMANN, P.; GLASER, R. Selfexplanations: How students study and use examples to solve problems. Cognitive Science, n.13, p.145-182, 1989. Disponível em: <http://www.pitt. edu/~chi/papers/ChiBassokLewisReimannGlaser.pdf>. Acesso em: 30 de setembro de 2003. CHI, M. T. H.; DE LEEUW, N.; CHIU, M.; LA VANCHER, C. Eliciting selfexplanations improves understanting. Cognitive Science, n.18, p.439-477, 1994. Disponível em: <http://www.pitt.edu/~chi/papers/Self-explanations 94.pdf>. Acesso em: 17 de setembro de 2003. CONATI, C.; LARKIN, J.; VANLEHN, K. A computer framework to suport selfexplanation. In: DU BOULAY B.; MIZOGUCHI R. In: ARTIFICIAL INTELLIGENCE IN EDUCATION, 8., 1997, Ohmsha. Anais 8th Artificial Intelligence in Education. Ohmsha: IOS Press, 1997. CONATI, C.; VANLEHN, K. Teaching meta-cognitive skills: implementation and evaluation of a tutoring system to self-explanation while learning from examples. In: LAJOIE, S. P.; VIVET, M. In: Artificial Intelligence in Education. Amsterdam: IOS Press, 1999. p.297-304. 84 CORBETT, A. T.; ANDERSON, J. R. LISP intelligent tutoring system: Research in skill acquisition. In: LARKIN, J. H.; CHABAY, R. W. Computer-assisted instruction and intelligent tutoring systems: Establishing communication and collaboration. Hillsdale, NJ: Erlbaum, 1992. p.73–110. Disponível em: <http://act-r.psy.cmu.edu/publications/pubinfo?id=167>. Acesso em: 10 de maio de 2005. CORBETT, A. T.; BHATNAGAR, A. Student modeling in the ACT Programming Tutor: Adjusting procedural learning model with declarative knowledge. In: JAMESON, A.; PARIS, C.; TASSO, C. User Modeling. New York,1997. FREEDMAN, R.; ALI, S. S.; MCROY, S. What is an intelligent tutoring system? In: Intelligence, v.11, n.3, p.15-16, 2000. Disponível em: <http://www.cs.niu. edu/~freedman/papers/link2000.ps>. Acesso em: 16 de setembro de 2003. FREEDMAN, R.; ZHOU, Y.; GLASS, M.; KIM, J.; EVENS, M. Using rule induction to assist in rule construction for a natural-language based intelligent tutoring system. In: ANNUAL CONFERENCE OF THE COGNITIVE SCIENCE SOCIETY, 20., 1998, Hillsdale, NJ. Anais 20th Annual Conference of the Cognitive Science Society. Hillsdale, NJ: Erlbaum, 1998, p. 362–367. Disponível em: <http://www.cs.iit.edu/~circsim/documents/ rfcog98.pdf>. Acesso em: 8 de maio de 2005. GRAESSER, A. C; WIEMER-HASTINGS, K.; WIEMER-HASTINGS, P.; KREUZ, R.; Tutoring Research Group. AutoTutor: A simulation of a human tutor. In: Journal of Cognitive Systems Research, n.1, p. 35-51, 1999. HALL, P.; WOOD, P. Intelligent Tutoring Systems: A Review for Beginners. In: Canadian Journal of Educational Communication, v.19, n.2, p.107-123, 1990. HECKERMAN, D. A tutorial on learning bayesian networks. Technical Report: MSR-TR-95-06. Redmond: Microsoft Corporation, 1995. JENSEN, V. Bayesian networks and decision graphs. Springer, 2001. JURAFSKY, D.; MARTIN, J. H. Speech and language processing. New Jersey: Prentice-Hall, 2000. KOLODNER, J. Case based reasoning. San Mateo, CA: Morgan Kaufmann Publishers, 1993. KONZEN, A.; FROZZA, R. Uma estratégia de ensino híbrida para sistemas tutores inteligentes. In: SEMINÁRIO DE INICIAÇÃO CIENTÍFICA E JORNADA DE ENSINO, PESQUISA E EXTENSÃO DA UNIVERSIDADE DE SANTA CRUZ DO SUL, 5., 1999, Santa Cruz do Sul. Anais 5o Seminário de Iniciação Científica e Jornada de Ensino, Pesquisa e Extensão da Universidade de Santa Cruz do Sul. Santa Cruz do Sul: Universidade de Santa Cruz do Sul, 1999. 85 LANDAUER, T. K. On the computational basis of learning and cognition: Arguments from LSA. In: ROSS, N., The psychology of learning and motivation, v.1, p.43-84, 2002. LIMA, D. R.; ROSATELLI, M. C. Um sistema tutor inteligente para um ambiente virtual de ensino aprendizagem. In: CONGRESSO DA SOCIEDADE BRASILEIRA DA COMPUTAÇÃO, 23., 2003, Campinas. Anais 23o Congresso da Sociedade Brasileira de Computação. Campinas: UNICAMP, 2003. Disponível em: <http://www.ensinoweb.com.br/docs/ Artigo_STI.pdf>. Acesso em: 11 de maio de 2005. LUSTOSA, V. G.; ALVARENGA, R. O estado da arte em inteligência artificial. Colabor@ - Revista Digital da Comunidade Virtual de Aprendizagem da Rede das Instituições Católicas de Ensino Superior, v. 2, n. 8, 2004. Disponível em: <http://www.ricesu.com.br/colabora/n8/>. Acesso em 12 de fevereiro de 2005. MCARTHUR, D.; LEWIS, M.; BISHAY, M. The roles of artificial intelligence in education: current progress and future prospects. Santa Monica, CA: RAND, 1993. MINSKY, M. A framework for representing knowledge. In: MIT-AI Laboratory Memo, n.306, 1974. MURRAY, R. C.; VANLEHN, K. DT Tutor: A decision-theoretic, dynamic approach for optimal selection of tutorial actions. In: GAUTHIER, G.; FRASSON, C.; VANLEHN, K. Intelligent Tutoring Systems. New York, 2000, p.153-162. PEROTTO, F. S.; VICARI, R. M. Modelagem do conhecimento, sistemas especialistas e o projeto SEAMED. In: Revista Eletrônica de Iniciação Científica, v.1, n.1. Sociedade Brasileira de Computação, 2001. Disponível em: <http://www.sbc.org.br/reic/edicoes/2001e1/>. Acesso em: 15 de abril de 2005. POPESCU, O.; ALEVEN, V.; KOEDINGER, K. A knowledge-based approach to understanding students’ explanations. In: CONFERENCE ON ARTIFICIAL INTELLIGENCE IN EDUCATION, 2003, Sidney, Austrália. Anais Conference on Artificial Intelligence in Education 2003. Sidney, Austrália, 2003. Disponível em <http://www.cs.usyd.edu.au/~aied/vol6/vol6_Popescu.pdf>. Acesso em: 18 de agosto de 2004. PORTER, M. F. An algorithm for suffix stripping. In: Program, v.14, n.3, p.130137, 1980. Disponível em: <http://www.tartarus.org/~martin/PorterStemmer/> e <http://snowball.tartarus.org/>. Acesso em: 10 de maio de 2005. 86 REDMOND, M.; PHILLIPS, S. Encouraging self-explanation through case-based tutoring, a case study. In: INTERNATIONAL CONFERENCE ON CASEBASED REASONING, 1997, Providence, Rhode Island. Anais International Conference on Case-Based Reasoning 1997. Providence, Rhode Island, 1997. p.132-144. Disponível em: <http://citeseer.nj.nec.com/ 133925.html>. Acesso em: 25 de agosto de 2003. RICH, E.; KNIGHT, K. Inteligência Artificial. Makron Books, 1993, 722p. RUSSEL, S.; NORVIG, P. Artificial intelligence: A modern approach. New Jersey: Prentice Hall, 1995. SIVIA, D. S. Data analysis: A bayesian tutorial. Oxford University Press, 1996. SCHWORM, S.; RENKL, A. Learning by solved example problems: Instructional explanations reduce self-explanation activity. In: ANNUAL MEETING OF THE COGNITIVE SCIENCE SOCIETY, 24., 2002, Fairfax, Virginia. Anais 24th Annual Meeting of the Cognitive Science Society. Fairfax, Virginia: George Mason University, 2002. Disponível em: <http://cogsci.psy.utexas.edu/ confproc/gmu02/final_ind_files/schworm_renkl.pdf>. Acesso em: 3 de setembro de 2003. SRIRAM, R. Intelligent systems for engineering: A knowledge-based approach. New York: Springer-Verlag, 1997. TRAFTON, J.; REISER, B. The contributions of studying examples and solving problems to skill acquisition. In: ANNUAL CONFERENCE OF THE COGNITIVE SCIENCE SOCIETY, 15., 1993. Anais 15th Annual Conference of the Cognitive Science Society. Disponível em: <http://citeseer. nj.nec.com/149956.html>. Acesso em: 10 de outubro de 2003. VANLEHN, K. Analogy events: How examples are used during problem solving. Cognitive Science, v.22, n.3, p.347-388, 1998. Disponível em: <http://www. pitt.edu/~vanlehn/distrib/VanLehnCogSci98.pdf>. Acesso em: 17 de setembro de 2003. WEBER, G.; MÖLLENBERG, A. ELM-PE: A knowledge-based programming environment for learning LISP. In: ED-MEDIA, 1994, Vancouver, Canadá. Anais ED-Media 1994. Vancouver, Canadá, 1994, p.557-562. WEBER, G.; BRUSILOVSKY, M. S.; STENLE, F. ELM-PE: An intelligent learning environment for programming. 1996. Disponível em: <http://www.psychologie. uni-trier.de:8000/projects/ELM/ELM-PE/tour.html>. Acesso em: 3 de outubro de 2003. WIEMER-HASTINGS P.; WIEMER-HASTINGS, K.; GRAESSER, A. C. Approximate natural language understanding for an intelligent tutor. In: American Association for Artificial Intelligence. Menlo Park, CA: AAAI Press. 1999. p.172-176. Disponível em: <http://internal.autotutor.org/papers/ approx.pdf>. Acesso em: 10 de maio de 2005. 87 WOOLF, B. P.; BECK, J.; ELIOT, C.; STERN, M. Growth and maturity of intelligent tutoring systems: A status report. In: FORBUS, K. D., FELTOVICH, P. J. Smart Machines in Education. Menlo Park, CA: AAAI Press. 2002. p.99-144. ZHOU, Y.; FREEDMAN, R.; GLASS, M. Delivery hints in a dialogue-based intelligent tutoring system. In: NACIONAL CONFERENCE ON ARTIFICIAL INTELLIGENCE, 16., 1999, Orlando. Anais 16th Nacional Conference on Artificial Intelligence. Orlando, 1999. Disponível em: <http://citeseer.nj.nec. com/zhou99delivering.html>. Acesso em: 16 de setembro de 2003. APÊNDICES 89 A. Estrutura das Relações Exemplo Campo Numero Tipo de Dados Inteiro Descrição Caracter Resolução Memorando Tamanho Descrição 11 É a chave primária, recebe um número inteiro automaticamente durante o cadastro. 255 Descrição do problema formulado pelo professor. Código-fonte com a resolução do problema. Mapeador Campo Tipo Tipo de Dados Caracter Comando Caracter Sintaxe Terminador Caracter Caracter Tamanho Descrição 25 Tipo do componente: comando, atribuição, expressão, operadores lógicos ou aritméticos. 50 Primitiva da Linguagem “C” que representa o comando. 255 Sintaxe esperada. 1 Caracter que representa o terminador do comando, normalmente ponto-e-vírgula, mas em alguns casos dois pontos (case) ou nenhum (do). 2 Número de componentes que formam a instrução. 2 Indica a partir de que componente a instrução deve ser composta. Lexemas, da língua portuguesa, que permitem mapear a respectiva instrução, apresentando-se etiquetados como essenciais ou opcionais. Número-Componente Inteiro Deslocamento Inteiro Lexema Memorando Explicação Número-Exemplo Tipo de Dados Inteiro Número Inteiro Mensagem Memorando Seleção-Ínicio Inteiro 11 Seleção-Término Número-Tópico Inteiro Inteiro 11 11 Campo Tamanho Descrição 11 Número do exemplo ao qual a explicação está relacionada. Número da explicação gerado automaticamente durante o cadastro. Texto formulado pelo professor, que será apresentado para orientar o aluno durante a explicação. Posição de início, em termos de caracter, do trecho do código-fonte. Posição de término. Número do tópico com o qual a explicação se relaciona. 11 - 90 Peso-Explicação Tipo de Campo Dados Número-Exemplo Inteiro Número-Explicação Inteiro Seleção-Início Inteiro Tamanho Descrição 11 11 11 Número do exemplo relacionado. Número da explicação relacionada. Posição de início, em termos de caracter, do componente dentro do código-fonte. Posição de término. Componente da instrução. Importância do componente da explicação dentro do contexto geral, sendo convencionado o valor 4 para essencial, 2 para necessária e 1 para desejável. Peso do componente dentro do contexto geral da explicação. Seleção-Término Componente Importância Inteiro Caracter Inteiro 11 255 1 Peso Ponto Flutuante 17,15 Corpus Campo Lexema Etiqueta Ocorrência Tipo de Dados Caracter Caracter Inteiro Tamanho Descrição 50 Contém o lexema. 50 Etiqueta atribuída ao lexema. 6 Número de ocorrências do conjunto lexema-etiqueta dentro do corpus. É utilizada para determinar, quando ocorre ambigüidade, a maior probabilidade de uso do lexema. Campo Identificador Descrição Ignorar Tipo de Dados Caracter Caracter Caracter Tamanho Descrição 25 Conteúdo da etiqueta. 50 Descrição do conteúdo da etiqueta. 1 Determina se um lexema etiquetado com este identificador deve, ou não, ser considerando na determinação do conteúdo da frase. Etiqueta Progresso Campo Código-Aluno Número-Tópico NúmeroExemplo NúmeroExplicação Tentativa Tipo de Dados Tamanho Descrição Caracter 10 Código do aluno. Inteiro 11 Número do tópico. Inteiro 11 Número do exemplo ao qual se refere a atividade. Inteiro 11 Número da atividade. Bloco-Código Memorando - Explicação Avaliação Situação Memorando Memorando Caracter 1 Data-Início Data-Hora - Data-Término Data-Hora - Inteiro 11 Quantidade de tentativas realizadas pelo aluno nesta atividade. Trecho do programa que deverá ser explicado. Explicação gerada pelo aluno. Avaliação da explicação pelo STI. Classificação gerada pelo STI, a partir da avaliação. Pode ser: C- Correta, I – Incompleta e E – Errada. Data e horário em que o aluno iniciou a resolução da atividade. Data e horário em que o aluno terminou a resolução da atividade. 91 B. Atividades Propostas para a Avaliação do STI Neste apêndice são mostradas as 25 atividades que foram utilizadas para a avaliação do STI. Onde a coluna número mostra o número da atividade proposta, a coluna bloco de código contém o trecho do código-fonte que o aluno irá explicar. Na coluna componente são exibidos os componentes da atividade que irão compor os nós da Rede Bayesiana, sendo que as próximas colunas representam, respectivamente, o grau de importância e o peso associado a cada nó. Número Bloco de Código 1 int y = 5; int z = x + y; 2 printf("soma: %d", z); 3 if (x % 2) 4 while(i<y) { i++; r*=x; } 5 if (a > 5) c = a + b; else c = a - b; 6 if (v[i] > maior) maior = v[i]; 7 int v[5] = { 4, 3, 8, 2, 1}; 8 int maior = 0; 9 ch = 0; Componente int y=5 int z=x+y printf "soma: %d", z if x%2 while i<y i ++ r *= x if a>5 c=a+b else c=a-b if v[i] > maior maior = v[i] int v[5] = 4 3 8 2 1 int maior = 0 ch = 0 Importância Essencial Necessária Essencial Necessária Necessária Essencial Necessária Essencial Essencial Essencial Essencial Necessária Essencial Essencial Necessária Essencial Necessária Essencial Essencial Necessária Essencial Essencial Essencial Desejada Essencial Peso 0,333333 0,166667 0,333333 0,166667 0,333333 0,666667 0,333333 0,666667 0,285714 0,285714 0,285714 0,142857 0,25 0,25 0,125 0,25 0,125 0,4 0,4 0,2 0,5 0,5 0,8 0,2 1 92 Número Bloco de Código 10 while (ch != A) ch = getchar(); 11 getchar() 12 i += 2; 13 while (i <= 10) 14 Break 15 default 16 scanf ("%d", &n); 17 for (int i = 0; i < 3; i++) { auxiliar[j] = vetor[i]; j--; } 18 Int auxiliar[3]; 19 int *pont_vetor; 20 while (*pont_vetor != 0) { pont_vetor++; } 21 pont_vetor++; 22 Return (0); 23 if (v[j] < v[menor]) menor = j; 24 printf("%f, ", v[i]); 25 Void Componente while ch != A ch = getchar getchar i += 2 while i <= 10 Break default Scanf "%d", &, n for int i = 0 i<3 i ++ auxiliar[j] = vetor[i] j -int auxiliar[3] int * pont_vetor while * pont_vetor != 0 pont_vetor ++ pont_vetor ++ return 0 if v[j] < v[menor] menor = j printf "%f, " v[i] void Importância Essencial Essencial Desejada Essencial Essencial Essencial Essencial Essencial Essencial Essencial Essencial Essencial Desejada Essencial Essencial Essencial Essencial Essencial Essencial Essencial Essencial Essencial Essencial Essencial Essencial Essencial Essencial Essencial Essencial Essencial Essencial Essencial Essencial Peso 0,444444 0,444444 0,111111 1 1 0,5 0,5 1 1 0,5 0,5 0,190476 0,047619 0,190476 0,190476 0,190476 0,190476 0,5 0,5 0,5 0,5 0,333333 0,333333 0,333333 1 0,5 0,5 0,333333 0,333333 0,333333 0,5 0,5 1 93 C. Explicações Utilizadas na Avaliação do STI Conjunto de explicações que foram utilizadas para realizar a avaliação do STI, sendo importante observar que no Nível 1 e 2 as explicações em sua totalidade são consideradas erradas e foram geradas automaticamente através de lexemas existentes no Corpus (Nível 1) e lexemas suportados pelo mapeador de comandos da linguagem “C” (Nível 2). No nível 3 as explicações foram geradas por um especialista humano no domínio de atuação do STI e consistem em 75 explicações igualmente divididas entre corretas, incompletas e erradas. # Nível 1 # AutoExplC - Arquivo para avaliação do módulo do aluno # Geração automática de frases com palavras existentes no corpus # provém destruídos Continuava transformar-se bananeiras torno serrana onda tempos planta sotaque engano emboscada solo incorporou ficoeritrina longe descarregam acusando pereiras vigilantes progride Oviedo brizanta acontecia Waldir cai encolhia Real mascate invaginações ternura diacinese milharal deserto engordando Berta confundir coxilhas trombeta Ristovski preta desmatamento renovados Stuart regra Bloch medir dúvida davam colesterol tramitação moitas Atravessamos ligada contentava fazia consolo principalmente Vieram morrem convenceu ativa saracoteando orientados transpassado imprimia-lhe forrageira adapta recomenda-se ética mover extingue examine exatamente Donner percebemos para assinados dissolução soltamos isso efeito terceirizando improvisei sedentária Aspásia seguro resultaram trocou bombardear forrada fomento atletismo gramíneas aeróbico Congresso sucedendo-se Bank tomei envoltório arcos trabalhado cristal ambos penetra embarcou lua bacterioclorofila mistério gerada caracteres cousa assessores tentava atrapalhado reclamou duque verbo feitiços amealhando Legislativa anuncia denota influencia fora improvisou-se flagrante baixo Exclamou operando utilizadas transformar aprimorar africano ferver devagar surpreender-se valsa divulgaria passarem retraiu-se ritual garota milagre atinja cego sofriam basta plumas criadeira converteu-se cardiovasculares bateu passou brandamente intercalar cobertura esvaía-se-me estratégicos devendo caseira ilustra bagas possível podem chorar rachados Ipanema dessa ficar deixou preparando felicíssimo sermões superávit melancia quantia uva argumentos Albert princípio parecia União tropa adapta aristocráticas fenação conflitos estabilidade situação meia arregaça-lhe imediatamente friamente trata paralelo horizontes analisada constitui milagre deve-se porteiro sobreviventes minimetralhadoras continuou transação atestam sa tablóide vista quiasmas camaradas peito frigoríficos isolado Jumil incêndio acompanhar abrir embelezamento excomungado escaramuçar tréguas protistas chocou altar Ademar separar-se o felá agora fezes Haddad escritório cartão levantou tomam Unicamp Lourenço qualquer mujique permitindo deposto desembarque fim condicionamento andar Pereira melhoramento trocara missionários capins cego sofriam basta plumas criadeira peito sucedendo-se Bank tomei forrada fomento atletismo desmatamento renovados Stuart regra Bloch medir dúvida davam colesterol verbo feitiços amealhando Legislativa acompanhar abrir embelezamento # # Nível 2 # AutoExplC - Arquivo para avaliação do módulo do aluno # Geração automática de frases apenas com lexemas suportados pelo mapeador de comandos “C” # enumerar definir endereço estrutura para constante vazio criar para caracter nulo inicializar subtrair ponteiro continuar testar enumerar multiplicar enquanto selecione vazio acumular decrementar incrementar sinal constante dupla sem verificar resto sair volátil conteúdo teclado verificar dividir dados exibir multiplicar dividir volátil subtrair superior 94 dividir precisão dados enquanto subtrair ponteiro dividir multiplicar digitar executar curto sem atribuir caso união contrário adicionar somar menor decrementar enquanto decrementar inicializar para enquanto enquanto outra iniciar constante para ou definir número dados superior estático subtrair inteiro multiplicar nulo inicializar sinal caso divisão iniciar absoluto união atribuir realizar sinal vetor menor vazio superior caso receber enquanto ler realizar exterior atribuir saltar não voltar número incrementar ou variável inicializar tipo externo padrão imprimir senão estrutura seleção prosseguir nulo estático dividir voltar inferior constante somar registro diferente inferior absoluto nada devolver digitar registro menor registro divisão vazio inicializar vazio declarar absoluto somar absoluto número obter seleção subtrair testar senão nada registro tamanho imprimir dividir que igual relacionar variável caso multiplicar outra vetor caso listar contrário precisão realizar registro tamanho igual dados atribuir para união executar número estrutura flutuante quando multiplicar atribuir tamanho sinal criar volátil criar enquanto quando definir inverso exterior multiplicar padrão multiplicar digitar vazio ponteiro devolver enquanto constante selecione listar contrário precisão realizar atribuir inicializar para para ou definir número estático subtrair superior dividir precisão dados enquanto subtrair flutuante superior dividir precisão multiplicar contrário vetor caso precisão listar realizar # # Nível 3 # AutoExplC - Arquivo para avaliação do módulo do aluno # Frases geradas por um especialista humano, dentro do contexto dos exercícios propostos. # # 1. int y = 5; int z = x + y; declarar e atribuir valores as variáveis inteiras y e z declarar as variáveis inteiras y e z, atribuir 5 a y e o valor x mais y a variável z eliminar a variável inteira y e z # 2. printf("soma: %d", z); imprimir z imprimir a variável inteira z e a string soma apagar a string soma e o valor de z # 3. if (x % 2) testar o resto da divisão verificar o resto da divisão de x por 2 obter o resultado da multiplicação de x por 2 # 4. while(i<y) { i++; r*=x; } enquanto i menor que y acumular i enquanto i menor que y acumular i, fazer com que r receba a multiplicação de r por x evitar que a variável i fique negativa # 5. if (a > 5) c = a + b; else c = a - b; se a maior que 5 então c deve receber a mais b quando a maior que 5, c receberá a mais b, caso contrário c receberá a menos b. enquanto a é menor que 5, c deve receber a multiplicação de a e b # 6. if (v[i] > maior) maior = v[i]; a variável maior deve receber o valor de v índice i verificar se v índice i é maior que a variável maior então atribuir v índice i à variável maior determinar um valor para maior # 7. int v[5] = {4, 3, 8, 2, 1}; declarar v como um vetor de inteiros declarar uma variável vetor de inteiros, v e inicializar com os valores 4, 3, 8, 2, 1 atribuir um vetor # 8. int maior = 0; declarar uma variável declarar a variável inteira maior e a inicializá-la com 0 apagar uma variável inteira # 9. ch = 0; atribuir 0 atribuir 0 à variável ch remover a variável ch # 10. while (ch != A) ch = getchar(); enquanto ch diferente de A enquanto ch diferente de A fazer com que ch receba um caracter do teclado remover um caracter do buffer de teclado # 11. getchar() ler obter um caracter do teclado apagar o teclado # 12. i += 2; acumular i acumular 2 ao valor de i atribuindo o resultado a i retirar 2 do valor de i # 13. while (i <= 10) 95 executar o laço enquando i menor que 10 executar o laço enquando i menor ou igual a 10 testar a condição do comando # 14. break sair interromper o bloco iniciar o bloco de comandos # 15. default executar executar este bloco padrão ignorar o bloco de comandos # 16. scanf ("%d", &n); obter o valor de n através do teclado obter o valor de n através de ponteiros e utilizando a máscara %d eliminar a variável n # 17. for (int i = 0; i < 3; i++) { auxiliar[j] = vetor[i]; j--; } para i de 0 enquanto i menor que 3 para i de 0 enquanto i menor que 3 fazer com que auxiliar receba vetor e depois incremente i e decremente j declarar o vetor auxiliar # 18. int auxiliar[3]; criar um vetor criar uma variável vetor de inteiros auxiliar de tamanho 3 apagar um vetor # 19. int *pont_vetor; declarar um inteiro declarar a variável ponteiro para inteiros pont_vetor copiar uma variável inteira # 20. while (*pont_vetor != 0) { pont_vetor++; } enquanto o conteúdo do ponteiro pont_vetor for diferente de 0 enquanto o conteúdo do ponteiro pont_vetor for diferente de 0 incrementar o endereço do ponteiro desalocar o endereço de pont_vetor # 21. pont_vetor++; incrementar pont_vetor incrementar o endereço do ponteiro pont_vetor alocar um endereço # 22. return (0); retornar retornar 0 interromper o programa # 23. if (v[j] < v[menor]) menor = j; atribuir o valor de j a menor quando v menor que v índice menor então menor deverá receber j declarar uma variável de ponto flutuante # 24. printf("%f, ", v[i]); imprimir o vetor imprimir o valor do elemento do vetor v com índice i, utilizando uma máscara %f inicializar o vetor v # 25. void declarar uma função declarar uma função que retorna nada encerrar a função # Fim do arquivo
Documentos relacionados
ver/abrir - Repositório do Departamento de Ciência da Computação
structures are used. Changes were made so that Tira-Teima now is compatible with the C programming language, in addition to the one already used, the Pascal.
Leia mais