Daca scrieti cod care se ocupa de limbajul natural, atunci la un moment dat, va trebui sa utilizati date dintr-un dictionar. Trebuie sa faceti o alegere in acest moment.

  • Puteti alege unul dintre numele mari, de ex. Oxford, Merriam-Webster, Macmillan etc. si sa utilizati API-ul lor pentru obtinerea datelor
  • Sau puteti alege WordNet.

Am incercat ambele si am gasit WordNet ca fiind cel mai bun instrument pentru acest post.

Array

Pentru cei care nu stiu, WordNet este o baza de date lizibila automat de cuvinte care poate fi accesata din cele mai populare limbaje de programare (C, C #, Java, Ruby, Python etc.). Am mai multe motive pentru care prefer WordNet decat celelalte optiuni.

  • Multe dintre API-urile marii companii necesita plata. WordNet este gratuit.

    Array

  • Multe dintre API-urile marii companii sunt doar online. WordNet poate fi descarcat si utilizat offline.
  • WordNet este de multe ori mai puternic decat orice alt dictionar sau tezaur.

Ultimul punct necesita cateva explicatii.

WordNet nu este ca dictionarul dvs.

Array

de zi cu zi. In timp ce un dictionar traditional prezinta o lista de cuvinte si definitiile acestora, WordNet se concentreaza pe relatia dintre cuvinte (pe langa definitii). Accentul pus pe relatii face din WordNet o retea in loc de o lista. S-ar putea sa fi ghicit acest lucru deja din numele WordNet.

WordNet este o retea de cuvinte!

In reteaua WordNet, cuvintele sunt conectate prin relatii lingvistice.

Aceste relatii lingvistice ( hypernym , hiponim , meronym , pertainym si alte chestii de sondare fantezie ), sunt WordNet lui sos secret. Ele va ofera capacitati puternice care lipsesc in dictionarele obisnuite / tezauri.

Nu vom intra adanc in lingvistica in acest articol, pentru ca asta este in afara de subiect. Dar vreau sa va arat ce puteti obtine in codul dvs. folosind WordNet. Asadar, sa ne uitam la cele mai frecvente doua cazuri de utilizare (pe care orice dictionar sau tezaur ar trebui sa le poata face) si cateva cazuri de utilizare avansate (pe care numai WordNet le poate face) cu un exemplu de cod.

Cautare de cuvinte

Sa incepem cu cel mai simplu caz de utilizare, adica cautari de cuvinte. Putem cauta semnificatia oricarui cuvant din WordNet in trei linii de cod (exemplele sunt in Python).

Sinonim si cautare Antonym

WordNet poate functiona si ca un tezaur, facilitand gasirea de sinonime si antonime. Pentru a obtine sinonimele cuvantului iubit , de exemplu, pot tasta urmatoarea linie in Python …

… si obtineti sinonimele dragi , dragi , draga si dragoste, asa cum era de asteptat . Antonimele pot fi obtinute la fel de simplu.

Partea transversala a cautarii vorbirii

WordNet poate face lucruri pe care dictionarele / tezaurile nu le pot face. De exemplu, WordNet stie despre o parte transversala a relatiilor de vorbire. Acest tip de relatie conecteaza un substantiv (de ex. Presedinte ) cu verbul sau derivat ( prezide ), adjectivul derivat ( prezidential ) si adverbul derivat ( prezidential ). Urmatorul fragment afiseaza aceasta functionalitate WordNet (folosind un pachet Python bazat pe WordNet numit word_forms).

A putea genera aceste relatii este deosebit de util pentru Procesarea limbajului natural si pentru cursantii de engleza.

Cautare clasificare

Pe langa faptul ca este un dictionar si un tezaur, WordNet este, de asemenea, un sistem de clasificare taxonomica. De exemplu, WordNet clasifica cainele ca animal domestic , un animal domestic ca animal si un animal ca organism . Toate cuvintele din WordNet au fost clasificate in mod similar, intr-un mod care imi aminteste de clasificarile taxonomice din biologie.

Urmatorul fragment arata ce se intampla daca urmarim acest lant de relatii pana la capat.

Pentru a vizualiza modelul de clasificare, este util sa va uitati la urmatoarea imagine, care prezinta o mica parte din WordNet.

Imagine datorita hartiei WordNet originale.

Similitudinea cuvantului semantic

Modelul de clasificare al WordNet a fost utilizat pentru multe aplicatii utile. O astfel de aplicatie calculeaza similitudinea dintre doua cuvinte pe baza distantei dintre cuvinte in reteaua WordNet. Cu cat este mai mica distanta, cu atat cuvintele sunt mai asemanatoare. In acest fel, este posibil sa ne dam seama cantitativ ca o pisica si un caine sunt similare, un telefon si un computer sunt similare, dar o pisica si un telefon nu sunt similare!

WordNet are o acoperire cuprinzatoare a limbii engleze. In prezent, are 155.287 de cuvinte in limba engleza. Dictionarul complet Oxford English are aproape acelasi numar de cuvinte moderne (171.476). WordNet a fost actualizat ultima data in 2011. Unele cuvinte contemporane in limba engleza, cum ar fi bromance sau chillax, par sa-l lipseasca din acest motiv, dar acest lucru nu ar trebui sa constituie un punct de plecare pentru majoritatea dintre noi.

Daca doriti sa aflati mai multe despre WordNet, urmatoarele referinte sunt foarte utile.

  • Lucrarea originala WordNet face o treaba excelenta de a explica relatiile lingvistice definite in WordNet.
  • Excelenta referinta NLTK de pe WordNet ofera un tutorial excelent despre accesarea WordNet in Python.
  • Daca doriti sa incercati WordNet intr-un limbaj de programare diferit, de ex. C, C #, Java, Ruby, PHP, MySQL etc., este posibil sa gasiti pachetul necesar in aceasta pagina.
  • De asemenea, puteti incerca demo-ul online bazat pe web.

Multumesc pentru lectura. Sper ca aceasta postare rapida despre WordNet ti-a fost de ajutor.