Introducerea Toolkitului pentru limbajul natural (NLTK)

Procesarea limbajului natural (NLP) este prelucrarea automată sau semi-automată a limbajului uman. NLP este strâns legată de lingvistică și are legături cu cercetarea în știința cognitivă, psihologia, fiziologia și matematica. În domeniul informaticii în special, NLP este legat de tehnicile compilatorului, teoria limbajului formal, interacțiunea om-calculator, învățarea mașinilor și demonstrarea teoremei. Această întrebare Quora prezintă diferite avantaje ale NLP.

În acest tutorial o să vă conduc printr-o platformă Python interesantă pentru NLP numită NLTK (Natural Language Toolkit). Înainte de a vedea cum să lucrați cu această platformă, permiteți-mi să vă spun mai întâi ce este NLTK.

Ce este NLTK?

Instrumentul de limbă naturală (NLTK) este o platformă utilizată pentru construirea de programe pentru analiza textului. Platforma a fost lansată inițial de Steven Bird și Edward Loper împreună cu un curs de lingvistică computațională de la Universitatea din Pennsylvania în 2001. Există o carte însoțitoare pentru platforma Natural Language Processing with Python.

Instalarea NLTK

Să începem acum să instalăm NLTK pentru a începe experimentarea procesării limbajului natural. Va fi distractiv!

Instalarea NLTK este foarte simplă. Folosesc Windows 10, deci în My Command Prompt (MS-DOS) Am tastat următoarea comandă:

instalare pip nltk

Dacă utilizați Ubuntu sau macOS, executați comanda de la Terminal. Mai multe informații despre instalarea NLTK pe diferite platforme pot fi găsite în documentație.

Dacă vă întrebați ce țâfnă este, este un sistem de gestionare a pachetelor utilizat pentru a instala și administra pachetele software scrise în Python. Dacă utilizați Python 2> = 2.7.9 sau Python 3> = 3.4, aveți deja deja țâfnă instalat! Pentru a verifica versiunea Python, pur și simplu tastați următoarele în linia de comandă:

python --versiune

Să mergem mai departe și să verificăm dacă am instalat cu succes NLTK. Pentru a face acest lucru, deschideți IDLE-ul Python și tastați cele două linii prezentate în figura de mai jos:


Dacă primiți versiunea NLTK returnată, atunci felicitări, ați instalat cu succes NLTK!

Deci, ceea ce am făcut în pasul de mai sus este că am instalat NLTK din indexul pachetului Python (pip) local în mediul nostru virtual.

Observați că este posibil să aveți o versiune diferită a NLTK în funcție de momentul în care ați instalat platforma, dar aceasta nu ar trebui să provoace o problemă.

Lucrul cu NLTK

Primul lucru pe care trebuie să-l facem pentru a lucra cu NLTK este să descărcați ceea ce se numește NLTK corpora. Voi descărca întreaga corporație. Știu că este foarte mare (10,9 GB), dar o vom face o singură dată. Dacă știți ce corporație aveți nevoie, nu este nevoie să descărcați întregul corp. 

În IDLE-ul dvs. Python, tastați următoarele:

import nltk nltk.download ()

În acest caz, veți obține un GUI din care puteți specifica destinația și ce să descărcați, după cum se arată în figura de mai jos:

Voi descărca totul în acest moment. Apasă pe Descarca butonul din stânga jos a ferestrei și așteptați un timp până când totul se va descărca în directorul de destinație.

Înainte de a merge mai departe, s-ar putea să te întrebi ce corp (singular de corpora) este. Un corpus poate fi definit după cum urmează:

Corpus, plural corpora; O colecție de date lingvistice, fie compilate ca texte scrise, fie ca o transcriere a discursului înregistrat. Scopul principal al unui corpus este de a verifica o ipoteză despre limbă - de exemplu, pentru a determina cum variază utilizarea unui anumit tip de sunet, cuvânt sau construcție sintactică. Corpus lingvistica se ocupă de principiile și practica utilizării corpurilor corporale în studiul de limbă. Un corpus de computer este un corp larg de texte care pot fi citite de mașină.
(Crystal, David, 1992. Un dicționar encyclopedic al limbilor și limbilor, Oxford: Blackwell.)

Un corpus text este astfel orice corp mare de text.

Opriți cuvintele

Uneori trebuie să filtram date inutile pentru a face datele mai ușor de înțeles de către computer. În prelucrarea limbajului natural (NLP), se cheamă astfel de date inutile (cuvinte) opriți cuvintele. Deci, aceste cuvinte pentru noi nu au nici un sens, și am vrea să le eliminăm.

NLTK ne oferă câteva cuvinte stop pentru a începe. Pentru a vedea acele cuvinte, utilizați următorul script:

de la nltk.corpus stop-uri de import de imprimare (set (stopwords.words ('English')))

În acest caz, veți obține următoarea ieșire:

Ceea ce am făcut este că am tipărit un set (o colecție neordonată de articole) de cuvinte stop ale limbii engleze.

Cum putem elimina cuvintele stop din propriul nostru text? Exemplul de mai jos arată modul în care putem efectua această sarcină:

de la nltk.corpus stopwords de import de la nltk.tokenize import word_tokenize text = 'În acest tutorial, am învățat NLTK. Este o platformă interesantă. stop_words = set (stopwords.words ('english')) cuvinte = word_tokenize (text) new_sentence = []

Rezultatul scriptului de mai sus este:

Tokenizarea, așa cum este definită în Wikipedia, este:

Procesul de rupere a unui flux de text în cuvinte, fraze, simboluri sau alte elemente semnificative numite jetoane.

Deci, ce word_tokenize () funcția este:

Tokenizați un șir pentru a împărți punctuația, altele decât perioadele

In cautarea

Să presupunem că avem următorul fișier text (descărcați fișierul text din Dropbox). Am dori să căutăm (căutați) cuvântul limba. Putem pur și simplu face acest lucru folosind platforma NLTK după cum urmează:

import nltk file = open ('NLTK.txt', 'r') read_file = file.read () text = nltk.Text (nltk.word_tokenize (read_file)) match = text.concordance

În acest caz, veți obține următoarea ieșire:

Observa asta concordanţă() returnează fiecare apariție a cuvântului limba, în plus față de un anumit context. Înainte de aceasta, după cum se arată în scriptul de mai sus, vom tokenize fișierul citit și apoi îl vom converti într-un nltk.Text obiect.

Vreau doar să observ că prima dată când am rulat programul, am primit următoarea eroare, care pare să fie legată de codificarea utilizărilor consolei:

Fișierul "test.py", rândul 7, în  match = text.concordance ('language') decode ('utf-8') Fișierul "C: \ Python35 \ lib \ site-packages \ nltk \ text.py", linia 334 în concordanță self._concordance_index.print_concordance cuvânt, lățime, linii) Fișierul "C: \ Python35 \ lib \ site-packages \ nltk \ text.py", linia 200, în print_concordance print (left, self._tokens [i] \ lib \ encodings \ cp437.py ", linia 19, codec return codecs.charmap_encode caractere de caractere pentru 

Ceea ce am făcut pur și simplu pentru a rezolva această problemă este de a rula această comandă în consola mea înainte de a rula programul: chcp 65001.

Corpul Gutenberg

După cum se menționează în Wikipedia:

Proiectul Gutenberg (PG) este un efort voluntar de digitizare și arhivare a operelor culturale, pentru a "încuraja crearea și distribuirea de cărți electronice". A fost fondată în 1971 de Michael S. Hart și este cea mai veche bibliotecă digitală. Majoritatea articolelor din colecția sa sunt textele complete ale cărților de domeniu public. Proiectul încearcă să le facă cât mai libere posibil, în formate de lungă durată, care pot fi utilizate pe aproape orice computer. Începând cu 3 octombrie 2015, proiectul Gutenberg a atins 50.000 de articole din colecția sa.

NLTK conține o mică selecție de texte din Proiectul Gutenberg. Pentru a vedea fișierele incluse în proiectul Gutenberg, facem următoarele:

import nltk gutenberg_files = nltk.corpus.gutenberg.fileids () print (gutenberg_files)

Rezultatul scenariului de mai sus va fi următorul:

Dacă vrem să găsim numărul de cuvinte pentru fișierul text stories.txt-bryant de exemplu, putem face următoarele:

import nltk bryant_words = nltk.corpus.gutenberg.words ('bryant-stories.txt') print (len (bryant_words))

Scriptul de mai sus ar trebui să returneze următorul număr de cuvinte: 55563

Concluzie

După cum am văzut în acest tutorial, platforma NLTK ne oferă un instrument puternic pentru lucrul cu prelucrarea limbajului natural (NLP). V-am zgâriat doar suprafața în acest tutorial. Dacă doriți să mergeți mai adânc în utilizarea NLTK pentru diferite sarcini NLP, vă puteți referi la cartea de însoțire NLTK: Procesarea limbajului natural cu Python.

Cod