Procesarea limbajului natural este un aspect al învățării automate care vă permite să procesați cuvinte scrise într-un limbaj compatibil cu mașina. Astfel de texte devin apoi modificabile și puteți rula algoritmi de calcul pe ele după cum doriți.

Logica din spatele acestei tehnologii captivante pare complexă, dar nu este. Și chiar și acum, cu o înțelegere solidă a programării de bază Python, puteți crea un procesor de text DIY nou cu setul de instrumente de limbaj natural (NLTK).

Iată cum să începeți cu NLTK-ul Python.

Ce este NLTK și cum funcționează?

Scris cu Python, NLTK oferă o varietate de funcționalități de manipulare a șirurilor. Este o bibliotecă de limbaj natural versatilă, cu un vast depozit de modele pentru diverse aplicații de limbaj natural.

Cu NLTK, puteți procesa texte brute și extrage caracteristici semnificative din acestea. De asemenea, oferă modele de analiză a textului, gramatici bazate pe caracteristici și resurse lexicale bogate pentru construirea unui model de limbaj complet.

instagram viewer

Cum se configurează NLTK

Mai întâi, creați un folder rădăcină al proiectului oriunde pe computer. Pentru a începe să utilizați biblioteca NLTK, deschideți terminalul în folderul rădăcină pe care l-ați creat anterior și creați un mediu virtual.

Apoi, instalați setul de instrumente de limbaj natural în acest mediu folosind pip:

pip instala nltk

Cu toate acestea, NLTK oferă o varietate de seturi de date care servesc drept bază pentru noi modele de limbaj natural. Pentru a le accesa, trebuie să rotiți aplicația de descărcare de date încorporată NLTK.

Deci, după ce ați instalat cu succes NLTK, deschideți fișierul Python folosind orice editor de cod.

Apoi importați fișierul nltk și instanțiați descărcătorul de date folosind următorul cod:

pip instala nltk
nltk.download ()

Rularea codului de mai sus prin terminal aduce o interfață grafică-utilizator pentru selectarea și descărcarea pachetelor de date. Aici, va trebui să alegeți un pachet și să faceți clic pe Descarca butonul pentru a-l obține.

Orice pachet de date pe care îl descărcați merge în directorul specificat scris în Descarcă directorul camp. Puteți schimba acest lucru dacă doriți. Dar încercați să mențineți locația implicită la acest nivel.

Legate de: Cei mai buni editori de coduri gratuite pentru scrierea primei aplicații

Notă: Pachetele de date se adaugă în mod implicit la variabilele de sistem. Deci, le puteți folosi în continuare pentru proiecte ulterioare, indiferent de mediul Python pe care îl utilizați.

Cum se utilizează tokenizatorii NLTK

În cele din urmă, NLTK oferă modele de tokenizare instruite pentru cuvinte și propoziții. Folosind aceste instrumente, puteți genera o listă de cuvinte dintr-o propoziție. Sau transformați un paragraf într-un tablou de propoziții sensibil.

Iată un exemplu de utilizare a NLTK word_tokenizer:

import nltk
din nltk.tokenize import word_tokenize
word = "Acesta este un exemplu de text"
tokenWord = word_tokenizer (cuvânt)
print (tokenWord)
Ieșire:
[„Acesta”, „este”, „un”, „exemplu”, „text”]

NLTK folosește, de asemenea, un tokenizer de propoziție pre-antrenat numit PunktSentenceTokenizer. Funcționează prin fragmentarea unui paragraf într-o listă de propoziții.

Să vedem cum funcționează acest lucru cu un paragraf din două propoziții:

import nltk
din nltk.tokenize import word_tokenize, PunktSentenceTokenizer
propoziție = "Acesta este un exemplu de text. Acesta este un tutorial pentru NLTK "
token = PunktSentenceTokenizer ()
tokenized_sentence = token.tokenize (propoziție)
print (tokenized_sentence)
Ieșire:
[„Acesta este un exemplu de text.”, „Acesta este un tutorial pentru NLTK”]

Puteți simboliza în continuare fiecare propoziție din matricea generată din codul de mai sus folosind word_tokenizer și Python pentru buclă.

Exemple de utilizare a NLTK

Deci, deși nu putem demonstra toate cazurile de utilizare posibile ale NLTK, iată câteva exemple despre modul în care puteți începe să îl utilizați pentru a rezolva probleme din viața reală.

Obțineți definiții de cuvinte și părțile lor de vorbire

NLTK prezintă modele pentru determinarea părților vorbirii, obținerea unei semantici detaliate și posibila utilizare contextuală a diferitelor cuvinte.

Puteți utiliza wordnet model pentru a genera variabile pentru un text. Apoi determinați-i semnificația și partea de vorbire.

De exemplu, să verificăm posibilele variabile pentru „Maimuță:”

import nltk
din nltk.corpus importă wordnet ca wn
print (wn.synsets („maimuță”))
Ieșire:
[Synset ('monkey.n.01'), Synset ('imp.n.02'), Synset ('tamper.v.01'), Synset ('putter.v.02')]

Codul de mai sus redă posibile alternative de cuvinte sau sintaxe și părți de vorbire pentru „Maimuță”.

Acum verificați semnificația „Maimuței” folosind definiție metodă:

Monkey = wn.synset ('monkey.n.01'). Definiție ()
Ieșire:
oricare dintre primatele cu coadă lungă (cu excepția prosimienilor)

Puteți înlocui șirul din paranteză cu alte alternative generate pentru a vedea ce rezultate NLTK.

The pos_tag modelul, totuși, determină părțile de vorbire ale unui cuvânt. Puteți utiliza acest lucru cu word_tokenizer sau PunktSentenceTokenizer () dacă aveți de-a face cu paragrafe mai lungi.

Iată cum funcționează:

import nltk
din nltk.tokenize import word_tokenize, PunktSentenceTokenizer
word = "Acesta este un exemplu de text. Acesta este un tutorial despre NLTK "
token = PunktSentenceTokenizer ()
tokenized_sentence = token.tokenize (cuvânt)
pentru i în tokenized_sentence:
tokenWordArray = word_tokenize (i)
partsOfSpeech = nltk.pos_tag (tokenWordArray)
print (partsOfSpeech)
Ieșire:
[(„Acesta”, „DT”), („este”, „VBZ”), („un”, „DT”), („exemplu”, „NN”), („text”, „NN”), ('.', '.')]
[(„Acesta”, „DT”), („este”, „VBZ”), („a”, „DT”), („tutorial”, „JJ”), („activat”, „IN”), („NLTK”, „NNP”)]

Codul de mai sus împerechează fiecare cuvânt tokenizat cu eticheta sa de vorbire într-un tuplu. Puteți verifica semnificația acestor etichete pe Penn Treebank.

Pentru un rezultat mai curat, puteți elimina perioadele din ieșire folosind a inlocui() metodă:

pentru i în tokenized_sentence:
tokenWordArray = word_tokenize (i.replace ('.', ''))
partsOfSpeech = nltk.pos_tag (tokenWordArray)
print (partsOfSpeech)
Ieșire mai curată:
[(„Acesta”, „DT”), („este”, „VBZ”), („un”, „DT”), („exemplu”, „NN”), („text”, „NN”) ]
[(„Acesta”, „DT”), („este”, „VBZ”), („a”, „DT”), („tutorial”, „JJ”), („activat”, „IN”), („NLTK”, „NNP”)]

Vizualizarea tendințelor caracteristicilor folosind graficul NLTK

Extragerea caracteristicilor din textele brute este adesea plictisitoare și consumatoare de timp. Dar puteți vedea cele mai puternice elemente determinante ale caracteristicilor într-un text folosind graficul tendinței de distribuție a frecvenței NLTK.

Cu toate acestea, NLTK se sincronizează cu matplotlib. Puteți utiliza acest lucru pentru a vizualiza o tendință specifică în datele dvs.

Codul de mai jos, de exemplu, compară un set de cuvinte pozitive și negative pe un grafic de distribuție folosind ultimele două alfabete ale acestora:

import nltk
din nltk import ConditionalFreqDist
Liste de cuvinte negative și pozitive:
negative = [
„anormal”, „abolit”, „abominabil”,
„urât”, „urât”, „urât”
]
pozitive = [
„abundă”, „abundă”, „abundență”,
„abundent”, „accesibil”, „accesibil”
]
# Împărțiți articolele din fiecare matrice în perechi de tupple etichetate
# și combinați ambele tablouri:
pos_negData = ([("negativ", neg) pentru neg în negativ] + [("pozitiv", pos) pentru poz în pozitiv])
# Extrageți ultimele două alfabete din matricea rezultată:
f = ((pos, i [-2:],) pentru (pos, i) în pos_negData)
# Creați un grafic de distribuție a acestor alfabete
cfd = ConditionalFreqDist (f)
cfd.plot ()

Graficul de distribuție a alfabetului arată astfel:

Privind atent graficul, cuvintele care se termină cu ce, ds, le, nd, și nt au o probabilitate mai mare de a fi texte pozitive. Dar cei care se termină cu al, te iubesc, pe, și te sunt mai probabil cuvinte negative.

Notă: Deși am folosit date auto-generate aici, puteți accesa unele dintre seturile de date încorporate ale NLTK utilizând cititorul Corpus apelându-le din corpus clasa de nltk. S-ar putea să doriți să vă uitați la documentația pachetului corpus pentru a vedea cum îl puteți folosi.

Odată cu apariția tehnologiilor precum Alexa, detectarea spamului, chatbots, analiza sentimentelor și multe altele, procesarea limbajului natural pare să evolueze în faza sa sub-umană. Deși am luat în considerare doar câteva exemple de ceea ce oferă NLTK în acest articol, instrumentul are aplicații mai avansate mai mari decât sfera acestui tutorial.

După ce ați citit acest articol, ar trebui să aveți o idee bună despre cum să utilizați NLTK la nivel de bază. Tot ce ți-a mai rămas de făcut acum este să pui tu acea cunoștință în acțiune!

AcțiuneTweetE-mail
7 biblioteci de învățare automată pentru experți aspiranți

Vă interesează domeniul învățării automate? Începeți cu aceste biblioteci.

Citiți în continuare

Subiecte asemănătoare
  • Programare
  • Piton
  • Limbaje de programare
  • Programare
Despre autor
Idowu Omisola (96 articole publicate)

Idowu este pasionat de orice tehnologie inteligentă și productivitate. În timpul liber, se joacă cu codificarea și trece la tabla de șah când se plictisește, dar îi place, de asemenea, să se rupă de rutină din când în când. Pasiunea sa pentru a arăta oamenilor calea în jurul tehnologiei moderne îl motivează să scrie mai multe.

Mai multe de la Idowu Omisola

Aboneaza-te la newsletter-ul nostru

Alăturați-vă newsletter-ului pentru sfaturi tehnice, recenzii, cărți electronice gratuite și oferte exclusive!

Faceți clic aici pentru a vă abona