Olá a todos,

Poucos conhecem esta classe escondida em Python, mas que tem me ajudado bastante na construção de pequenos parsers e analisadores léxicos em alguns projetos que estou trabalhando. Estou falando do módulo "re", responsável pelo uso de expressões regulares em códigos Python cuja uma das classes  não documentadas oficialmente, o Scanner  pode nos auxiliar nestas tarefas.

A classe Scanner ainda não documentada oficialmente por estar ainda em experimentação pode ser bastante útil no processo de tokenização de textos, uma fase de pré-processamento importante em mineração de textos.

O seu uso é bastante simples, basta passar como parâmetro uma lista de expressões regulares e suas respectivas funções callback. Quando uma string é "casada", a mesma é convertida em um respectivo token por meio da chamada da função callback associada e assim adicionada à uma lista de tokens a serem retornados. Se o scanner atinge um ponto em que não há um token a ser "casado",  o mesmo retorna a lista de tokens identificados até aquele ponto e o restante do texto em string que não foi casado.

Vamos a um exemplo prático!  Um dos cenários para o seu uso é os tweets espalhados pelo microblog social Twitter.  Se quisessémos construir um simples analisador léxico para separar links, hashtags, usernames e texto poderíarmos fazer de diversas maneiras. Entretanto com a classe re.Scanner esta atividade torna-se bem mais eficiente e rápida visto que ela já abstrai ao desenvolvedor a necessidade de implementar um analisador que varre as strings à busca de expressões regulares definidas pelo desenvolvedor.

Então se montarmos nosso scanner para extrair dados do twitter conforme a figura abaixo:

Exemplo de Extrator de Tweets

E executá-lo, veremos como resultado:

Resultado do Scanner

Podemos observar pela figura acima que após executar nosso pequeno parser, conseguimos extrair com sucesso os tokens relacionados a Retweets, nomes de usuários, palavras, HashTags e até URl's . Para quem trabalha com processamento de linguagem natural (NLP) isto pode ser uma útil ferramenta para a fase de pré-processamento em mineração de textos.

Com isso concluo a apresentação da classe Scanner escondida na biblioteca padrão que vem ao Python.
Quem não entender muito o que vem nessas strings que começam com  r'', visite meu post sobre expressões regulares, pode ser útil para quem está começando!

Espero ter ajudado pessoal,

Atenciosamente,

Marcel Caraciolo

Referências:

0 comentários:

top