• Nenhum resultado encontrado

Implementação dos serviços de segmentação de textos

5. IMPLEMENTAÇÃO DO PORTSERVICE-BR

5.3 Implementação dos serviços do PortService-Br

5.3.3 Implementação dos serviços de segmentação de textos

Para a implementação dos recursos de segmentação de textos, foram usados recursos nativos da biblioteca NLTK. Para a segmentação de textos em frases foi usado o sent_tokenize, com parâmetros descritores para a língua portuguesa. Para a segmentação de textos em palavras, foi usado o word_tokenize com parâmetros descritores para a língua portuguesa. O retorno da consulta ao serviço de segmentação de textos em sentenças é um arquivo no formato json cuja estrutura é apresentada no quadro 18.

Quadro 18. Estrutura do retorno JSON do serviço segmentação de textos em sentenças. { [ { "sentenca": "” }, ] }

A estrutura consiste em uma lista principal onde cada sentença representa um item. A propriedade “sentenca” é referente a cada sentença encontra no texto de entrada. A segmentação de textos em sentenças é aplicada por meio da identificação de caracteres finalizadores de sentenças, principalmente, dos sinais de pontuação. Embora se use o ponto final (ou ponto de interrogação ou exclamação) na maioria das línguas para indicar o fim de frase, nem sempre isso acontece. O retorno da consulta ao serviço de segmentação de textos em palavras é um arquivo no formato json sua estrutura é apresentada no Quadro 19.

Quadro 19. Estrutura do retorno JSON do serviço segmentação de textos em palavras. {

[ {

"token": "” },

] }

A estrutura consiste em uma lista principal, onde cada token representa um item. A propriedade “token” é referente a cada palavra, número e sinais de pontuação encontrado no texto de entrada. Essa tarefa utiliza, basicamente os sinais gráficos, tais como espaços, e algoritmos para o reconhecimento de entidades limítrofes de um token. As próximas seções trazem mais detalhes da implementação do serviço de segmentação de textos disponíveis.

5.3.3.1 Implementação do serviço de segmentação de texto em sentenças

A implementação do serviço de segmentação de textos em sentenças, foi uma tarefa relativamente simples, bastando apenas a importação do pacote sent_tokenize da biblioteca NLTK. O acesso ao serviço está disponível via HTTP GET, bastando apenas fazer uma requisição para a URL do serviço. A requisição ao serviço usando o sent_tokenize possui o seguinte parâmetro:

● texto: Especifica o texto ou palavra a ser etiquetada.

Abaixo é apresentado um exemplo de URL de consulta passando como parâmetro o texto “Qualquer um pode escrever um código que o computador entenda. Bons programadores escrevem códigos que os humanos entendam.”

http://portservice.pythonanywhere.com/analise/segmentacao/sentenca/?texto=Qualq uer um pode escrever um código que o computador entenda. Bons programadores escrevem códigos que os humanos entendam.

Ao ser recebida uma requisição, o conteúdo do parâmetro “texto” é repassado para o módulo de Segmentacao. Esse módulo é responsável por executar o método que faz a segmentação do texto em sentenças. O Quadro 20 apresenta o método responsável por segmentar um texto em frases.

Quadro 20. Método responsável por segmentar um texto em frases. def Segmentar(self,texto):

sentencas = sent_tokenize(texto,language = 'portuguese') return sentencas

O texto é recebido pelo método Segmentar da classe SegmentacaoSentenca e passado como parâmetro para o sent_tokenize, que gera uma lista contendo todas as sentenças, do texto passado como parâmetro, prontas para serem retornadas como resposta a requisição. O Quadro 21 apresenta o retorno da requisição para o texto passado como exemplo acima.

Quadro 21. Retorno da requisição ao serviço de segmentação de texto em sentenças para a texto de exemplo.

[ {

"frase": "Qualquer um pode escrever um código que o computador entenda" },

{

"frase": "Bons programadores escrevem códigos que os humanos entendam" }

]

Para maiores informações sobre o sent_tokenize é recomendado visitar o site oficial do NLTK, onde é possível encontrar todo o conjunto de recursos disponível em http://www.nltk.org/.

5.3.3.2 Implementação do serviço de segmentação de texto em palavras

A implementação do serviço de segmentação de textos em palavras, foi uma tarefa relativamente simples, bastando apenas a importação do pacote word_tokenize da biblioteca NLTK. O acesso ao serviço está disponível via HTTP GET, bastando apenas fazer uma requisição para a URL do serviço. A requisição ao serviço usando o word_tokenize possui o seguinte parâmetro:

● texto: Especifica o texto ou palavra a ser etiquetada.

Abaixo é apresentado um exemplo de URL de consulta passando como parâmetro o texto “Qualquer um pode escrever um código que o computador entenda. Bons programadores escrevem códigos que os humanos entendam.”

http://portservice.pythonanywhere.com/analise/segmentacao/palavra/?texto=Qualqu er um pode escrever um código que o computador entenda. Bons programadores escrevem códigos que os humanos entendam.

Ao ser recebida uma requisição, o conteúdo do parâmetro “texto” é repassado para o módulo de Segmentacao. O módulo é responsável por executar o método que faz a segmentação do texto em palavras. O Quadro 22 apresenta o método responsável por segmentar um texto em palavras.

Quadro 22. Método responsável por segmentar um texto em palavras. def Segmentar(self,texto):

lista = word_tokenize(texto,language='portuguese') return lista

O texto é recebido pelo método Segmentar, da classe SegmentacaoPalavra, e passado como parâmetro para o word_tokenize, que gera uma lista contendo todas as palavras ou tokens do texto passado como parâmetro, prontas para serem retornadas como resposta a requisição. O Quadro 23 apresenta o retorno da requisição para o texto passado como exemplo acima.

Quadro 23. Retorno da requisição ao serviço de segmentação de texto em palavras para o texto de exemplo. [ { "token": "qualquer" }, { "token": "um" }, {

"token": "pode" }, { "token": "escrever" }, { "token": "um" }, { "token": "código" }, { "token": "que" }, { "token": "o" }, { "token": "computador" }, { "token": "entenda" }, { "token": "." }, { "token": "bons" }, { "token": "programadores" }, { "token": "escrevem" }, { "token": "códigos" }, { "token": "que" }, { "token": "os"

}, { "token": "humanos" }, { "token": "entendam" }, { "token": "." } ]

Para maiores informações sobre o word_tokenize é recomendado visitar o site oficial do NLTK, onde é possível encontrar todo o conjunto de recursos disponível em http://www.nltk.org/.