• Nenhum resultado encontrado

VI. Lista de siglas

3 Estado da arte

3.4 Sistemas de informação

3.4.4 Exploração de conhecimento

3.4.4.4 Processamento língua natural

Para Mote (2002), o processamento de língua natural tem por objetivo implementar em computação uma forma de entender e dialogar com utilizadores numa linguagem humana. Como tal, é uma das componentes da linguística computacional, com enfoque no tratamento computacional da linguagem e com aplicação prática em domínios como corretores ortográficos e gramaticais, além de tradutores e parsers. Othero (2006) cita no seu artigo, Vieira e Lima, para o qual a linguística computacional pode ser entendida como a “área de conhecimento que explora as relações entre linguística e informática, tornando possível a construção de sistemas com capacidade de reconhecer e produzir informação apresentada em linguagem natural”. Este tipo de linguística pode ser decomposto da seguinte forma:

• Linguística de corpus: centrada na utilização de coleções de textos, designados como “corpora” ou coleções, que normalmente são estruturados como bases de dados para representar uma amostra num determinado domínio e que podem ser focados em linguagem falada, linguagem escrita literária e textos de imprensa, entre outros. Estes “corpora” são organizados para possibilitar estudos de fenómenos linguísticos, como é o caso do Wordnet para a língua inglesa;

• Processamento de língua natural: desenvolvimento de software, como é o caso de parsers (analisador sintático), tradutores automáticos, reconhecedores de voz, geradores de resumos de texto ou chattterbots (interface para criar interação entre homem-máquina através de diálogo em língua natural).

Tendo por base a linguística, no processamento de língua natural deve-se considerar que na análise de um discurso, existem dois tipos de estudos:

• Estrutura das palavras: recorre-se à morfologia (estrutura interna das palavras), lexicologia (palavras que formam um idioma) e sintaxe (como são combinadas palavras para formar frases);

• Estudo do discurso: fonética (sons da linguagem), fonologia (padrões dos sons básicos de uma língua), semântica (sentido das frases e das palavras que integram essa frase), pragmática (forma como as oralizações são usados em atos de comunicação), estilística (estilo na linguagem) e terminologia (léxicos especializados das ciências e das técnicas). Em particular, o estudo da lexicologia, sintaxe e semântica, assumem um papel crítico no contexto do processamento de língua natural. Neste sentido, Mote (2002) refere que existem vários módulos e métodos numa arquitetura de processamento de língua natural, que se podem resumir nos seguintes componentes:

• Speech recognition: conversão de uma frase numa sequência de palavras;

• Language understanding: análise de palavras no contexto de uma frase para identificar o seu significado;

77

• Dialogue management: interface de diálogo com o utilizador;

• Communication with external system: interface automática com outros sistemas, como é o caso de bases de dados, ontologias ou outros sistemas;

• Response generation: especificação da mensagem a ser gerada pelo sistema.

Tendo por base estes módulos, pode-se focar o language unserdstanding como módulo central em investigação, que utiliza um processador, tal como referido na Figura 3.40, com as seguintes funções:

• Lexical analysis: examina as palavras para efeito do seu reconhecimento e morfologia, agrupando-as em tokens. Considerando cada palavra, pode-se considerar as palavras, que dependendo de utilização em frases assumem formas invariáveis (preposições, conjunções, advérbios), variáveis (artigos, pronomes e verbos) ou mistos (adjetivos e substantivos);

• Syntax analyzer: efetua o parsing e post-tagging das palavras recebidas do lexical analysis, agrupando-as em frases gramaticais. Nesta fase, ainda não se tem o significado, mas tem-se somente as palavras estruturadas como templates, isto é, em formas gramaticais corretas;

• Semantic analyser: aplica a gramática, enquanto conjunto de regras, para se obter expressões. Utiliza associação com frases humanas descritas em forma de código, utilizando conceitos de ontologias entre outras formas, para o efeito.

78

Devido à necessidade de se efetuar a análise semântica recorrendo a formas computacionais de comparação com frases humanas para entender o seu sentido, Bellandi et al. (2010) utilizam uma base de conhecimento estruturada como ontologia num sistema de processamento de língua natural para extração de relações a partir de padrões em textos. Esta relação com ontologias e face ao mecanismo de interpretação da semântica da linguagem, leva a uma aproximação entre os sistemas de processamento de língua natural e aprendizagem automática.

Para implementar sistemas de processamento de língua natural, existem várias ferramentas, como é o caso das seguintes:

• NLTK: plataforma construída em linguagem Python. Implementa interfaces com recursos lexicais como o WordNet, além de programas específicos para classificação, tokenização, tagging, parsing e análise semântica;

• OpenNLP: biblioteca Java para o processamento de linguagem natural em texto. Suporta tarefas como tokenização, segmentação de sentença, etiquetagem morfossintática, extração entidade nomeada, extração de sintagmas, análise sintática e resolução de correferência;

• GATE: software de código aberto para processamento e análise de texto. Permite criar fluxo de processamento de texto para realização de tarefas de extração de informação por meio de construção de taxonomia. Suporta tarefas como etiquetagem morfossintática, reconhecimento de entidades, tratamento de coreferência ou anáforas, anotação de texto com base em ontologia;

• StanfordNLP: software escrito em Java para processamento de linguagem natural que pode ser incorporado em outros programas, desenvolvido de acordo com a abordagem estatística para resolução de grandes problemas da linguística computacional. Processa textos nos idiomas inglês, francês, alemão, chinês e arábico;

• LX-Center: desenvolvido pela Universidade de Lisboa, fornece um conjunto de programas para processamento de textos escritos em português (segmentador de frases, segmentados lexemas, anotador categorial, parser e gramática computacional), além de serviços online para testes (e.g. lematizador verbal, conjugador verbal, reconhecedor nomes próprios, parser, etiquetador papeis semânticos);

• WordNET: base de dados lexical do inglês, em que substantivos, verbos, adjetivos e advérbios são agrupados em conjuntos de sinónimos, cada um expressando um conceito distinto. Os conjuntos estão interligados por meio de relações semântica-conceitual e léxica. Disponibiliza um software livre para navegação na base de dados;

• UIMA: biblioteca de software C++ e Java de código aberto para processamento de texto não-estruturado. Geralmente utilizada para criar sistemas de busca. Extensível através de plugins. Configurável por meio de arquivos XML para criação de fluxos de dados. Suporta extração de tokens, lematização, etiquetagem morfossintática, deteção de entidade e deteção de relações;

• LingPipe: biblioteca Java para processamento de texto usando linguística computacional. Suporta tarefas de reconhecimento de entidades (pessoas, organizações ou locais), classificação automática, correção ortográfica.

79

3.4.4.5 Reasoning

Segundo Bottou (2014), pode-se definir reasoning como “algebraically manipulating previously acquired knowledge in order to answer a new question”, o que envolve modelos de inferência first-order ou probabilístico. Bottou (2014) sugere igualmente abordagens para machine-learning mais próximas de ontologias de domínio reutilizadas para inferência ao referir que “instead of trying to bridge the gap between machine learning systems and sophisticated “all-purpose” inference mechanisms, we can instead algebraically enrich the set of manipulations applicable to training systems and build reasoning capabilities from the ground up.” Reasoning faz parte da lógica enquanto ciência que estuda o raciocínio no sentido de encontrar formas de pensar que conduzam a conhecimento verdadeiro. Normalmente a partir de um conjunto de factos conhecidos, designado por premissas, obtém-se uma conclusão correta. Estas premissas fazem parte do estudo de ontologias, nomeadamente na criação de statement subjeito-predicado-objeto que permitem registar conhecimento a partir do qual se gera novo conhecimento. Tal é o caso de “Francisco é Particular” e “Particular é Cliente”, então pode-se deduzir que “Francisco é Cliente” por transitividade.

Para se implementar sistema de inferência recorre-se a factos definidos numa ontologia onde se define as classes e relações para se formalizar um domínio, sobre o qual se aplica um conjunto de regras para inferir desta forma novo conhecimento. É o caso de motores de inferência como JESS, ApacheJENA, Pellet ou linguagens como SWRL.

3.4.4.6 Recommender system

Recomender system são tipos de sistemas que permitem aplicar funções designadas por Utility System sobre um universo de utilizadores e universo de itens para recomendar o item adequado a determinado utilizador ou lista de utilizadores. Como tal é um problema que se pode formalizar como UtilityFunction (ListaUtilizadores, ListaItens), sendo que o resultado é uma lista de itens adequado para a lista de utilizadores, tal como referido por Adomavicius e Tuzhilin (2005), que acrescentam que para implementação de sistemas deste tipo, recorre- se a três abordagens tipo, baseados normalmente em mecanismos de filtragem:

• Collaborative: utiliza uma abordagem baseada em memory-based para capturar a classificação de itens por utilizadores para chegar a uma conclusão, ou em alternativa recorre a model-based para utilizar modelos de aprendizagem preditivos para chegar à conclusão de recomendação;

• Content-Based: recorre a conteúdos de opinião dos utilizadores sobre os itens, que reflete a sua preferência e o conteúdo caracterizador dos itens, para cruzar as semelhanças e gerar uma recomendação;

• Hybrid: recorre a combinação de recomendações via collaborative e content-based para originar a recomendação final.