A természetes nyelvfeldolgozás a gépi tanulás egyik aspektusa, amely lehetővé teszi az írott szavak gépbarát nyelvvé történő feldolgozását. Az ilyen szövegek ezután módosíthatóvá válnak, és tetszés szerint számítási algoritmusokat futtathat rajtuk.
Ennek a lebilincselő technológiának a logikája összetettnek tűnik, de nem az. És még most is, ha alaposan megérti az alapvető Python programozást, újszerű DIY szövegszerkesztőt hozhat létre a természetes nyelvi eszköztárral (NLTK).
Így kezdheti el a Python NLTK használatát.
Mi az NLTK és hogyan működik?
A Python segítségével írt NLTK számos karakterlánc -kezelési funkciót tartalmaz. Ez egy sokoldalú természetes nyelvű könyvtár, amely hatalmas modelltárral rendelkezik különféle természetes nyelvi alkalmazásokhoz.
Az NLTK segítségével nyers szövegeket dolgozhat fel, és érdemi funkciókat vonhat ki belőlük. Szövegelemző modelleket, funkcióalapú nyelvtanokat és gazdag lexikai forrásokat is kínál a teljes nyelvi modell létrehozásához.
Az NLTK beállítása
Először hozzon létre egy projekt gyökérmappáját a számítógépén. Az NLTK könyvtár használatának megkezdéséhez nyissa meg a terminált a korábban létrehozott gyökérmappához és hozzon létre egy virtuális környezetet.
Ezután telepítse a természetes nyelvi eszköztárat ebbe a környezetbe csipog:
pip install nltk
Az NLTK azonban számos olyan adatkészletet tartalmaz, amelyek új természetes nyelvi modellek alapjául szolgálnak. Hozzáférésükhöz fel kell pörgetni az NLTK beépített adatletöltőt.
Tehát, miután sikeresen telepítette az NLTK -t, nyissa meg a Python -fájlt bármilyen kódszerkesztővel.
Ezután importálja a nltk modul és az adatletöltő példányosítása a következő kód használatával:
pip install nltk
nltk.download ()
A fenti kód terminálon történő futtatása grafikus felhasználói felületet hoz létre az adatcsomagok kiválasztásához és letöltéséhez. Itt ki kell választania egy csomagot, majd kattintson a gombra Letöltés gombot, hogy megkapja.
Bármilyen letöltött adatcsomag a megadott könyvtárba kerül Könyvtár letöltése terület. Ezt megváltoztathatja, ha úgy tetszik. De próbálja meg ezen a szinten tartani az alapértelmezett helyet.
Összefüggő: A legjobb ingyenes kódszerkesztők az első alkalmazás megírásához
Jegyzet: Az adatcsomagok alapértelmezés szerint hozzáfűződnek a rendszerváltozókhoz. Tehát továbbra is használhatja őket a későbbi projektekhez, függetlenül a használt Python környezettől.
Az NLTK tokenizátorok használata
Végül az NLTK képzett tokenizáló modelleket kínál a szavakhoz és a mondatokhoz. Ezen eszközök használatával szavak listáját hozhatja létre egy mondatból. Vagy alakítson át egy bekezdést értelmes mondattömbré.
Íme egy példa az NLTK használatára word_tokenizer:
import nltk
az nltk.tokenize -ből import word_tokenize
word = "Ez egy példaszöveg"
tokenWord = word_tokenizer (szó)
nyomtatás (tokenWord)
Kimenet:
['Ez', 'az', 'egy', 'példa', 'szöveg']
Az NLTK egy előre betanított mondat tokenizátort is használ PunktSentenceTokenizer. Ez úgy működik, hogy egy bekezdést mondatok listájába darabol.
Nézzük meg, hogyan működik ez egy két mondatos bekezdéssel:
import nltk
az nltk.tokenize -ből import word_tokenize, PunktSentenceTokenizer
mondat = "Ez egy példaszöveg. Ez egy oktatóanyag az NLTK számára "
token = PunktSentenceTokenizer ()
tokenized_sentence = token.tokenize (mondat)
nyomtatás (tokenized_sentence)
Kimenet:
['Ez egy példaszöveg.', 'Ez egy oktatóanyag az NLTK számára']
A fenti kódból létrehozott tömb minden mondatát tovább tokenizálhatja a használatával word_tokenizer és Python for loop.
Példák az NLTK használatára
Tehát bár nem tudjuk bemutatni az NLTK összes lehetséges alkalmazási esetét, íme néhány példa arra, hogyan kezdheti el használni a valós problémák megoldására.
Szerezd meg a szómeghatározásokat és azok beszédrészeit
Az NLTK modelleket tartalmaz a beszédrészek meghatározására, a részletes szemantika megszerzésére és a különböző szavak esetleges kontextuális használatára.
Használhatja a wordnet modell változók generálására egy szöveghez. Ezután határozza meg annak jelentését és a beszéd részét.
Például nézzük meg a "Monkey" lehetséges változóit:
import nltk
az nltk.corpus -ból importálja a wordnetet wn -ként
print (wn.synsets ('majom'))
Kimenet:
[Synset ('monkey.n.01'), Synset ('imp.n.02'), Synset ('tamper.v.01'), Synset ('putter.v.02']]
A fenti kód a "Majom" lehetséges szó alternatíváit vagy szintaxisait és beszédrészeit adja ki.
Most ellenőrizze a "majom" jelentését a meghatározás módszer:
Majom = wn.synset ('majom.n.01'). Definíció ()
Kimenet:
a különböző hosszúfarkú főemlősök bármelyike (a prosimánok kivételével)
A zárójelben lévő karakterláncot más generált alternatívákkal helyettesítheti, hogy megtudja, milyen NLTK kimenetek.
Az pos_tag modell azonban meghatározza a szó beszédrészeit. Ezt használhatja a word_tokenizer vagy PunktSentenceTokenizer () ha hosszabb bekezdésekkel foglalkozol.
Ez így működik:
import nltk
az nltk.tokenize -ből import word_tokenize, PunktSentenceTokenizer
word = "Ez egy példaszöveg. Ez egy oktatóanyag az NLTK -ról "
token = PunktSentenceTokenizer ()
tokenized_sentence = token.tokenize (szó)
i -re tokenized_sentence:
tokenWordArray = word_tokenize (i)
partsOfSpeech = nltk.pos_tag (tokenWordArray)
nyomtatás (partsOfSpeech)
Kimenet:
[('Ez', 'DT'), ('is', 'VBZ'), ('an', 'DT'), ('példa', 'NN'), ('szöveg', 'NN'), ('.', '.')]
[('Ez', 'DT'), ('is', 'VBZ'), ('a', 'DT'), ('tutorial', 'JJ'), ('on', 'IN'), („NLTK”, „NNP”)]
A fenti kód párosítja az összes tokenizált szót a beszédcímkéjével. Ellenőrizheti a címkék jelentését Penn Treebank.
A tisztább eredmény érdekében eltávolíthatja a periódusokat a kimenetből a cserélni () módszer:
i -re tokenized_sentence:
tokenWordArray = word_tokenize (i.helyettesítés ('.', ''))
partsOfSpeech = nltk.pos_tag (tokenWordArray)
nyomtatás (partsOfSpeech)
Tisztító kimenet:
[('Ez', 'DT'), ('is', 'VBZ'), ('an', 'DT'), ('példa', 'NN'), ('szöveg', 'NN') ]
[('Ez', 'DT'), ('is', 'VBZ'), ('a', 'DT'), ('tutorial', 'JJ'), ('on', 'IN'), („NLTK”, „NNP”)]
A funkciótrendek megjelenítése az NLTK Plot használatával
A funkciók kinyerése a nyers szövegekből gyakran unalmas és időigényes. De az NLTK gyakorisági eloszlási trenddiagram segítségével megtekintheti a szöveg legerősebb jellemzőmeghatározóit.
Az NLTK azonban szinkronizál matplotlib. Ezt kihasználva megtekintheti az adatok egy bizonyos tendenciáját.
Az alábbi kód például összehasonlítja a pozitív és negatív szavak halmazát az elosztási ábrán az utolsó két ábécéjük használatával:
import nltk
nltk importálásából ConditionalFreqDist
A negatív és pozitív szavak listája:
negatívok = [
„abnormális”, „megszüntet”, „utálatos”,
'utálatosan', 'utálatosan', 'utálatosan'
]
pozitív = [
'bő', 'bővelkedik', 'bőség',
„bőséges”, „hozzáférhető”, „hozzáférhető”
]
# Ossza fel az egyes tömb elemeit címkézett tupple párokra
# és kombinálja mindkét tömböt:
pos_negData = ([(("negatív", neg) negatív esetén negatív esetén++(("pozitív", pos) pozitív esetén pozitív esetén))
# Kivonja az utolsó két ábécét a kapott tömbből:
f = ((pos, i [-2:],) for (pos, i) in pos_negData)
# Hozzon létre elosztási rajzot ezekből az ábécékből
cfd = ConditionalFreqDist (f)
cfd.plot ()
Az ábécé elosztási rajza így néz ki:
Ha alaposan megnézzük a grafikont, a szavak végződnek ce, ds, le, nd, és nt nagyobb valószínűséggel lesznek pozitív szövegek. De azokkal végződőket al, ly, tovább, és te inkább negatív szavak.
jegyzet: Bár itt saját generált adatokat használtunk, az NLTK beépített adatkészleteinek egy részét a Corpus olvasójával elérheti, ha felhívja őket a korpusz Osztálya nltk. Érdemes megnézni a korpuszcsomag dokumentációja hogy lássa, hogyan tudja használni.
Az olyan technológiák megjelenésével, mint az Alexa, a levélszemét-felismerés, a chatbotok, a hangulat-elemzés és még sok más, úgy tűnik, a természetes nyelvfeldolgozás az ember alatti fázisába fejlődik. Bár ebben a cikkben csak néhány példát vettünk figyelembe az NLTK kínálatában, az eszköz fejlettebb alkalmazásokkal rendelkezik, amelyek magasabbak, mint az oktatóanyag.
Miután elolvasta ezt a cikket, jó ötlete lehet az NLTK alapszintű használatáról. Most már nem kell mást tennie, mint ezt a tudást maga is cselekedni!
Érdekel a gépi tanulás? Kezdje el ezeket a könyvtárakat.
Olvassa tovább
- Programozás
- Piton
- Programozási nyelvek
- Programozás
Idowu szenvedélyes minden intelligens technológia és termelékenység iránt. Szabadidejében kódolással játszik, és ha unatkozik, sakktáblára vált, de szeret időnként elszakadni a rutintól. Szenvedélye, hogy megmutassa az embereknek a modern technológia körüli utat, arra ösztönzi, hogy többet írjon.
Iratkozzon fel hírlevelünkre
Csatlakozz hírlevelünkhöz, ahol technikai tippeket, értékeléseket, ingyenes e -könyveket és exkluzív ajánlatokat találsz!
Feliratkozáshoz kattintson ide