Mikä on paksuuntuminen luonnollisen kielen käsittelyssä?

Lähdesolmu: 1878431

Hyvät lukijat,

Tässä blogissa keskustelen chunkingista sekä teoreettisesti että käytännössä Pythonissa.

Joten aloitetaan…

HUOMAUTUS: Toteutuksessa on parempi käyttää Python IDLE:tä, koska tulos on piirros puusta, joka avautuu erilliseen ikkunaan.

esityslista

  • Mitä on chunking?
  • Missä murskaamista käytetään?
  • Purkamisen tyypit
  • Chunkingin toteutus Pythonissa
  • tulokset

Mitä on chunking?

Chunking määritellään luonnollisen kielen prosessointiprosessiksi, jota käytetään tietyssä lauseessa esiintyvien puheosien ja lyhyiden lauseiden tunnistamiseen.

Kun muistetaan vanhoja hyviä englannin kielioppituntejamme koulussa, huomaa, että puheessa on kahdeksan osaa eli substantiivi, verbi, adjektiivi, adverbi, prepositio, konjunktio, pronomini ja välilause. Myös yllä olevassa paloittelun määritelmässä lyhyet lauseet viittaavat lauseisiin, jotka on muodostettu sisällyttämällä mikä tahansa näistä puheenosista.

Chunking voidaan tehdä esimerkiksi substantiivilauseiden tai pelkkien substantiivien, adjektiivien tai adjektiivilauseiden ja niin edelleen tunnistamiseksi ja ryhmittämiseksi. Harkitse alla olevaa lausetta:

“Söin hampurilaisia ​​ja leivonnaisia ​​aamiaiseksi.”

Tässä tapauksessa, jos haluamme ryhmitellä tai lohkoa substantiivilauseita, saamme "hampurilaiset", "leivonnaiset" ja "lounas", jotka ovat lauseen substantiivit tai substantiiviryhmät.

Missä murskaamista käytetään?

Miksi haluaisimme oppia jotain tietämättä, missä sitä käytetään laajalti?! Blogin tässä osiossa käsiteltyjen sovellusten tarkastelu auttaa sinua pysymään uteliaana loppuun asti!

Chunkingilla saadaan tarvittavat lauseet tietystä lauseesta. POS-koodeja voidaan kuitenkin käyttää vain niiden puheenosien havaitsemiseen, joihin jokainen lauseen sana kuuluu.

Kun meillä on paljon kuvauksia tai muokkauksia tietyn sanan tai kiinnostavan lauseen ympärillä, käytämme paloittelua tarttuaksemme vaadittuun lauseeseen yksinään jättäen huomiotta sen ympärillä olevat muut. Siten paloittelu avaa tavan ryhmitellä vaaditut lauseet ja sulkea pois kaikki niiden ympärillä olevat muuntajat, jotka eivät ole välttämättömiä analyysillemme. Yhteenvetona voidaan todeta, että paloittelu auttaa erottamaan tärkeät sanat pitkistä kuvauksista. Siten paloittelu on askel tiedon talteenotossa.

Mielenkiintoista on, että tämä NLP:n paloitteluprosessi laajenee useisiin muihin sovelluksiin; esimerkiksi ryhmitellä tiettyyn kategoriaan kuuluvat hedelmät, esimerkiksi proteiinipitoiset hedelmät ryhmänä, vitamiinirikkaat hedelmät toisena ryhmänä ja niin edelleen. Lisäksi chunking-toiminnolla voidaan ryhmitellä samanlaisia ​​autoja, esimerkiksi automaattivaihteistoa tukevat autot yhteen ryhmään ja muut manuaalivaihteistoa tukevat autot toiseen ryhmään ja niin edelleen.

Purkamisen tyypit

Lajittelemista on yleisesti kahta tyyppiä:

  • Murskaamassa
  • Puristaa alas

Purkaminen:

Täällä emme sukelta syvälle; sen sijaan olemme tyytyväisiä pelkkään yleiskatsaukseen tiedoista. Se vain auttaa meitä saamaan lyhyen käsityksen annetuista tiedoista.

Purkaminen alas:

Toisin kuin edellinen paloittelu, paloittelu auttaa saamaan yksityiskohtaista tietoa.

Joten jos haluat vain näkemyksen, harkitse "paloittamista", muuten mieluummin "palastaminen".

Chunkingin toteutus Pythonissa

Kuvittele tilanne, jossa haluat poimia annetusta tekstistä kaikki verbit analyysiäsi varten. Siksi tässä tapauksessa meidän on otettava huomioon verbilauseiden lohkominen. Tämä johtuu siitä, että tavoitteemme on poimia kaikki verbilauseet annetusta tekstistä. Pyörittäminen tehdään säännöllisten lausekkeiden avulla.

Älä huoli, jos törmäät termiin "säännölliset lausekkeet" ensimmäistä kertaa. Alla oleva taulukko on tässä avuksesi:

Symboli

Merkitys

esimerkki

*

Edellinen merkki voi esiintyä nolla tai useammin, mikä tarkoittaa, että edellinen merkki voi olla tai ei.

ab* vastaa kaikkia syötteitä, jotka alkavat ab:lla ja sen jälkeen nolla tai useampia b:tä. Kuvio vastaa ab, abb, abbb ja niin edelleen.

+

Edellinen merkki tulee esiintyä vähintään kerran.

a+ vastaa a, aa, aaa ja niin edelleen.

?

Edellinen merkki ei välttämättä esiinny ollenkaan tai esiintyy vain kerran, mikä tarkoittaa, että edellinen merkki on valinnainen.

ab? vastaa ab,abb, mutta ei abbb ja niin edelleen.

Yllä oleva taulukko sisältää yleisimmät käytetyt säännölliset lausekkeet. Säännölliset lausekkeet ovat erittäin hyödyllisiä komentorivillä varsinkin tiedostojen poistamisen, paikantamisen, uudelleennimeämisen tai siirtämisen aikana.

Joka tapauksessa tässä toteutuksessa käytämme vain *. Voit vapaasti katsoa yllä olevaa taulukkoa tutustuaksesi symboliin!

Suoritamme paloittelun käyttämällä suosituinta NLP-kirjastoa nltk. Joten tuodaan se ensin.

tuonti nltk

Tarkastellaanpa alla olevaa esimerkkitekstiä, jonka olen luonut itse. Voit vapaasti korvata alla olevan mallitekstin, jonka haluat toteuttaa paloittelussa!

sample_text=""" Rama tappoi Ravanan pelastaakseen Sitan Lankasta. Ramayanin legenda on Intian suosituin eepos. Täällä Intiassa on jo kuvattu paljon elokuvia ja sarjoja useilla kielillä Ramayanan pohjalta. """

On selvää, että tiedot on muutettava lauseeseen ja sitten sanatokenisoitu ennen kuin jatkamme. Tokenisointi ei ole muuta kuin prosessi, jossa annettu tekstikappale hajotetaan pienemmiksi yksiköiksi, kuten lauseiksi, kun kyseessä on lause tokenisaatio, ja sanoiksi, kun kyseessä on sanamerkki.

Tokenisoinnin jälkeen kullekin sanalle tehdään POS-koodaus (osa-of-speech), jossa jokaisen sanan puheosa tunnistetaan. Nyt olemme kiinnostuneita vain verbistä puheosan ja haluamme poimia sen.

Tästä syystä määritä kiinnostava puheenosio käyttämällä vaadittua säännöllistä lauseketta seuraavasti:

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

Säännöllinen lauseke (RE) on suljettu kulmahakasulkeisiin(), jotka puolestaan ​​ovat kiharahakasulkeiden ({ ja }) sisällä.

HUOMAUTUS: Määritä RE vaaditun POS:n mukaan

VB tarkoittaa verbiä POS. VB:tä seuraava piste tarkoittaa, että se vastaa mitä tahansa VB:tä seuraavaa merkkiä. Kysymysmerkki pisteen jälkeen määrittää, että mikä tahansa merkki B:n jälkeen saa esiintyä vain kerran tai ei saa esiintyä ollenkaan. Kuitenkin taulukosta, jonka näimme aiemmin, tämä merkki on valinnainen. Olemme kehystäneet säännöllisen lausekkeen tällä tavalla, koska NLTK:ssa verbilauseet sisältävät seuraavat POS-tunnisteet:

POS

Merkitys

VB

Verbi perusmuodossaan

VBD

verbi menneisyydessä

GBV

verbi nykyisessä muodossaan

VBN

verbi menneen partisiipin muodossa

VBP

Verbi nykyisessä muodossaan, mutta ei yksikön kolmannessa persoonassa

VBZ

Verbi nykymuodossaan ja on yksikön kolmas henkilö

Siten verbilauseet voivat kuulua mihin tahansa yllä olevista myyntipisteistä. Siksi säännöllinen lauseke on kehystetty muotoon VB.? joka sisältää kaikki edellä mainitut luokat. RegexpParser-pakettia käytetään tarkistamaan, täyttääkö POS vaaditun mallimme, jonka olemme maininneet RE:n avulla.

Koko koodi voidaan nähdä seuraavasti:

import nltk nltk.download('averaged_perceptron_tagger') sample_text=""" Rama tappoi Ravanan pelastaakseen Sitan Lankasta. Ramayan-legenda on Intian suosituin eepos. Täällä on jo kuvattu paljon elokuvia ja sarjoja useilla kielillä Intiassa Ramajanan perusteella. """ 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()

tulokset

murskaava tulos
murskaava tulos

Lopuksi saamme puumuodon sanojen POS:sta sekä sanoista, joiden POS vastaa annettua RE:tä. Oheisista kuvista näkyy tilannekuva välittämämme näytetekstin tulosteesta.

Huomaa, että sanat, jotka tyydyttävät RE:mme pelkille verbilauseille, näkyvät selkeästi tulosteessa. Siksi verbilauseiden paloittelu on suoritettu onnistuneesti.

Toivottavasti artikkelini oli hyödyllinen.

Kiitos!

Viitteet

1. Panostuksen toteuttaminen Pythonissa

2. Teoria murskauksen takana

3. Täydellinen luettelo myyntipisteistä saatavilla NLP:ssä

About Me

Olen Nithyashree V, viimeisen vuoden BTech tietojenkäsittelytieteen ja tekniikan opiskelija. Rakastan tällaisten hienojen teknologioiden oppimista ja niiden soveltamista käytäntöön, varsinkin seurata kuinka ne auttavat meitä ratkaisemaan yhteiskunnan haastavia ongelmia. Kiinnostusalueitani ovat tekoäly, tietotiede ja luonnollisen kielen käsittely.

Tässä LinkedIn-profiilini: Oma LinkedIn

Voit lukea muita Analytics Vidhya -artikkeleitani osoitteesta tätä.

Tässä artikkelissa näkyvät mediat eivät ole Analytics Vidhyan omistuksessa, ja niitä käytetään tekijän harkinnan mukaan.

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

Aikaleima:

Lisää aiheesta Analyysi Vidhya