O que é Chunking no processamento de linguagem natural?

Nó Fonte: 1878431

Caros leitores,

Neste blog, discutirei o chunking tanto teórica quanto praticamente em Python.

Então, vamos começar…

NOTA: Para a implementação, é melhor usar o Python IDLE, pois a saída é o desenho de uma árvore que aparece em uma janela separada.

agenda

  • O que é fragmentação?
  • Onde o chunking é usado?
  • Tipos de fragmentação
  • Implementação de chunking em Python
  • Resultados

O que é fragmentação?

Chunking é definido como o processo de processamento de linguagem natural usado para identificar partes do discurso e frases curtas presentes em uma determinada frase.

Relembrando nossas boas e velhas aulas de gramática inglesa na escola, observe que existem oito classes gramaticais: substantivo, verbo, adjetivo, advérbio, preposição, conjunção, pronome e interjeição. Além disso, na definição de chunking acima, frases curtas referem-se às frases formadas pela inclusão de qualquer uma dessas classes gramaticais.

Por exemplo, o chunking pode ser feito para identificar e, assim, agrupar sintagmas nominais ou apenas substantivos, adjetivos ou sintagmas adjetivos e assim por diante. Considere a frase abaixo:

“Comi hambúrgueres e doces no café da manhã.”

Neste caso, se desejarmos agrupar ou fragmentar sintagmas nominais, obteremos “hambúrgueres”, “pastelaria” e “almoço” que são os substantivos ou grupos de substantivos da frase.

Onde o chunking é usado?

Por que quereríamos aprender algo sem saber onde é amplamente utilizado?! Observar os aplicativos discutidos nesta seção do blog ajudará você a ficar curioso até o fim!

Chunking é usado para obter as frases necessárias de uma determinada frase. No entanto, a marcação POS pode ser usada apenas para identificar as classes gramaticais às quais cada palavra da frase pertence.

Quando temos muitas descrições ou modificações em torno de uma palavra específica ou frase de nosso interesse, usamos chunking para capturar apenas a frase necessária, ignorando o resto ao seu redor. Conseqüentemente, o chunking abre um caminho para agrupar as frases necessárias e excluir todos os modificadores ao seu redor que não são necessários para nossa análise. Resumindo, o chunking nos ajuda a extrair apenas as palavras importantes de descrições extensas. Assim, chunking é uma etapa na extração de informações.

Curiosamente, este processo de chunking na PNL é estendido a várias outras aplicações; por exemplo, para agrupar frutas de uma categoria específica, digamos, frutas ricas em proteínas como um grupo, frutas ricas em vitaminas como outro grupo e assim por diante. Além disso, o chunking também pode ser usado para agrupar carros semelhantes, digamos, carros que suportam câmbio automático em um grupo e outros que suportam câmbio manual em outro pedaço e assim por diante.

Tipos de pedaços

Existem, basicamente, dois tipos de chunking:

  • Agregando
  • Desmembrando

Agrupando:

Aqui não mergulhamos fundo; em vez disso, ficamos satisfeitos com apenas uma visão geral das informações. Isso apenas nos ajuda a ter uma breve ideia dos dados fornecidos.

Desmontando:

Ao contrário do tipo anterior de chunking, o chunking nos ajuda a obter informações detalhadas.

Então, se você quer apenas uma visão, considere “dividir”, caso contrário, prefira “dividir”.

Implementação de chunking em Python

Imagine uma situação em que você deseja extrair todos os verbos de um determinado texto para sua análise. Assim, neste caso, devemos considerar a fragmentação de sintagmas verbais. Isso ocorre porque nosso objetivo é extrair todas as frases verbais de um determinado trecho de texto. O chunking é feito com a ajuda de expressões regulares.

Não se preocupe se for a primeira vez que você se depara com o termo “expressões regulares”. A tabela abaixo está aqui, para seu resgate:

Símbolo

Significado

Exemplo

*

O caractere anterior pode ocorrer zero ou mais vezes, o que significa que o caractere anterior pode ou não estar lá.

ab* corresponde a todas as entradas começando com ab e seguidas por zero ou mais números de b's. O padrão corresponderá a ab, abb, abbb e assim por diante.

+

O caractere anterior deve ocorrer pelo menos uma vez.

a+ corresponde a a,aa,aaa e assim por diante.

?

O caractere anterior pode não ocorrer ou ocorrer apenas uma vez, o que significa que o caractere anterior é opcional.

ah? corresponde a ab, abb, mas não abbb e assim por diante.

A tabela acima inclui as expressões regulares mais comuns usadas. Expressões regulares são muito úteis na linha de comando, especialmente ao excluir, localizar, renomear ou mover arquivos.

De qualquer forma, para esta implementação usaremos apenas *. Sinta-se à vontade para consultar a tabela acima para se familiarizar com o símbolo!

Estaremos realizando chunking usando nltk, a biblioteca de PNL mais popular. Então, vamos primeiro importá-lo.

importar nltk

Vamos considerar o texto de exemplo abaixo que criei sozinho. Sinta-se à vontade para substituir o texto abaixo por qualquer texto de exemplo que você queira implementar o chunking!

sample_text=""" Rama matou Ravana para salvar Sita de Lanka.A lenda do Ramayan é o épico indiano mais popular.Muitos filmes e seriados já foram filmados em vários idiomas aqui na Índia baseados no Ramayana. """

Claramente, os dados devem ser tokenizados por frase e, em seguida, tokenizados por palavra antes de prosseguirmos. A tokenização nada mais é do que o processo de dividir um determinado trecho de texto em unidades menores, como sentenças, no caso da tokenização de frases, e palavras, no caso da tokenização de palavras.

Seguida da tokenização, a marcação POS (classe gramatical) é feita para cada palavra, na qual a classe gramatical de cada palavra será identificada. Agora, estamos interessados ​​​​apenas na classe gramatical do verbo e desejamos extraí-la.

Portanto, especifique a classe gramatical de nosso interesse usando a expressão regular necessária da seguinte forma:

VB: {}

tokenized=nltk.sent_tokenize(sample_text) para i em tokenized: palavras=nltk.word_tokenize(i) # print(words) tagged_words=nltk.pos_tag(words) # print(tagged_words) chunkGram=r"""VB: {}" "" chunkParser=nltk.RegexpParser(chunkGram) chunked=chunkParser.parse(tagged_words) chunked.draw()

A expressão regular (RE) está entre colchetes angulares() que, por sua vez, estão entre colchetes ({ e }).

NOTA: Especifique o RE de acordo com o POS requerido

VB significa o verbo POS. O ponto após o VB significa corresponder a qualquer caractere após o VB. O ponto de interrogação após o ponto especifica que qualquer caractere após B deve ocorrer apenas uma vez ou não deve ocorrer de forma alguma. Porém, pela tabela que vimos anteriormente, este caractere é opcional. Enquadrámos a expressão regular desta forma porque, em NLTK, as frases verbais incluem as seguintes tags POS:

POS

Significado

VB

Verbo em sua forma básica

DTV

verbo no pretérito

GBV

verbo no presente

VBN

verbo em sua forma de particípio passado

VBP

Verbo no presente, mas não na terceira pessoa do singular

VBZ

Verbo no presente e na terceira pessoa do singular

Assim, as frases verbais podem pertencer a qualquer um dos POS acima. É por isso que a expressão regular é enquadrada como VB.? que inclui todas as categorias acima. O pacote RegexpParser é usado para verificar se um POS satisfaz nosso padrão exigido que mencionamos usando o RE anteriormente.

Todo o código pode ser visto da seguinte forma:

import nltk nltk.download('averaged_perceptron_tagger') sample_text=""" Rama matou Ravana para salvar Sita de Lanka.A lenda do Ramayan é o épico indiano mais popular.Muitos filmes e seriados já foram filmados em vários idiomas aqui na Índia com base no Ramayana. """ tokenized=nltk.sent_tokenize(sample_text) for i in tokenized: words=nltk.word_tokenize(i) # print(words) tagged_words=nltk.pos_tag(words) # print(tagged_words) chunkGram =r"""VB: {}""" chunkParser=nltk.RegexpParser(chunkGram) chunked=chunkParser.parse(tagged_words) chunked.draw()

Resultados

resultado da fragmentação
resultado da fragmentação

Por fim, obtemos uma forma de árvore do POS das palavras junto com as palavras cujo POS corresponde ao RE fornecido. O instantâneo da saída obtida para o texto de amostra por nós passado pode ser visto nas figuras acima.

Observe que as palavras que satisfazem nossa RE apenas para frases verbais são claramente destacadas na saída. Conseqüentemente, a fragmentação de frases verbais foi realizada com sucesso.

Espero que você tenha achado meu artigo útil.

Obrigado!

Referências

1. Implementando chunking em Python

2. Teoria por trás do chunking

3. Lista completa de PDV disponíveis em PNL

Sobre Mim

Eu sou Nithyashree V, estudante do último ano de Ciência da Computação e Engenharia da BTech. Adoro aprender tecnologias tão bacanas e colocá-las em prática, principalmente observar como elas nos ajudam a resolver problemas desafiadores da sociedade. Minhas áreas de interesse incluem Inteligência Artificial, Ciência de Dados e Processamento de Linguagem Natural.

Segue meu perfil no LinkedIn: Meu LinkedIn

Você pode ler meus outros artigos sobre Analytics Vidhya em SUA PARTICIPAÇÃO FAZ A DIFERENÇA.

A mídia mostrada neste artigo não é propriedade da Analytics Vidhya e é usada a critério do Autor.

Fonte: https://www.analyticsvidhya.com/blog/2021/10/what-is-chunking-in-natural-language-processing/

Carimbo de hora:

Mais de Análise Vidhya