Hva er Chunking i behandling av naturspråk?

Kilde node: 1878431

Kjære lesere,

I denne bloggen vil jeg diskutere chunking både teoretisk og praktisk i Python.

Så la oss begynne...

NOTAT: For implementeringen er det bedre å bruke Python IDLE da utgangen er en tegning av et tre som dukker opp i et eget vindu.

agenda

  • Hva er chunking?
  • Hvor brukes chunking?
  • Typer chunking
  • Implementering av chunking i Python
  • Resultater

Hva er chunking?

Chunking er definert som prosessen med naturlig språkbehandling som brukes til å identifisere deler av tale og korte fraser som er tilstede i en gitt setning.

Med tanke på våre gode gamle engelske grammatikkklasser på skolen, merk at det er åtte orddeler, nemlig substantiv, verb, adjektiv, adverb, preposisjon, konjunksjon, pronomen og interjeksjon. I den ovennevnte definisjonen av chunking refererer korte setninger til setningene som dannes ved å inkludere noen av disse delene av talen.

For eksempel kan chunking gjøres for å identifisere og dermed gruppere substantivfraser eller substantiv alene, adjektiver eller adjektivfraser, og så videre. Tenk på setningen nedenfor:

“Jeg hadde burgere og bakverk til frokost.”

I dette tilfellet, hvis vi ønsker å gruppere eller dele substantivfraser, vil vi få "burgere", "bakverk" og "lunsj", som er substantivene eller substantivgruppene i setningen.

Hvor brukes chunking?

Hvorfor skulle vi ønske å lære noe uten å vite hvor det er mye brukt?! Å se på applikasjonene som er omtalt i denne delen av bloggen vil hjelpe deg å holde deg nysgjerrig til slutten!

Chunking brukes til å få de nødvendige frasene fra en gitt setning. Imidlertid kan POS-tagging bare brukes til å oppdage de delene av tale som hvert ord i setningen tilhører.

Når vi har massevis av beskrivelser eller modifikasjoner rundt et bestemt ord eller uttrykket vi er interessert i, bruker vi chunking for å ta den nødvendige frasen alene, og ignorerer resten rundt det. Derfor baner chunking en måte å gruppere de nødvendige frasene og ekskludere alle modifikatorene rundt dem som ikke er nødvendige for vår analyse. Oppsummert hjelper chunking oss å trekke ut de viktige ordene alene fra lange beskrivelser. Dermed er chunking et trinn i informasjonsutvinning.

Interessant nok er denne prosessen med chunking i NLP utvidet til forskjellige andre applikasjoner; for eksempel å gruppere frukt av en bestemt kategori, for eksempel frukt rik på proteiner som en gruppe, frukt rik på vitaminer som en annen gruppe, og så videre. Dessuten kan chunking også brukes til å gruppere lignende biler, for eksempel biler som støtter automatisk gir i én gruppe og de andre som støtter manuelt gir i en annen del og så videre.

Typer Chunking

Det er stort sett to typer chunking:

  • Klumper opp
  • Klumper ned

Kutt opp:

Her dykker vi ikke dypt; i stedet er vi fornøyd med bare en oversikt over informasjonen. Det hjelper oss bare å få en kort ide om de gitte dataene.

Kutt ned:

I motsetning til den forrige typen chunking, hjelper chunking oss å få detaljert informasjon.

Så hvis du bare vil ha et innblikk, vurder "klumping opp", ellers foretrekk "klumping ned".

Implementering av chunking i Python

Se for deg en situasjon der du vil trekke ut alle verbene fra den gitte teksten for analysen din. Derfor, i dette tilfellet, må vi vurdere oppdelingen av verbfraser. Dette er fordi målet vårt er å trekke ut alle verbfraser fra den gitte teksten. Chunking gjøres ved hjelp av regulære uttrykk.

Ikke bekymre deg hvis det er første gang du kommer over begrepet "vanlige uttrykk". Tabellen nedenfor er her, til din unnsetning:

symbol

Betydning

Eksempel

*

Det foregående tegnet kan forekomme null eller flere ganger, noe som betyr at det foregående tegnet kan være der eller ikke.

ab* matcher alle innganger som starter med ab og deretter etterfulgt av null eller flere antall b-er. Mønsteret vil matche ab, abb, abbb og så videre.

+

Det foregående tegnet bør forekomme minst én gang.

a+ samsvarer med a,aa,aaa og så videre.

?

Det foregående tegnet forekommer kanskje ikke i det hele tatt eller forekommer bare én gang, noe som betyr at det foregående tegnet er valgfritt.

ab? matcher ab,abb men ikke abbb og så videre.

Tabellen ovenfor inkluderer de vanligste regulære uttrykkene som brukes. Regulære uttrykk er veldig nyttige på kommandolinjen, spesielt når du sletter, finner, gir nytt navn eller flytter filer.

Uansett, for denne implementeringen vil vi bare bruke *. Se gjerne på tabellen ovenfor for å gjøre deg kjent med symbolet!

Vi skal utføre chunking ved å bruke nltk, det mest populære NLP-biblioteket. Så la oss først importere den.

importer nltk

La oss vurdere eksempelteksten nedenfor som jeg laget på egen hånd. Erstatt gjerne nedenstående med hvilken som helst eksempeltekst du liker for å implementere chunking!

sample_text=""" Rama drepte Ravana for å redde Sita fra Lanka. Legenden om Ramayan er det mest populære indiske eposet. Mange filmer og serier har allerede blitt spilt inn på flere språk her i India basert på Ramayana. """

Det er klart at dataene må setningssymboliseres og deretter ordsymboliseres før vi fortsetter. Tokenisering er ikke annet enn prosessen med å bryte ned det gitte tekststykket i mindre enheter som setninger, når det gjelder setningstokenisering og ord, når det gjelder ordtokenisering.

Etterfulgt av tokenisering gjøres POS (ordedel) tagging for hvert ord, der orddelen til hvert ord vil bli identifisert. Nå er vi bare interessert i verbet del av tale og ønsker å trekke ut det samme.

Spesifiser derfor orddelen av vår interesse ved å bruke det nødvendige regulære uttrykket som følger:

VB: {}

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()

Det regulære uttrykket(RE) er omsluttet av kantede parenteser() som igjen er omsluttet av krøllede parenteser({ og ​​}).

NOTAT: Spesifiser RE i henhold til den nødvendige POS

VB står for verbet POS. Punktet som følger VB betyr å matche ethvert tegn som følger VB. Spørsmålstegnet etter prikken spesifiserer at tegn etter B bare må forekomme én gang eller ikke må forekomme i det hele tatt. Men fra tabellen som vi så tidligere, er denne karakteren valgfri. Vi har rammet inn det regulære uttrykket på denne måten fordi verbfraser i NLTK inkluderer følgende POS-tagger:

POS

Betydning

VB

Verb i sin grunnform

VBD

verb i preteritum

GBV

verb i nåtid

VBN

verb i sin partisippform

VBP

Verb i nåtid, men ikke i tredje person entall

VBZ

Verb i nåtid og er tredje person entall

Dermed kan verbfraser tilhøre hvilken som helst av de ovennevnte POS. Det er derfor det regulære uttrykket er innrammet som VB.? som inkluderer alle de ovennevnte kategoriene. RegexpParser-pakken brukes til å sjekke om en POS tilfredsstiller vårt nødvendige mønster som vi har nevnt ved å bruke RE tidligere.

Hele koden kan sees som følger:

import nltk nltk.download('averaged_perceptron_tagger') sample_text=""" Rama drepte Ravana for å redde Sita fra Lanka. Legenden om Ramayan er det mest populære indiske eposet. Mange filmer og serier er allerede spilt inn på flere språk her i India basert på 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()

Resultater

chunking resultat
chunking resultat

Til slutt får vi en treform av ordenes POS sammen med ordene hvis POS samsvarer med den gitte RE. Øyeblikksbildet av utdataene som er oppnådd for eksempelteksten som er sendt av oss, kan sees i figurene ovenfor.

Legg merke til at ordene som tilfredsstiller vår RE for verbfraser alene, er tydelig fremhevet i utdataene. Derfor har chunking av verbfraser blitt utført vellykket.

Håper du fant artikkelen min nyttig.

Takk skal du ha!

Referanser

1. Implementering av chunking i Python

2. Teori bak chunking

3. Full liste over POS tilgjengelig i NLP

Om meg

Jeg er Nithyashree V, en siste års BTech informatikk- og ingeniørstudent. Jeg elsker å lære så kule teknologier og sette dem ut i livet, spesielt å observere hvordan de hjelper oss med å løse samfunnets utfordrende problemer. Mine interesseområder inkluderer kunstig intelligens, datavitenskap og naturlig språkbehandling.

Her er min LinkedIn-profil: Min LinkedIn

Du kan lese mine andre artikler om Analytics Vidhya fra her..

Mediene vist i denne artikkelen eies ikke av Analytics Vidhya og brukes etter forfatterens skjønn.

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

Tidstempel:

Mer fra Analytics Vidhya