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:
|
|
|
|
|
|
|
|
|
|
|
|
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:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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
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.
Fonte: https://www.analyticsvidhya.com/blog/2021/10/what-is-chunking-in-natural-language-processing/
- "
- 7
- Todos os Produtos
- análise
- analítica
- aplicações
- por aí
- artigo
- artigos
- inteligência artificial
- Blog
- Pequeno-Almoço
- carros
- código
- vinda
- comum
- Ciência da Computação
- dados,
- ciência de dados
- Engenharia
- Inglês
- Extração
- Primeiro nome
- primeira vez
- formulário
- Gratuito
- Acessorios
- Bom estado, com sinais de uso
- agarrar
- Gramática
- Grupo
- SUA PARTICIPAÇÃO FAZ A DIFERENÇA
- Destaque
- Como funciona o dobrador de carta de canal
- HTTPS
- idéia
- identificar
- Incluindo
- Índia
- INFORMAÇÕES
- extração de informação
- Inteligência
- interesse
- IT
- língua
- Idiomas
- APRENDER
- aprendizagem
- Biblioteca
- Line
- Lista
- gosta,
- marca
- Match
- Mídia
- Mais populares
- Filmes
- nomeadamente
- Linguagem Natural
- Processamento de linguagem natural
- PNL
- Outros
- Outros
- padrão
- Frases
- Popular
- PoS
- presente
- Perfil
- Python
- RE
- leitores
- DESCANSO
- Escola
- Ciência
- Baixo
- Instantâneo
- So
- RESOLVER
- Spot
- ficar
- estudante
- ajuda
- Tecnologias
- tempo
- tokenization
- us
- O que é a
- dentro
- palavras
- ano
- zero