Archive

Archive for the ‘WordIETF’ Category

O Mathematica é bom de texto

 

Introdução

 

Visualização está em moda. Não é para menos! Há inúmeras ferramentas disponíveis para exibir incríveis representações e uma exemplar revisão sistemática (LENGLER; EPPLER, 2007) exibe A Periodic Table of Visualization Methods. O Mathematica1 (Wolfram Mathematica), com facilidades ampliadas, não fica para trás. Como o interesse deste documento é falar sobre textos, no Mathematica, a Figura 1 mostra algumas alternativas de produzir nuvens de palavras. Para todos os gostos e finalidades.

wordcloudsFigura 1. Variações de nuvens de texto, no Mathematica, sobre a RFC7892 após manipulações no texto original. A função que produz cada uma das variações estão acima da respectiva imagem.

Mas, o que interessa, na realidade é indicar como o Mathematica é incrivelmente apropriado para manipular textos. Alguns exercícios foram feitos durante os estudos preliminares para a construção do WordIETF. Eles serão apresentados, sem a intenção de ensinar o uso do Mathematica.

 

Exercícios sobre o Mathematica

 

Tais exercícios foram executados sobre uma única RFC, a RFC7892. Foi uma escolha arbitrária, a partir das mais recentes. E, mais ainda, não há nenhum propósito adicional, além de mostrar que o Mathematica é bom de texto. Interpretações complementares são deixadas para o leitor.

 

Construindo um dicionário

 

Um dicionário pode ser construido através do Association. Um .Association é contruído pelo Dataset. A figura abaixo ilustra as diversas alternativas de Association, que na realidade é uma List.

 construindoassociation

Sendo uma List, uma série de funções estão disponíveis para produzir procedimentos sofisticados para manipular um dicionário. Este esforço pode ser evitado ao aproveitar uma proposta completa feita em Mangano (2010). Existe, entretanto, alguns problemas na proposta do livro, que foram corrigidas aqui, com a versão apresentada na figura abaixo.

 

dicionariomangano

Uma olhada na figura abaixo permite entender o uso das principais funções desta proposta de dicionário, desde sua criação até sua destruição.

usandodicionario

 

Lendo arquivos textos

 

Entrada e saída é uma das primeiras coisas a se aprender em uma linguagem de programação. Na sua diversidade, o Mathematica é uma linguagem de programação. E ele tem muitos recursos relacionados com entrada e saída. Por exemplo, Import é uma função poderosa. Para este exercício a escolha foi pela ReadList que permite a leitura da RFC7892 em uma lista de “strings”, separadas por caracteres definidos através de WordSeparators. A aplicação está na figura abaixo, com um trecho do resultado.

readlist

 

Populando o WordIETF

 

A aplicação escolhida é simples por razões óbvias. Trata-se de popular o dicionário WordIETF com os acrônimos que aparecem na RFC7892. Pela figura acima vê-se que os acrônimos estão entre parênteses (por exemplo, IETF) e o significado deles, em tese, está nas tantas palavras que o antecedem (no exemplo do IETF, nas cinco palavras anteriores). Em linhas gerais, o nosso algoritmo deve seguir os seguintes passos:

  • Ler a RFC7892 em busca de acrônimos.
  • Determina o tamanho n do acrônimo encontrado
  • Se o acrônimo não estiver no WordIETF, captura as n palavras anteriores e inclui o acrônimo.
  • Remova o acrônimo e seu significado do conteúdo da RFC lida.
  • Repita até que não haja mais acrônimos

 

Na figura abaixo, a preparação para o algoritmo. Em particular, a preparação do WordIETF.

etapaspreliminaresalgoritmo

Duas funções foram criadas com o objetivo de facilitar o algoritmo: verifica se é um acrônimo e retorna na lista para capturar o significado do acrônimo. Elas estão na figura que segue.

funcoes

O algoritmo, que apesar de incorporar experiências pessoais, dispensa maiores comentários e está na figura a seguir.

algoritmo

O resultado da execução do algoritmo está na figura a seguir, em 7 repetições sobre o texto da RFC, com tempo insignificante. Na sequência, o estado do dicionário após a execução.

resultadoalgoritmo

 

wordietffinal

 

Comentários finais

 

Foram muitas as experiências com o Mathematica para manipulação de textos, até porque foi uma exigência parcial de minha última disciplina do doutorado “Tópicos Avançados de Sistemas Computacionais Adaptativos”, com o Prof. Dr. Pedro Paulo Balbi de Oliveira, a quem agradeço as orientações durante a oportunidade. Abaixo, algumas considerações adicionais da experiência e das infinitas possibilidades do Mathematica.

  • Na figura abaixo, um exercício para responder a questão “Como poderia ser organizado o WordIETF?

    wordietforganizacao

  • O Mathematica é uma linguagem de programação funcional2. A maior parte dos exemplos acima foram procedurais. O Mathematica é, também, uma linguagem de programação procedural! Mas, ela é mais eficiente em sua característica funcional. A partir da leitura da RFC, usando a função Map, para tentar retirar os acrônimos, obtemos o seguinte resultado.

    mapinicial

     

    Retirando as cadeias vazias:

    retirandostringsvazios

     

    Combinando as duas funções têm-se o problema resolvido funcionalmente:

    resultadofucional

  • Muitos recursos para acesso a dicionários e sítios importantes externos estão disponíveis, como por exemplo, a Wikipedia. Duas imagens abaixo ilustram algumas alternativas.

    consultaexterna1

    consultaexterna2

 

 

Referências

 

LENGLER, R.; EPPLER, M. J. Towards a periodic table of visualization methods for management. In: IASTED Proceedings of the Conference on Graphics and Visualization in Engineering (GVE 2007), Clearwater, Florida, USA. [S.l.: s.n.], 2007.

MANGANO, S. Mathematica Cookbook. [S.l.]: “O’Reilly Media, Inc.”, 2010.

 


     

  1. http://www.wolfram.com/mathematica/
  2. https://maryrosecook.com/blog/post/a-practical-introduction-to-functional-programming

 

s

WordIETF

Introdução

Este texto evolui as preocupações, grosso modo, em dar “inteligência” aos agentes (ou IEs – Intelligents Elements} do modelo AEASD (Autonomous Elements Architecture for Specific Domains), cuja origem foi na dissertação de mestrado e em discussões posteriores (Braga-Filho, 2015) (Braga; Omar; Granville, 2015).

Trata-se de uma evolução, e natural aperfeiçoamento, da contextualização e da maneira de enxergar o problema. É um processo de aprendizagem, contínuo, permanente e natural, na vida de um pesquisador. Como a visão de Charles Darwin1, na sua celebrada e incontestável teoria. Se eu vivesse eternamente, chegaria a um consenso preciso, sobre a questão principal. Não sendo eterno, a contribuição pode interessar aos mais jovens.

A Figura 1 do meu texto “Preparando as RFCs para o UIMA” (https://ii.blog.br/2016/01/08/preparando-as-rfcs-para-o-uima/) sofreu uma pequena alteração e apresenta-se como a Figura 1, a seguir.

 tese-modeloprincipalFigura 1. Novo modelo global.

O que mudou foram as ferramentas (item 5, na figura). O Apache UIMA não é a única ferramenta disponível. Em algumas etapas, mas simples, ele é dispensável. Existem muitas outras! O que torna mais complexo, o tratamento de textos, um assunto muitíssimo difícil, como falam inúmeros autores. Com a linguagem natural nem se fala. Basta ouvir o pensamento de Noam Chomsky1 de que a linguagem natural não constitui um domínio sobre o qual se podem construir teorias científicas coerentes, como escreve Neil Smith2 em seu longo prefácio do “Novos horizontes no estudo da linguagem e da mente” (Chomsky, 2005).

Trata-se neste texto, portanto, incorporar outras reflexões e mostrar a necessidade de se criar um dicionário léxico sobre as RFCs, como o objetivo de facilitar os trabalhos futuros. Este dicionário, em um domínio específico (sobre as RFCs) é similar ao WordNet3, que se nomeou de WordIETF.

Contextualização

Resumindo, o conjunto de dados (textos não estruturados), isto é, o corpora que se deseja incluir no projeto é mostrado na Figura 2.

tese-corpusFigura 2. Corpora que interessa ao projeto final e que deve ser tratado.

Por razões de simplicidade, os exercícios preliminares serão reduzidos a um único corpus, como mostra a Figura 3

tese-corpusunico
Figura 3. Corpus sob o qual a experiência preliminar será feita.

Simplificando, fica mais fácil seguir a proposta mostrada na Figura 4, que mostra a evolução atual do que se tem em mente, para o futuro.

tese-proposta
Figura 4. A atual evolução do modelo e as questões de pesquisa envolvidas: (2), (3) e (4).

O item (1) da figura acima está desenhado na Figura 2 do texto “Preparando as RFCs para o UIMA” (https://ii.blog.br/2016/01/08/preparando-as-rfcs-para-o-uima/). O item (2) representa uma das três questões de pesquisa que, de imediato, leva à criação de um dicionário léxico, WordIETF, consignado a partir do corpus, parte do RFC Editor4.

Como estabelecer o WordIETF

Em um livro bastante interessante sobre processamento de textos (Ingersoll; Morton; Farris, 2013), ferramentas do Apache são indicadas: Hadoop5, Lucene+Solr6 com o PyLucene, Mahout7 e o openNLP8. Tais ferramentas são, realmente, suficientes para resolver desafios no domínio de um texto, como mostra a Figura 5.

tamming-desafios
Figura 5. Desafios na mantipulação de textos.

O UIMA já foi parcialmente testado e as outras propostas da Apache serão verificadas. A Python, com o seu NLTK (Natural Languange Tool Kit), permite sem maiores esforços, a construção do WordIETF e resolver os desafios da Figura 5. Oportunamente serão descritas as experiências.

Uma outra ferramenta, que pode ser até mesmo complementar é o Mathematica4. Pode o Mathematica resolver os desafios e contribuir para a construção do WordIETF? A resposta é sim, com veremos em novos documentos mais à frente.

Conclusões

Trata-se de um projeto de pesquisa que exige a construção de um dicionário léxico, o WordIETF. Observa-se a necessidade de cooperação e contribuições de eventuais interessados.

Uma das maneiras de receber colaboração e contribuições é a divulgação no âmbito do IETF e de outras comunidades interessadas. Neste sentido, caso haja tempo hábil será enviado um I-D para o IETF 96 (Berlim), em julho próximo.

Resultados parciais e dificuldades encontradas, evolução e outras informações úteis serão postas neste blogue.

Referências

BRAGA-FILHO, L. J. Modelo para Implementação de Elementos Inteligentes em
Domínios Restritos da Infraestrutura da Internet
. Dissertação (Mestrado) — Universidade Presbiteriana Mackenzie, São Paulo, SP, 8 2015.

BRAGA, J.; OMAR, N.; GRANVILLE, L. Z. Uma proposta para o uso de elementos
inteligentes em domínios restritos da infraestrutura da internet. In: Anais CSBC, WPIETFIRTF. Recife, Pernambuco, Brasil: [s.n.], 2015

CHOMSKY, N. Novos horizontes no estudo da linguagem e da mente. [S.l.]: Unesp, 2005.

INGERSOLL, G. S.; MORTON, T. S.; FARRIS, A. L. Taming text: how to find, organize,
and manipulate it. [S.l.]: Manning Publications Co., 2013.


1. https://pt.wikipedia.org/wiki/Charles_Darwin
2. https://en.wikipedia.org/wiki/Neil_Smith_%28linguist%29
3. https://wordnet.princeton.edu/
4. https://www.rfc-editor.org/
5. http://hadoop.apache.org/
6. http://lucene.apache.org/index.htm
7. http://mahout.apache.org/
8. https://opennlp.apache.org/index.html
9. http://www.wolfram.com/

Categorias:Apache, IETF, Modelos, TCP/IP, WordIETF
%d blogueiros gostam disto: