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:
E executá-lo, veremos como resultado:
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:
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:
Postar um comentário