Mi az a darabolás a természetes nyelvi feldolgozásban?

Forrás csomópont: 1878431

Tisztelt olvasók,

Ebben a blogban a darabolásról fogok beszélni, mind elméletileg, mind gyakorlatilag Pythonban.

Szóval, kezdjük…

JEGYZET: A megvalósításhoz jobb, ha a Python IDLE-t használjuk, mivel a kimenet egy fa rajza, amely egy külön ablakban jelenik meg.

napirend

  • Mi az a darabolás?
  • Hol használják a darabolást?
  • A darabolás típusai
  • A darabolás megvalósítása Pythonban
  • Eredmények

Mi az a darabolás?

A darabolást úgy definiálják, mint a természetes nyelvi feldolgozás folyamatát, amelyet az adott mondatban előforduló beszédrészek és rövid kifejezések azonosítására használnak.

Felidézve a régi jó angol nyelvtanóráinkat az iskolában, vegye figyelembe, hogy a beszédnek nyolc része van, nevezetesen a főnév, az ige, a melléknév, a határozószó, az elöljárószó, a kötőszó, a névmás és a közbeszólás. Ezenkívül a darabolás fenti definíciójában a rövid kifejezések azokra a kifejezésekre utalnak, amelyek ezen beszédrészek bármelyikének bevonásával keletkeznek.

Például a csonkolás elvégezhető a főnévi kifejezések vagy önmagában a főnevek, melléknevek vagy melléknévi kifejezések azonosítására és így csoportosítására stb. Fontolja meg az alábbi mondatot:

“Hamburgert és péksüteményeket ettem reggelire.”

Ebben az esetben, ha csoportosítani vagy darabolni akarunk főnévi kifejezéseket, akkor „hamburger”, „sütemény” és „ebéd” lesz, amelyek a mondat főnevei vagy főnévi csoportjai.

Hol használják a darabolást?

Miért akarnánk megtanulni valamit anélkül, hogy tudnánk, hol használják széles körben?! A blog ezen részében tárgyalt pályázatok áttekintése segít, hogy a végsőkig kíváncsi maradj!

A darabolást arra használjuk, hogy az adott mondatból kiolvassuk a szükséges kifejezéseket. A POS címkézés azonban csak azon beszédrészek észlelésére használható, amelyekhez a mondat minden szava tartozik.

Ha rengeteg leírást vagy módosítást tartalmaz egy adott szó vagy érdeklődésünkre számot tartó kifejezés, akkor a darabolást használjuk, hogy megragadjuk a kívánt kifejezést, figyelmen kívül hagyva a körülötte lévő többit. Ennélfogva a csonkolás lehetővé teszi a szükséges kifejezések csoportosítását és a körülöttük lévő összes olyan módosító kizárását, amelyek nem szükségesek az elemzésünkhöz. Összefoglalva, a darabolás segít abban, hogy a hosszú leírásokból kivonjuk a fontos szavakat. Így a darabolás az információkinyerés egyik lépése.

Érdekes módon ez a darabolási folyamat az NLP-ben számos más alkalmazásra is kiterjed; például csoportosítani egy bizonyos kategória gyümölcseit, mondjuk a fehérjében gazdag gyümölcsöket csoportként, a vitaminokban gazdag gyümölcsöket egy másik csoportként, és így tovább. Emellett a chunking segítségével a hasonló autókat is csoportosíthatjuk, mondjuk az automatikus sebességváltót támogató autókat egy csoportba, a többit pedig, amelyik támogatja a kézi fokozatot, egy másik csoportba, és így tovább.

A darabolás típusai

Alapvetően kétféle darabolás létezik:

  • Feldarabolás
  • Lefelé darabolás

Feldarabolás:

Itt nem merülünk mélyre; ehelyett csak az információk áttekintésének örülünk. Csak abban segít, hogy rövid képet kapjunk az adott adatokról.

Lebontás:

Az előző típusú darabolástól eltérően a darabolás segít részletes információk megszerzésében.

Tehát, ha csak betekintést szeretne kapni, fontolja meg a „feldarabolást”, különben inkább a „feldarabolást” részesítse előnyben.

A darabolás megvalósítása Pythonban

Képzeljen el egy olyan helyzetet, amelyben az összes igét ki szeretné bontani az adott szövegből az elemzéshez. Így ebben az esetben figyelembe kell vennünk az igei kifejezések darabolását. Ennek az az oka, hogy célunk az összes igei kifejezés kinyerése az adott szövegrészből. A darabolás reguláris kifejezések segítségével történik.

Ne aggódjon, ha először találkozik a „reguláris kifejezések” kifejezéssel. Az alábbi táblázat az Ön segítségére van:

Szimbólum

Jelentés

Példa

*

Az előző karakter nulla vagy több alkalommal fordulhat elő, ami azt jelenti, hogy az előző karakter lehet vagy nincs ott.

az ab* megfelel minden bemenetnek, amely az ab-vel kezdődik, majd nulla vagy több b-vel kezdődik. A minta megegyezik az ab, abb, abbb és így tovább.

+

Az előző karakternek legalább egyszer el kell fordulnia.

a+ egyezik a,aa,aaa és így tovább.

?

Előfordulhat, hogy az előző karakter egyáltalán nem, vagy csak egyszer fordul elő, ami azt jelenti, hogy az előző karakter nem kötelező.

ab? egyezik az ab,abb, de nem az abbb és így tovább.

A fenti táblázat a leggyakrabban használt reguláris kifejezéseket tartalmazza. A reguláris kifejezések nagyon hasznosak a parancssorban, különösen fájlok törlése, helymeghatározása, átnevezése vagy mozgatása során.

Mindenesetre ehhez a megvalósításhoz csak *-t fogunk használni. Nyugodtan tekintse meg a fenti táblázatot, hogy megismerje a szimbólumot!

A darabolást az nltk, a legnépszerűbb NLP könyvtár segítségével fogjuk végrehajtani. Tehát először importáljuk.

Import nltk

Tekintsük az alábbi minta szöveget, amelyet saját magam készítettem. Nyugodtan cserélje le az alábbi szöveget bármilyen minta szöveggel, amelyet a darabolás megvalósításához szeretne!

minta_szöveg=""
Rama megölte Ravanát, hogy megmentse Sitát Lankáról.A Ramayan legendája a legnépszerűbb indiai eposz.Sok film és sorozat készült már
Több nyelven is leforgatták itt Indiában a Rámájána alapján. """

Nyilvánvaló, hogy az adatokat mondattokenizálni kell, majd szót kell tokenizálni, mielőtt folytatnánk. A tokenizálás nem más, mint az adott szövegrész apróbb egységekre, például mondatokra bontásának folyamata, a mondat tokenizálása és a szavak esetében, szó tokenizálása esetén.

A tokenizálást követően minden szóhoz POS (szórész) címkézés történik, amelyben minden szó beszédrésze azonosításra kerül. Most csak a szórész ige érdekel minket, és ezt szeretnénk kivonni.

Ezért adja meg a számunkra érdekes beszédrészt a szükséges reguláris kifejezés használatával az alábbiak szerint:

VB: {}

tokenized=nltk.sent_tokenize(minta_szöveg)
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()

A reguláris kifejezés(RE) szögletes zárójelek() közé van zárva, amelyek viszont göndör zárójelek ({ és }) közé vannak zárva.

JEGYZET: Adja meg az RE-t a kívánt POS szerint

A VB a POS igét jelenti. A VB-t követő pont azt jelenti, hogy a VB-t követő bármely karakter megegyezik. A pont utáni kérdőjel azt jelzi, hogy a B utáni bármely karakter csak egyszer fordulhat elő, vagy egyáltalán nem fordulhat elő. A korábban látott táblázatból azonban ez a karakter nem kötelező. A reguláris kifejezést így alakítottuk ki, mert az NLTK-ban az igei kifejezések a következő POS címkéket tartalmazzák:

POS

Jelentés

VB

Ige alapformájában

VBD

ige múlt idejében

GBV

ige jelen idejében

VBN

ige múlt igei alakjában

VBP

Ige jelen idejében, de nem egyes szám harmadik személyben

VBZ

Ige jelen idejében, egyes szám harmadik személyben

Így az igei kifejezések a fenti POS-ok bármelyikéhez tartozhatnak. Ezért van a reguláris kifejezés VB.? amely az összes fenti kategóriát tartalmazza. A RegexpParser csomag annak ellenőrzésére szolgál, hogy egy POS megfelel-e a szükséges mintánknak, amelyet korábban az RE használatával említettünk.

A teljes kód a következőképpen tekinthető meg:

import nltk
nltk.download('averaged_perceptron_tagger')
minta_szöveg=""
Rama megölte Ravanát, hogy megmentse Sitát Lankáról.A Ramayan legendája a legnépszerűbb indiai eposz.Sok film és sorozat készült már
Több nyelven is leforgatták itt Indiában a Rámájána alapján. """
tokenized=nltk.sent_tokenize(minta_szöveg)
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()

Eredmények

darabos eredmény
darabos eredmény

Végül megkapjuk a szavak POS-jának faformáját, valamint azokat a szavakat, amelyek POS-ja megegyezik az adott RE-vel. Az általunk átadott minta szöveghez kapott kimenet pillanatképe a fenti ábrákon látható.

Figyelje meg, hogy azok a szavak, amelyek az igei kifejezésekre vonatkozó RE-nket kielégítik, egyértelműen kiemelve vannak a kimenetben. Ezért az igei kifejezések darabolása sikeresen megtörtént.

Remélem hasznosnak találtad a cikkem.

Köszönjük!

Referenciák

1. A darabolás megvalósítása Pythonban

2. Elmélet a darabolás mögött

3. Az NLP-ben elérhető POS-ok teljes listája

Magamról

Nithyashree V vagyok, egy utolsó éves BTech számítástechnikai és mérnöki hallgató. Szeretek ilyen klassz technológiákat tanulni és a gyakorlatba átültetni, különösen, ha megfigyelem, hogyan segítenek megoldani a társadalom kihívásait. Érdeklődési területem a mesterséges intelligencia, az adattudomány és a természetes nyelv feldolgozása.

Íme a LinkedIn profilom: Saját LinkedIn

Az Analytics Vidhyáról szóló további cikkeimet elolvashatja itt.

A cikkben bemutatott média nem az Analytics Vidhya tulajdona, és a Szerző belátása szerint használja azokat.

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

Időbélyeg:

Még több Analytics Vidhya