Natūralios kalbos apdorojimas yra mašininio mokymosi aspektas, leidžiantis parašytus žodžius apdoroti mašinai tinkama kalba. Tada tokie tekstai tampa pataisomi, ir jūs galite paleisti skaičiavimo algoritmus, kaip jums patinka.

Šios patrauklios technologijos logika atrodo sudėtinga, bet ne. Ir net dabar, gerai išmanydami pagrindinį „Python“ programavimą, galite sukurti naują „pasidaryk pats“ teksto rengyklę naudodami natūralios kalbos įrankių rinkinį (NLTK).

Štai kaip pradėti naudotis „Python“ NLTK.

Kas yra NLTK ir kaip jis veikia?

Parašytas naudojant „Python“, NLTK pasižymi įvairiomis manipuliavimo eilutėmis funkcijomis. Tai universali natūralios kalbos biblioteka, turinti platų pavyzdžių saugyklą įvairioms natūralios kalbos programoms.

Naudodami NLTK galite apdoroti neapdorotus tekstus ir iš jų išgauti prasmingas funkcijas. Ji taip pat siūlo teksto analizės modelius, funkcijomis pagrįstas gramatikas ir turtingus leksinius išteklius, skirtus sukurti pilną kalbos modelį.

Kaip nustatyti NLTK

instagram viewer

Pirmiausia sukurkite projekto šakninį aplanką bet kurioje kompiuterio vietoje. Norėdami pradėti naudotis NLTK biblioteka, atidarykite terminalą prie anksčiau sukurto pagrindinio aplanko ir sukurti virtualią aplinką.

Tada įdiekite natūralios kalbos priemonių rinkinį į šią aplinką naudodami pip:

pip įdiegti nltk

Tačiau NLTK yra įvairių duomenų rinkinių, kurie yra naujų natūralių kalbų modelių pagrindas. Norėdami juos pasiekti, turite atsukti NLTK integruotą duomenų atsisiuntimo programą.

Taigi, sėkmingai įdiegę NLTK, atidarykite „Python“ failą naudodami bet kurį kodo redaktorių.

Tada importuokite nltk modulį ir inicijuoti duomenų atsisiuntimą naudojant šį kodą:

pip įdiegti nltk
nltk.download ()

Vykdant aukščiau nurodytą kodą per terminalą, atsiranda grafinė vartotojo sąsaja duomenų paketams pasirinkti ir atsisiųsti. Čia turėsite pasirinkti paketą ir spustelėti parsisiųsti mygtuką, kad jį gautumėte.

Bet koks atsiųstas duomenų paketas patenka į nurodytą katalogą, parašytą Atsisiųsti katalogą laukas. Jei norite, galite tai pakeisti. Tačiau pabandykite išlaikyti numatytąją vietą šiame lygyje.

Susijęs: Geriausi nemokami kodo redaktoriai, skirti parašyti pirmąją programą

Pastaba: Duomenų paketai pagal numatytuosius nustatymus pridedami prie sistemos kintamųjų. Taigi, galite ir toliau juos naudoti vėlesniems projektams, neatsižvelgiant į naudojamą „Python“ aplinką.

Kaip naudotis NLTK žetonėliais

Galų gale, NLTK siūlo apmokytus žodžių ir sakinių simbolizavimo modelius. Naudodamiesi šiais įrankiais, galite sukurti žodžių sąrašą iš sakinio. Arba paverskite pastraipą į protingą sakinių masyvą.

Štai pavyzdys, kaip naudoti NLTK word_tokenizer:

importuoti nltk
iš nltk.tokenize importuoti word_tokenize
word = "Tai yra teksto pavyzdys"
tokenWord = word_tokenizer (žodis)
spausdinti (tokenWord)
Išėjimas:
['Tai', 'yra', 'an', 'pavyzdys', 'tekstas']

NLTK taip pat naudoja iš anksto apmokytą sakinio atpažinimo ženklą, vadinamą „PunktSentenceTokenizer“. Jis veikia suskaidydamas pastraipą į sakinių sąrašą.

Pažiūrėkime, kaip tai veikia su dviejų sakinių pastraipa:

importuoti nltk
iš nltk.tokenize importuoti word_tokenize, PunktSentenceTokenizer
sakinys = "Tai yra teksto pavyzdys. Tai NLTK pamoka "
žetonas = PunktSentenceTokenizer ()
tokenized_sentence = token.tokenize (sakinys)
spausdinti (tokenized_sentence)
Išėjimas:
['Tai yra pavyzdinis tekstas.', 'Tai NLTK pamoka']

Galite toliau pažymėti kiekvieną masyvo sakinį, sugeneruotą iš aukščiau pateikto kodo, naudodami word_tokenizer ir Python už ciklą.

NLTK naudojimo pavyzdžiai

Taigi, nors negalime parodyti visų galimų NLTK naudojimo atvejų, čia yra keletas pavyzdžių, kaip galite pradėti jį naudoti realaus gyvenimo problemoms spręsti.

Gaukite žodžių apibrėžimus ir jų kalbos dalis

NLTK yra kalbos dalių nustatymo, išsamios semantikos ir galimo įvairių žodžių naudojimo konteksto modeliai.

Galite naudoti wordnet modelį, skirtą generuoti kintamuosius tekstui. Tada nustatykite jo reikšmę ir kalbos dalį.

Pavyzdžiui, patikrinkime galimus „Beždžionės“ kintamuosius:

importuoti nltk
iš nltk.corpus importuokite wordnet kaip wn
spausdinti (wn.synsets ('beždžionė'))
Išėjimas:
[Sinchronizavimas ('monkey.n.01'), Synset ('imp.n.02'), Synset ('tamper.v.01'), Synset ('putter.v.02']]

Aukščiau pateiktas kodas pateikia galimas žodžių „beždžionė“ alternatyvas ar sintaksę ir kalbos dalis.

Dabar patikrinkite „beždžionės“ reikšmę naudodami apibrėžimas metodas:

Beždžionė = wn.synset ('beždžionė.n.01'). Apibrėžimas ()
Išėjimas:
bet kuris iš įvairių ilgauodegių primatų (išskyrus prosimianus)

Galite pakeisti skliausteliuose esančią eilutę kitomis sugeneruotomis alternatyvomis, kad pamatytumėte, kokie NLTK rezultatai.

The pos_tag Tačiau modelis nustato žodžio kalbos dalis. Tai galite naudoti su word_tokenizer arba „PunktSentenceTokenizer“ () jei susiduriate su ilgesnėmis pastraipomis.

Štai kaip tai veikia:

importuoti nltk
iš nltk.tokenize importuoti word_tokenize, PunktSentenceTokenizer
word = "Tai yra teksto pavyzdys. Tai pamoka apie NLTK "
žetonas = PunktSentenceTokenizer ()
tokenized_sentence = token.tokenize (žodis)
aš i tokenized_sentence:
tokenWordArray = word_tokenize (i)
partsOfSpeech = nltk.pos_tag (tokenWordArray)
spausdinti (partsOfSpeech)
Išėjimas:
[(„Tai“, „DT“), („yra“, „VBZ“), („an“, „DT“), („pavyzdys“, „NN“), („tekstas“, „NN“), („.“, „.“)]
[(„Tai“, „DT“), („yra“, „VBZ“), („a“, „DT“), („pamoka“, „JJ“), („įjungta“, „IN“), („NLTK“, „NNP“)]

Aukščiau pateiktas kodas poruoja kiekvieną tokenizuotą žodį su savo kalbos žyme. Galite patikrinti šių žymų reikšmę Penn Treebank.

Kad rezultatas būtų švaresnis, išvesties taškus galite pašalinti naudodami pakeisti () metodas:

aš i tokenized_sentence:
tokenWordArray = word_tokenize (i.replace ('.', ''))
partsOfSpeech = nltk.pos_tag (tokenWordArray)
spausdinti (partsOfSpeech)
Valiklio išvestis:
[(„Tai“, „DT“), („yra“, „VBZ“), („an“, „DT“), („pavyzdys“, „NN“), („tekstas“, „NN“) ]
[(„Tai“, „DT“), („yra“, „VBZ“), („a“, „DT“), („pamoka“, „JJ“), („įjungta“, „IN“), („NLTK“, „NNP“)]

Funkcijų tendencijų vizualizavimas naudojant NLTK plotą

Funkcijų išgavimas iš neapdorotų tekstų dažnai yra varginantis ir reikalaujantis daug laiko. Bet jūs galite peržiūrėti stipriausius teksto ypatybių determinantus naudodami NLTK dažnio pasiskirstymo tendencijų schemą.

Tačiau NLTK sinchronizuojasi su matplotlib. Tai galite panaudoti norėdami peržiūrėti konkrečią duomenų tendenciją.

Pavyzdžiui, toliau pateiktas kodas palygina teigiamų ir neigiamų žodžių rinkinį paskirstymo schemoje, naudojant paskutines dvi abėcėles:

importuoti nltk
iš „nltk“ importo „ConditionalFreqDist“
Neigiamų ir teigiamų žodžių sąrašai:
neigiami = [
„nenormalus“, „panaikinti“, „bjaurus“,
„bjaurus“, „bjaurus“, „bjaurus“
]
teigiami = [
„gausu“, „gausu“, „gausa“,
„gausus“, „prieinamas“, „prieinamas“
]
# Padalinkite kiekvieno masyvo elementus į etikečių porų poras
# ir sujunkite abu masyvus:
pos_negData = ([((„neigiamas“, neg), jei neigiamas neigiamas]+[(„teigiamas“, poz), jei teigiamas teiginys])
# Iš gauto masyvo ištraukite paskutines dvi abėcėles:
f = ((poz, i [-2:],) už (pos, i) in pos_negData)
# Sukurkite šių abėcėlių platinimo schemą
cfd = ConditionalFreqDist (f)
cfd.plot ()

Abėcėlės pasiskirstymo schema atrodo taip:

Atidžiai žiūrėdami į grafiką, žodžiai baigiasi ce, ds, le, antra, ir nt didesnė tikimybė, kad tekstai bus teigiami. Bet tie, kurie baigiasi al, ly, ant, ir te dažniau yra neigiami žodžiai.

Pastaba: Nors čia naudojome pačių sugeneruotus duomenis, galite pasiekti kai kuriuos NLTK integruotus duomenų rinkinius naudodami „Corpus“ skaitytuvą, paskambinę jiems iš korpusas klasė nltk. Galbūt norėsite pažvelgti į korpuso paketo dokumentacija pamatyti, kaip galite ja naudotis.

Atsiradus tokioms technologijoms kaip „Alexa“, šlamšto aptikimui, pokalbių robotams, sentimentų analizei ir kt., Atrodo, kad natūralios kalbos apdorojimas perauga į žmogiškąją fazę. Nors šiame straipsnyje aptarėme tik kelis NLTK siūlomų pavyzdžių, įrankis turi daugiau pažangių programų, aukštesnių nei šios pamokos apimtis.

Perskaitę šį straipsnį, turėtumėte gerai suprasti, kaip baziniu lygiu naudoti NLTK. Dabar belieka tik šias žinias įgyvendinti!

Dalintis„Tweet“Paštu
7 mašinų mokymosi bibliotekos norintiems ekspertams

Domitės mašinų mokymosi sritimi? Pradėkite naudotis šiomis bibliotekomis.

Skaityti toliau

Susijusios temos
  • Programavimas
  • Python
  • Programavimo kalbos
  • Programavimas
Apie autorių
Idowu Omisola (Paskelbti 96 straipsniai)

Idowu aistringai domisi visomis išmaniosiomis technologijomis ir produktyvumu. Laisvalaikiu jis žaidžia koduodamasis ir nuobodžiai persijungia į šachmatų lentą, tačiau taip pat mėgsta retkarčiais atitrūkti nuo rutinos. Jo aistra parodyti žmonėms kelią aplink šiuolaikines technologijas skatina jį daugiau rašyti.

Daugiau iš Idowu Omisola

Prenumeruokite mūsų naujienlaiškį

Prisijunkite prie mūsų naujienlaiškio, kad gautumėte techninių patarimų, apžvalgų, nemokamų el. Knygų ir išskirtinių pasiūlymų!

Norėdami užsiprenumeruoti, spustelėkite čia