Cari lettori,
In questo blog, parlerò del chunking sia teoricamente che praticamente in Python.
Allora, cominciamo...
NOTA: Per l'implementazione, è meglio usare Python IDLE poiché l'output è un disegno di un albero che si apre in una finestra separata.
Diaro
- Cos'è il chunking?
- Dove viene utilizzato il chunking?
- Tipi di chunking
- Implementazione del chunking in Python
- Risultati
Cos'è il chunking?
Chunking è definito come il processo di elaborazione del linguaggio naturale utilizzato per identificare parti del discorso e brevi frasi presenti in una data frase.
Ricordando le nostre buone vecchie lezioni di grammatica inglese a scuola, nota che ci sono otto parti del discorso: nome, verbo, aggettivo, avverbio, preposizione, congiunzione, pronome e interiezione. Inoltre, nella precedente definizione di chunking, le frasi brevi si riferiscono alle frasi formate includendo una qualsiasi di queste parti del discorso.
Ad esempio, il chunking può essere eseguito per identificare e quindi raggruppare frasi nominali o solo nomi, aggettivi o frasi aggettivi e così via. Considera la frase seguente:
"Ho mangiato hamburger e pasticcini per colazione."
In questo caso, se vogliamo raggruppare o spezzettare frasi nominali, otterremo “burgers”, “pasties” e “lunch” che sono i sostantivi o gruppi di sostantivi della frase.
Dove viene utilizzato il chunking?
Perché dovremmo voler imparare qualcosa senza sapere dove è ampiamente usato?! Guardare le applicazioni discusse in questa sezione del blog ti aiuterà a rimanere curioso fino alla fine!
Chunking viene utilizzato per ottenere le frasi richieste da una data frase. Tuttavia, il POS tagging può essere utilizzato solo per individuare le parti del discorso a cui appartiene ogni parola della frase.
Quando abbiamo un sacco di descrizioni o modifiche attorno a una particolare parola o frase di nostro interesse, usiamo il chunking per afferrare solo la frase richiesta, ignorando il resto intorno ad essa. Quindi, il chunking apre un modo per raggruppare le frasi richieste ed escludere tutti i modificatori attorno ad esse che non sono necessari per la nostra analisi. Riassumendo, il chunking ci aiuta a estrarre solo le parole importanti da lunghe descrizioni. Pertanto, il chunking è un passaggio nell'estrazione delle informazioni.
È interessante notare che questo processo di suddivisione in blocchi nella PNL è esteso a varie altre applicazioni; ad esempio, per raggruppare i frutti di una categoria specifica, ad esempio frutti ricchi di proteine come gruppo, frutti ricchi di vitamine come altro gruppo e così via. Inoltre, il chunking può essere utilizzato anche per raggruppare auto simili, ad esempio auto che supportano il cambio automatico in un gruppo e le altre che supportano il cambio manuale in un altro blocco e così via.
Tipi di Chunking
Ci sono, in linea di massima, due tipi di chunking:
- A pezzi
- Abbattere
Raggruppamento:
Qui non ci immergiamo in profondità; invece, siamo contenti solo di una panoramica delle informazioni. Ci aiuta solo a farci una breve idea dei dati forniti.
Abbattere:
A differenza del precedente tipo di chunking, il chunking down ci aiuta a ottenere informazioni dettagliate.
Quindi, se vuoi solo un'idea, considera "chunking up" altrimenti preferisci "chunking down".
Implementazione del chunking in Python
Immagina una situazione in cui desideri estrarre tutti i verbi dal testo dato per la tua analisi. Quindi, in questo caso, dobbiamo considerare il chunking delle frasi verbali. Questo perché il nostro obiettivo è quello di estrarre tutte le frasi verbali da un determinato pezzo di testo. Chunking è fatto con l'aiuto di espressioni regolari.
Non preoccuparti se è la prima volta che ti imbatti nel termine “espressioni regolari”. La tabella sottostante è qui, in tuo soccorso:
|
|
|
|
|
|
|
|
|
|
|
|
La tabella sopra include le espressioni regolari più comuni utilizzate. Le espressioni regolari sono molto utili nella riga di comando, specialmente durante l'eliminazione, l'individuazione, la ridenominazione o lo spostamento di file.
Ad ogni modo, per questa implementazione, useremo solo *. Sentiti libero di guardare la tabella sopra per familiarizzare con il simbolo!
Eseguiremo il chunking utilizzando nltk, la libreria NLP più popolare. Quindi, prima importiamolo.
importa nltk
Consideriamo il testo di esempio qui sotto che ho creato da solo. Sentiti libero di sostituire quanto segue con qualsiasi testo di esempio che ti piace per implementare il chunking!
sample_text=""" Rama ha ucciso Ravana per salvare Sita da Lanka. La leggenda del Ramayan è l'epopea indiana più popolare. Molti film e serie sono già stati girati in diverse lingue qui in India basati sul Ramayana. """
Chiaramente, i dati devono essere tokenizzati in frasi e poi tokenizzati in parole prima di procedere. La tokenizzazione non è altro che il processo di scomposizione del dato pezzo di testo in unità più piccole come frasi, nel caso della tokenizzazione della frase e parole, nel caso della tokenizzazione della parola.
Seguito dalla tokenizzazione, viene eseguita la codifica POS (parte del discorso) per ogni parola, in cui verrà identificata la parte del discorso di ogni parola. Ora, siamo interessati solo al verbo parte del discorso e desideriamo estrarlo.
Quindi, specificare la parte del discorso di nostro interesse utilizzando l'espressione regolare richiesta come segue:
Verb: {}
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()
L'espressione regolare (RE) è racchiusa tra parentesi angolari() che a loro volta sono racchiuse tra parentesi graffe ({ e }).
NOTA: Specificare il RE in base al POS richiesto
VB sta per il verbo POS. Il punto che segue VB significa corrispondere a qualsiasi carattere che segue VB. Il punto interrogativo dopo il punto specifica che qualsiasi carattere dopo la B deve comparire una sola volta o non deve comparire affatto. Tuttavia, dalla tabella che abbiamo visto in precedenza, questo carattere è opzionale. Abbiamo inquadrato l'espressione regolare in questo modo perché, in NLTK, le frasi verbali includono i seguenti tag POS:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Pertanto, le frasi verbali possono appartenere a uno qualsiasi dei POS di cui sopra. Ecco perché l'espressione regolare è inquadrata come VB.? che comprende tutte le categorie di cui sopra. Il pacchetto RegexpParser viene utilizzato per verificare se un POS soddisfa il nostro modello richiesto che abbiamo menzionato utilizzando la RE in precedenza.
L'intero codice può essere visto come segue:
import nltk nltk.download('averaged_perceptron_tagger') sample_text=""" Rama ha ucciso Ravana per salvare Sita da Lanka. La leggenda del Ramayan è l'epopea indiana più popolare. Molti film e serie sono già stati girati qui in diverse lingue in India basato sul 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(parole con tag) chunked.draw()
Risultati
Infine, otteniamo una forma ad albero del POS delle parole insieme alle parole il cui POS corrisponde alla data RE. L'istantanea dell'output ottenuto per il testo di esempio passato da noi può essere vista nelle figure sopra.
Osserva che le parole che soddisfano la nostra RE per le sole frasi verbali sono chiaramente evidenziate nell'output. Quindi, il chunking delle frasi verbali è stato eseguito con successo.
Spero che tu abbia trovato utile il mio articolo.
Grazie!
Riferimenti
1. Implementare il chunking in Python
2. Teoria alla base del chunking
3. Elenco completo dei POS disponibili in PNL
Chi Sono
Sono Nithyashree V, una studentessa dell'ultimo anno di BTech Computer Science and Engineering. Adoro imparare queste fantastiche tecnologie e metterle in pratica, in particolare osservando come ci aiutano a risolvere i difficili problemi della società. Le mie aree di interesse includono l'Intelligenza Artificiale, la Scienza dei Dati e l'Elaborazione del Linguaggio Naturale.
Ecco il mio profilo LinkedIn: Il mio Linkedin
Puoi leggere i miei altri articoli su Analytics Vidhya da qui.
Fonte: https://www.analyticsvidhya.com/blog/2021/10/what-is-chunking-in-natural-language-processing/
- "
- 7
- Tutti
- .
- analitica
- applicazioni
- in giro
- articolo
- news
- intelligenza artificiale
- Blog
- Colazione
- auto
- codice
- arrivo
- Uncommon
- Informatica
- dati
- scienza dei dati
- Ingegneria
- Inglese
- estrazione
- Nome
- prima volta
- modulo
- Gratis
- ingranaggio
- buono
- afferrare
- Grammatica
- Gruppo
- qui
- Evidenziato
- Come
- HTTPS
- idea
- identificare
- Compreso
- India
- informazioni
- estrazione di informazioni
- Intelligence
- interesse
- IT
- Lingua
- Le Lingue
- IMPARARE
- apprendimento
- Biblioteca
- linea
- Lista
- amore
- marchio
- partita
- Media
- Più popolare
- Film
- cioè
- Linguaggio naturale
- Elaborazione del linguaggio naturale
- nlp
- Altro
- Altri
- Cartamodello
- Frasi
- Popolare
- PoS
- presenti
- Profilo
- Python
- RE
- lettori
- REST
- di moto
- Scienze
- Corti
- Istantanea
- So
- RISOLVERE
- Spot
- soggiorno
- studente
- supporto
- Tecnologie
- tempo
- tokenizzazione
- us
- Che cosa è l'
- entro
- parole
- anno
- zero