Processamento de Linguagens e Conhecimento


Gramáticas na Compreensão de Software (Sem. 1)

Objectivos de aprendizagem

No fim, os alunos deverão ter: capacidade para desenvolver especificações da sintaxe/semântica de
linguagens e problemas em geral com gramáticas; capacidade para gerar programas (protótipos) usando
ferramentas automáticas baseadas em gramáticas; capacidade de construir front-ends poderosos para a
análise de linguagens de programação; capacidade para conceber e implementar estruturas de dados
complexas para representação intermédia da informação extraída da análise do código; capacidade para criar
representações visuais adequadas à compreensão clara do conhecimento complexo detido; capacidade para
desenvolver software como uma tarefa de transformação de programas e/ou especificações em
implementações eficientes; capacidade para utilizar técnicas de transformação de programas para otimizar
programas (e.g. cálculo parcial, deteção de código morto), efetuar debugging de programase melhorar a
estrutura dos programas; capacidade de desenvolver ferramentas para ajuda à compreensão de código.

Conteúdos programáticos

Compreensão de Programas, modelos cognitivos, abordagens,
conceitos e domínio do saber;
Linguagens e Gramáticas, caracterização destes conceitos e
domínios do saber;
Conceitos sobre Gramáticas de Atributos (GA): definição formal, desenvolvimento;
Processamento de Linguagens baseado em Gramáticas: notações gramaticais, gramáticas tradutoras (GT) e
gramáticas de atributos (GA); Tradução Dirigida pela Sintaxe versus Tradução Dirigida pela Semântica;
Geração de Programas (processadores de Linguagens, protótipos rápidos) a partir de GT/GAs;
Análise de programas;
Transformação de programas;
Paradigmas para visualização de programas.

Metodologias de ensino e avaliação

Todas as aulas têm um cariz teórico-prático. No início de cada aula é
feito um balanço da aula anterior e discutidos os trabalhos ou
questões propostos (briefing); a seguir dedica-se algum tempo a
levantar questões teóricas e a apresentar as diferentes aproximações e
metodologias que suportam a sua resolução; esta parte, embora de
carácter teórico, desenvolve-se sempre em forma de diálogo com os
alunos.
Continua-se a aula numa parte mais prática em que os alunos são
convidados a pesquisar e a fazer uma síntese do que há já escrito
sobre o assunto; ou então a desenvolver experimentação de ferramentas
ou implementação de algoritmos.
A avaliação é feita com base em 2 testes escritos (ou 1 exame de
recurso final) e através de vários trabalhos (quinzenais) entregues
pelos alunos, resolvidos foras das aulas mas defendidos perante a
turma. Os trabalhos para avaliação são de dois tipos: monografias, com
sínteses dos temas pesquisados; trabalhos de implementação.

Bibliografia

Aho, Sethi and Ullman, ``Compiler Principles, Techniques and Tools'', Addison-Wesley, 1986;
Pierre Deransart, M. Jourdan, and B. Lorho, "Attribute grammars: Main results, existing systems and
bibliography''. In LNCS 341. Springer-Verlag, 1988;
A. van Deursen and Paul Klint, "Little languages: Little maintenance?''. Journal of Software Maintenance,
10:75-92, 1998;
Pedro Rangel Henriques, "Atributos e Modularidade na Especificação de Linguagens Formais''. PhD thesis,
Universidade do Minho, Dec. 1992;
C. A. R. Hoare, "Hints on programming language design''. Technical Report CS-TR-73-403, Stanford University,
CA, USA, 1973;
John E. Hopcroft, Rajeev Motwani, and Jeffrey Ullman, "Introduction to Automata Theory, Languages, and
Computation''. Addison-Wesley, 3rd ed. edition, 2006.

Processamento e Representação de Informação (Sem. 1)

Objectivos de aprendizagem

No fim, os alunos deverão: conhecer o ciclo de vida documental, saber identificar as várias fases e as
tecnologias a utilizar em cada uma; ser capazes de especificar uma linguagem de anotação para um conjunto
de requisitos; ser capazes de implementar transformações de documentos para diversos fins: extração de
conhecimento, publicação na Web, intercâmbio de informação; conhecer e utilizar soluções de
armazenamento para documentos anotados; ser capazes de definir as camadas necessárias para integrar e
realizar o intercâmbio de informação entre sistemas de informação distintos; ser capazes de implementar um
projeto de publicação eletrónica recorrendo a normas internacionais abertas: XML, XSLFO e XSL; ser capazes
de programar a geração automática de sítios Web a partir de um repositório de documentos XML; ser capazes
de utilizar linguagens de anotação e respetivas ferramentas desenvolvidas por outrem.

Conteúdos programáticos

Representação da informação: evolução histórica, ASCII, Unicode;
Texto como a forma fundamental de representar informação;
Linguagens de anotação descritivas: introdução e um pouco de história, SGML, HTML, XML, JSON;
Documentação estruturada e anotação;
Algumas linguagens de anotação para a Web: XML, HTML, WML, WSDL, SVG;
Documentos XML: estrutura e conceitos, ciclo de vida documental, desenvolvimento de DTDs e Schemas;
Processamento de linguagens de anotação: árvore documental abstrata (ADA), navegação e pesquisa na ADA:
o XPath, modelos de processamento: DOM e SAX;
XSL: XML Stylesheet Language;
XQuery: XML Query Language;
XML e Bases de Dados: armazenamento de dados estruturados e semi-estruturados;
Integração e intercâmbio de informação entre sistemas: Limpeza de dados, Construção de validadores,
ferramentas de e migradores, Protocolo OAI-PMH;
Publicação Eletrónica: a norma XSL-FO;
Processamento de documentos -- HTML, CGIs, XML.

Metodologias de ensino e avaliação

Será seguida uma metodologia de ensino teórico-prática orientada ao projeto.
No início de cada aula é feita uma introdução teórica, que os alunos deverão depois aprofundar em casa, à
qual se segue a resolução de uma bateria de pequenos projetos que visam trabalhar a temática da aula.
A avaliação será feita por projetos. Nas primeiras semanas serão disponibilizados aos alunos enunciados de
projetos que deverão realizar como trabalho de casa e entregar para avaliação. Haverá um conjunto de 3 a 5
pequenos projetos cuja resolução não excederá as 2 horas. Este conjunto de pequenos projetos
corresponderá a 40% da nota. Os restantes 60% serão obtidos através de um projeto de média dimensão que
iniciará a meio do semestre e será acompanhado nas aulas até ao fim do semestre.

Bibliografia

Para a maior parte dos temas abordados a informação que se consegue encontrar na Internet é mais do que
suficiente. No entanto, ficam aqui referências que demonstraram no passado ter sido de grande ajuda:
Harold, Elliotte Rusty. ``XML in a Nutshell: a desktop quick reference''. 3rd ed . Sebastopol: O'Reilly, cop. 2005;
Ramalho, J.C. e Henriques, P. R. "XML \& XSL : da teoria à prática''. Lisboa : FCA - Editora de Informática, 2002
(Tecnologias de informação). ISBN 972-722-347-8;
Carlos Serrão / Joaquim Marques. "Programação com PHP 5.3''. Lisboa : FCA - Editora de Informática, 2010.
ISBN: 978-972-722-341-1.

Processamento e Representação de Conhecimento (Sem. 2)

Objectivos de aprendizagem

No fim, os alunos deverão: ser capazes de especificar formalmente conhecimento usando várias
metodologias: taxonomias, thesaurus e ontologias; ser capazes de adicionar semântica descritiva a objetos
digitais; ser capazes de especificar taxonomias em SKOS; ser capazes de espeficicar ontologias em OWL; ser
capazes de processar ontologias; ser capazes de adicionar semântica a sítios web usando as normas RDFa e
"Open Linked Data".

Conteúdos programáticos

Origem e evolução da representação formal de conhecimento;
Especificação formal de conhecimento: taxonomias, thesaurus e ontologias;
Semântica descritiva em objetos digitais: RDF - Resource Description Framework;
SKOS - Simple Knowledge Organization System: especificação de taxonomias, thesaurus e sistemas
classificativos;
Especificação de ontologias: Entidades principais - Classes/Conceitos, Propriedades e Indivíduos; Hierarquias
de Classes; Reasoning: Inferência de Conhecimento - Lógica de
1ª ordem e Lógica Descritiva;
OWL - Ontology Web Language: OWL-Lite e OWL-DL;
Editores e navegadores de/em OWL;
Processamento de ontologias e construção de ferramentas: reasoners, editores e navegadores;
Web 2.0 e o software social;
Web 3.0: a web semântica (OWL, RDF);
Transformação de Sistemas de Informação em Sistemas de Conhecimento: RDFa - Resource Description
Framework in Attributes, Open Linked Data.

Metodologias de ensino e avaliação

Será seguida uma metodologia de ensino teórico-prática orientada ao projeto.
No início de cada aula é feita uma introdução teórica, que os alunos deverão depois aprofundar em casa, à
qual se segue a resolução de uma bateria de pequenos projetos que visam trabalhar a temática da aula.
A avaliação será feita por projetos. Nas primeiras semanas serão disponibilizados aos alunos enunciados de
projetos que deverão realizar como trabalho de casa e entregar para avaliação. Haverá um conjunto de 3 a 5
pequenos projetos cuja resolução não excederá as 2 horas. Este conjunto de pequenos projetos
corresponderá a 40% da nota. Os restantes 60% serão obtidos através de um projeto de média dimensão que
iniciará a meio do semestre e será acompanhado nas aulas até ao fim do semestre.

Bibliografia

Santos, Cláudia da Silva Amaral, "Terminologia e ontologias: metodologias para representação do
conhecimento'', Doutoramento em Linguística, 2010, U. Aveiro;
Geroimenko, Vladimir. "Dictionary of XML technologies and the semantic web''. London : Springer, cop. 2004.
(Springer professional computing). ISBN 1-85233-768-0;
Natalya F. Noy and Deborah L. McGuinness. "Ontology Development 101'': A Guide to Creating Your First
Ontology. In Development, vol. 32, Nr. 1, pp. 1-25. 2001;
S. Grimm. `"Knowledge Representation and Ontologies''. In Scientic Data Mining and Knowledge Discovery:
Principles and Foundations, 2009;
Ivo Serra and Rosario Girardi. "A Process for Extracting Non-Taxonomic Relations of Ontologies from Text''. In
Intelligent Information Management, vol. 3, Nr. 4, pp. 119-124. July, 2009;

Scripting no Processamento de Linguagem Natural (Sem. 2)

Objectivos de aprendizagem

No fim, os alunos deverão: ser capazes de escrever scripts para automatização de uma variedade de tarefas e
transformações; ser capazes de resolver problemas usando transformações via expressões regulares;
compreender as vantagens e o funcionamento de sistemas guiados por regras de produção (condição-reação);
ter a capacidade para construir DSLs concretas; ter a capacidade de construir e usar corpora; ter a capacidade
de extrair informação diversa a partir de corpora; ter a capacidade de construir dicionários eletrónicos; ter a
capacidade de construir pequenos protótipos para modelar linguagem natural.

Conteúdos programáticos

Linguagens de scripting: características, objetivos e conceitos, introdução a uma linguagem de scripting (e.g.
Perl);
Processadores de linguagens regulares e programação orientada à expressão regular;
Design Patterns no processamento de linguagens;
Linguagens baseadas em regras: reescrita textual e linguagens de domínio específico (DSL) baseadas em
regras de reescrita, sistemas de produção;
Processamento estrutural de árvores e DSLs baseadas nestes processadores (e.g. XML::DT,
Lingua::Treebank);
Processamento de Linguagem Natural: Análise Morfossintática de textos em língua natural:
Modelos morfológicos, Gramáticas lógicas e Definite Clause Grammars, Parsing robusto;
Processamento de Linguagem Natural: semântica e pragmática;
Dicionários multifonte e Thesaurus;
Extração de Conhecimento a partir de Textos;
Sumarização e Classificação;
Introdução à Tradução automática.

Metodologias de ensino e avaliação

Esta unidade curricular é essencialmente prática. Os alunos serão
convidados a resolver problemas específicos usando uma linguagem de
scripting em colaboração com o docente. Serão propostas tarefas
para os alunos realizarem entre aulas para aprofundar os seus
conhecimentos.
A avaliação é feita com base num teste (ou exame) e pequenos trabalhos
práticos a serem resolvidos fora das aulas.

Bibliografia

Jeffrey E. F. Friedl, "Mastering Regular Expressions, Powerful Techniques for Perl and Other Tools'', O'Reilly
Media, 2006;
Mark Jason Dominus, "Higher-Order Perl'', Morgan Kaufmann, 2005;
Daniel Jurafsky and James H. Martin. "Speech and Language Processing: An introduction to natural language
processing, computational linguistics, and speech recognition''. Pearson Prentice Hall, 2008;
Igor A. Bolshakov and Alexander Gelbukh, "Computational Linguistics: Models, Resources, Applications''.
Steven Bird, Ewan Klein, and Edward Loper, "Natural Language Processing with Python'', O'Reilly Media, 2009;
Jon Loeliger, Matthew McCullough, ``Version Control with Git, 2nd Edition'', O'Reilly Media, 2012.