Dabiskā valodas apstrāde ir mašīnmācīšanās aspekts, kas ļauj apstrādāt rakstītos vārdus mašīnai draudzīgā valodā. Šādi teksti kļūst pielāgojami, un jūs varat tajos palaist skaitļošanas algoritmus, kā vēlaties.

Šīs aizraujošās tehnoloģijas loģika šķiet sarežģīta, bet tā nav. Un pat tagad, labi pārzinot pamata Python programmēšanu, jūs varat izveidot jaunu tekstapstrādes DIY rīku, izmantojot dabiskās valodas rīkkopu (NLTK).

Lūk, kā sākt darbu ar Python NLTK.

Kas ir NLTK un kā tas darbojas?

NLTK, kas rakstīts ar Python, piedāvā dažādas virkņu manipulācijas funkcijas. Tā ir daudzpusīga dabiskās valodas bibliotēka ar plašu modeļu krātuvi dažādām dabiskās valodas lietojumprogrammām.

Izmantojot NLTK, varat apstrādāt neapstrādātus tekstus un iegūt no tiem nozīmīgas funkcijas. Tas piedāvā arī teksta analīzes modeļus, uz funkcijām balstītas gramatikas un bagātīgus leksiskos resursus pilnīga valodas modeļa veidošanai.

Kā iestatīt NLTK

Vispirms izveidojiet projekta saknes mapi jebkurā datora vietā. Lai sāktu izmantot NLTK bibliotēku, atveriet termināli saknes mapē, kuru izveidojāt iepriekš, un

izveidot virtuālu vidi.

Pēc tam instalējiet dabiskās valodas rīku komplektu šajā vidē, izmantojot pip:

pip instalēt nltk

NLTK tomēr ir dažādas datu kopas, kas kalpo par pamatu jauniem dabiskās valodas modeļiem. Lai tiem piekļūtu, jums jāpagriež NLTK iebūvētais datu lejupielādētājs.

Tātad, kad esat veiksmīgi instalējis NLTK, atveriet savu Python failu, izmantojot jebkuru koda redaktoru.

Pēc tam importējiet nltk moduli un aktivizēt datu lejupielādētāju, izmantojot šādu kodu:

pip instalēt nltk
nltk.download ()

Palaižot iepriekš minēto kodu, izmantojot termināli, tiek parādīts grafiskais lietotāja interfeiss datu pakotņu atlasei un lejupielādei. Šeit jums jāizvēlas pakete un noklikšķiniet uz Lejupielādēt pogu, lai to iegūtu.

Jebkura lejupielādētā datu pakotne nonāk norādītajā direktorijā, kas rakstīts Lejupielādēt direktoriju lauks. Ja vēlaties, varat to mainīt. Bet mēģiniet saglabāt noklusējuma atrašanās vietu šajā līmenī.

Saistīts: Labākie bezmaksas koda redaktori pirmās lietotnes rakstīšanai

Piezīme: Datu paketes pēc noklusējuma tiek pievienotas sistēmas mainīgajiem. Tātad, jūs varat turpināt tos izmantot turpmākajos projektos neatkarīgi no izmantotās Python vides.

Kā lietot NLTK marķierus

Visbeidzot, NLTK piedāvā apmācītus marķēšanas modeļus vārdiem un teikumiem. Izmantojot šos rīkus, jūs varat izveidot vārdu sarakstu no teikuma. Vai arī pārveidojiet rindkopu par saprātīgu teikumu masīvu.

Šeit ir NLTK izmantošanas piemērs word_tokenizer:

importēt nltk
no nltk.tokenize importēt word_tokenize
word = "Šis ir teksta paraugs"
tokenWord = word_tokenizer (vārds)
drukāt (tokenWord)
Izeja:
['Šis', 'ir', 'an', 'piemērs', 'teksts']

NLTK izmanto arī iepriekš apmācītu teikumu marķieri ar nosaukumu PunktSentenceTokenizer. Tas darbojas, sadalot rindkopu teikumu sarakstā.

Apskatīsim, kā tas darbojas ar divu teikumu rindkopu:

importēt nltk
no nltk.tokenize importēt word_tokenize, PunktSentenceTokenizer
teikums = "Šis ir teksta paraugs. Šī ir apmācība NLTK "
marķieris = PunktSentenceTokenizer ()
tokenized_sentence = token.tokenize (teikums)
drukāt (tokenized_sentence)
Izeja:
['Šis ir teksta paraugs.', 'Šī ir apmācība NLTK']

Jūs varat tālāk marķēt katru teikumu masīvā, kas ģenerēts no iepriekš minētā koda, izmantojot word_tokenizer un Python cilpai.

NLTK lietošanas piemēri

Tātad, lai gan mēs nevaram demonstrēt visus iespējamos NLTK lietošanas gadījumus, šeit ir daži piemēri, kā jūs varat sākt to izmantot, lai atrisinātu reālās dzīves problēmas.

Iegūstiet vārdu definīcijas un to runas daļas

NLTK piedāvā modeļus runas daļu noteikšanai, detalizētas semantikas iegūšanai un dažādu vārdu iespējamai kontekstuālai lietošanai.

Jūs varat izmantot wordnet modeli, lai ģenerētu mainīgos tekstam. Pēc tam nosakiet tā nozīmi un runas daļu.

Piemēram, pārbaudīsim iespējamos "Monkey" mainīgos:

importēt nltk
no nltk.corpus importējiet wordnet kā wn
drukāt (wn.synsets ('pērtiķis'))
Izeja:
[Synset ('monkey.n.01'), Synset ('imp.n.02'), Synset ('tamper.v.01'), Synset ('putter.v.02']]

Iepriekš minētais kods izvada iespējamās vārdu alternatīvas vai sintakses un runas daļas "Pērtiķim".

Tagad pārbaudiet vārda “pērtiķis” nozīmi, izmantojot definīcija metode:

Pērtiķis = wn.synset ('monkey.n.01'). Definīcija ()
Izeja:
jebkurš primāts ar garām astēm (izņemot prosimianus)

Iekavās esošo virkni var aizstāt ar citām ģenerētām alternatīvām, lai redzētu, kādas NLTK izvades.

The pos_tag modelis tomēr nosaka vārda runas daļas. To var izmantot kopā ar word_tokenizer vai PunktSentenceTokenizer () ja strādājat ar garākām rindkopām.

Lūk, kā tas darbojas:

importēt nltk
no nltk.tokenize importēt word_tokenize, PunktSentenceTokenizer
word = "Šis ir teksta paraugs. Šī ir apmācība par NLTK "
marķieris = PunktSentenceTokenizer ()
tokenized_sentence = token.tokenize (vārds)
man i tokenized_sentence:
tokenWordArray = word_tokenize (i)
partsOfSpeech = nltk.pos_tag (tokenWordArray)
drukāt (partsOfSpeech)
Izeja:
[('Šis', 'DT'), ('ir', 'VBZ'), ('an', 'DT'), ('piemērs', 'NN'), ('teksts', 'NN'), ('.', '.')]
[('Šis', 'DT'), ('ir', 'VBZ'), ('a', 'DT'), ('apmācība', 'JJ'), ('ieslēgts', 'IN'), (“NLTK”, “NNP”)]

Iepriekš minētais kods savieno pārī katru marķēto vārdu ar runas tagu. Varat pārbaudīt šo tagu nozīmi Penn Treebank.

Lai iegūtu tīrāku rezultātu, jūs varat noņemt izvades punktus, izmantojot aizvietot() metode:

man i tokenized_sentence:
tokenWordArray = word_tokenize (i.aizstāt ('.', ''))
partsOfSpeech = nltk.pos_tag (tokenWordArray)
drukāt (partsOfSpeech)
Tīrītāja izeja:
[('Šis', 'DT'), ('ir', 'VBZ'), ('an', 'DT'), ('piemērs', 'NN'), ('teksts', 'NN') ]
[('Šis', 'DT'), ('ir', 'VBZ'), ('a', 'DT'), ('apmācība', 'JJ'), ('ieslēgts', 'IN'), (“NLTK”, “NNP”)]

Funkciju tendenču vizualizēšana, izmantojot NLTK diagrammu

Funkciju iegūšana no neapstrādātiem tekstiem bieži vien ir garlaicīga un laikietilpīga. Bet jūs varat apskatīt spēcīgākos funkciju noteicējus tekstā, izmantojot NLTK frekvenču sadalījuma tendenču diagrammu.

Tomēr NLTK sinhronizē ar matplotlib. Varat to izmantot, lai skatītu konkrētu datu tendenci.

Tālāk esošais kods, piemēram, salīdzina pozitīvu un negatīvu vārdu kopu izplatīšanas grafikā, izmantojot pēdējos divus alfabētus:

importēt nltk
no nltk importēšanas ConditionalFreqDist
Negatīvo un pozitīvo vārdu saraksts:
negatīvi = [
"nenormāli", "atcelt", "pretīgi",
"riebīgi", "pretīgi", "riebīgi"
]
pozitīvi = [
"abound", "abounds", "pārpilnība",
"bagātīgs", "pieejams", "pieejams"
]
# Sadaliet vienumus katrā masīvā marķētos kopu pāros
# un apvienojiet abus masīvus:
pos_negData = ([(("negatīvs", neg) negat negatīvos]+[("pozitīvs", poz) pozitīviem pozitīviem])
# Izvelciet pēdējos divus alfabētus no iegūtā masīva:
f = (((poz, i [-2:],) for (pos, i) in pos_negData)
# Izveidojiet šo alfabētu izplatīšanas shēmu
cfd = ConditionalFreqDist (f)
cfd.plot ()

Alfabēta izplatīšanas shēma izskatās šādi:

Cieši apskatot grafiku, vārdi beidzas ar ce, ds, le, nd, un nt ir lielāka varbūtība būt pozitīviem tekstiem. Bet tie, kas beidzas ar al, lj, uz, un te tie, visticamāk, ir negatīvi vārdi.

Piezīme: Lai gan mēs šeit esam izmantojuši pašu ģenerētus datus, varat piekļūt dažām NLTK iebūvētajām datu kopām, izmantojot tās korpusa lasītāju, piezvanot tām no korpuss klase nltk. Jūs varētu vēlēties apskatīt korpusa paketes dokumentācija lai redzētu, kā jūs to varat izmantot.

Līdz ar tādu tehnoloģiju parādīšanos kā Alexa, surogātpasta atklāšana, tērzēšanas roboti, sentimentu analīze un daudz kas cits, šķiet, ka dabiskās valodas apstrāde pārvēršas par apakšcilvēku. Lai gan šajā rakstā esam apsvēruši tikai dažus NLTK piedāvātos piemērus, šim rīkam ir vairāk uzlabotas lietojumprogrammas, kas ir augstākas par šīs apmācības apjomu.

Izlasot šo rakstu, jums vajadzētu būt labai idejai par NLTK izmantošanu bāzes līmenī. Tagad jums atliek tikai šīs zināšanas īstenot!

KopīgotČivinātE -pasts
7 mašīnmācīšanās bibliotēkas topošajiem ekspertiem

Vai jūs interesē mašīnmācīšanās joma? Sāciet darbu ar šīm bibliotēkām.

Lasīt Tālāk

Saistītās tēmas
  • Programmēšana
  • Python
  • Programmēšanas valodas
  • Programmēšana
Par autoru
Idowu Omisola (Publicēti 96 raksti)

Idowu aizraujas ar jebko gudru tehnoloģiju un produktivitāti. Brīvajā laikā viņš spēlējas ar kodēšanu un pārslēdzas uz šaha galdu, kad viņam ir garlaicīgi, taču viņam arī patīk laiku pa laikam atrauties no rutīnas. Viņa aizraušanās parādīt cilvēkiem ceļu apkārt mūsdienu tehnoloģijām motivē viņu rakstīt vairāk.

Vairāk no Idowu Omisola

Abonējiet mūsu biļetenu

Pievienojieties mūsu informatīvajam izdevumam, lai iegūtu tehniskus padomus, pārskatus, bezmaksas e -grāmatas un ekskluzīvus piedāvājumus!

Noklikšķiniet šeit, lai abonētu