Piemēram, uzņēmums var palaist teksta analīzes motoru, kas apstrādā tweets par savu biznesu, pieminot uzņēmuma nosaukumu, atrašanās vietu, procesu un analizējot emocijas, kas saistītas ar šo tvītu. Pareizas darbības var veikt ātrāk, ja šis uzņēmums uzzina par negatīvu tvītu pieaugumu konkrētā vietā, lai glābtu sevi no kļūdām vai visa cita. Vēl viens izplatīts piemērs būs Youtube. Youtube administratori un moderatori uzzina par videoklipa efektu atkarībā no videoklipā izteikto komentāru veida vai video tērzēšanas ziņojumiem. Tas viņiem palīdzēs daudz ātrāk atrast neatbilstošu saturu vietnē, jo tagad viņi ir izskauduši manuālo darbu un izmantojuši automatizētas viedās teksta analīzes robotprogrammatūras.
Šajā nodarbībā mēs izpētīsim dažus jēdzienus, kas saistīti ar teksta analīzi, izmantojot NLTK bibliotēkas palīdzību Python. Daži no šiem jēdzieniem ietvers:
- Tokenizācija, kā sadalīt teksta daļu vārdos, teikumos
- Izvairīšanās no stop vārdiem, kuru pamatā ir angļu valoda
- Veicot stemming un lemmatization uz teksta gabala
- Analizējamo marķieru identificēšana
NLP šajā nodarbībā būs galvenā uzmanības joma, jo tā ir piemērojama milzīgiem reālās dzīves scenārijiem, kur tā var atrisināt lielas un izšķirošas problēmas. Ja jūs domājat, ka tas izklausās sarežģīti, labi, ka tas ir, bet jēdzieni ir vienlīdz viegli saprotami, ja izmēģināt piemērus blakus. Sāksim instalēt NLTK savā datorā, lai sāktu darbu.
NLTK instalēšana
Pirms sākat tikai piezīmi, šajā nodarbībā varat izmantot virtuālo vidi, kuru mēs varam izveidot ar šādu komandu:
pitons -m virtualenv nltkavots nltk / bin / aktivizēt
Kad virtuālā vide ir aktīva, varat instalēt NLTK bibliotēku virtuālajā env, lai varētu izpildīt nākamos veidotos piemērus:
pip instalēt nltkŠajā nodarbībā mēs izmantosim Anaconda un Jupyter. Ja vēlaties to instalēt savā datorā, skatiet nodarbību, kurā aprakstīts “Kā instalēt Anaconda Python uz Ubuntu 18.04 LTS ”un dalieties savās atsauksmēs, ja rodas kādas problēmas. Lai instalētu NLTK ar Anaconda, terminālā no Anaconda izmantojiet šādu komandu:
conda install -c anaconda nltkIzpildot iepriekš minēto komandu, mēs redzam kaut ko līdzīgu:
Kad visas nepieciešamās pakotnes ir instalētas un veiktas, mēs varam sākt izmantot NLTK bibliotēku ar šādu importēšanas paziņojumu:
importa nltkSāksim ar pamata NLTK piemēriem tūlīt, kad mums ir instalētas priekšnoteikumu paketes.
Tokenizācija
Mēs sāksim ar Tokenization, kas ir pirmais solis teksta analīzes veikšanā. Marķieris var būt jebkura mazāk analizējama teksta daļa. Ir divi marķēšanas veidi, kurus var veikt ar NLTK:
- Teikuma marķēšana
- Vārdu marķēšana
Jūs varat uzminēt, kas notiek ar katru no Tokenization, tāpēc pievērsīsimies kodu piemēriem.
Teikuma marķēšana
Kā norāda nosaukums, teikuma marķieri sadala teksta daļu teikumos. Izmēģināsim vienkāršu koda fragmentu tam pašam, kur mēs izmantojam tekstu, kuru izvēlējāmies no Apache Kafka apmācības. Mēs veiksim nepieciešamo importu
importa nltkno nltk.tokenize importēt sent_tokenize
Lūdzu, ņemiet vērā, ka var rasties kļūda, jo trūkst atkarības no izsauktā nltk punkt. Pievienojiet šādu rindu tūlīt pēc importēšanas programmā, lai izvairītos no brīdinājumiem:
nltk.lejupielādēt ('punkt')Man tas deva šādu rezultātu:
Pēc tam mēs izmantojam importēto teikuma marķieri:
text = "" "Tēma Kafka ir kaut kas tāds, kur tiek nosūtīts ziņojums. Patērētājslietojumprogrammas, kuras interesējas par šo tēmu, ievelk ziņu tajā
tēmu un ar šiem datiem var darīt jebko. Līdz noteiktam laikam jebkurš skaits
patērētāju lietojumprogrammas var nosūtīt šo ziņojumu vairākas reizes."" "
teikumi = sent_tokenize (teksts)
drukāt (teikumi)
Mēs redzam kaut ko līdzīgu, izpildot iepriekš minēto skriptu:
Kā jau bija paredzēts, teksts tika pareizi sakārtots teikumos.
Vārdu marķēšana
Kā norāda nosaukums, Word Tokenizers sadala teksta daļu vārdos. Izmēģināsim vienkāršu koda fragmentu tam pašam ar tādu pašu tekstu kā iepriekšējā piemērā:
no nltk.tokenize importēt vārdu_tokenizevārdi = word_tokenize (teksts)
drukāt (vārdi)
Mēs redzam kaut ko līdzīgu, izpildot iepriekš minēto skriptu:
Kā jau bija paredzēts, teksts tika pareizi sakārtots vārdos.
Frekvences sadalījums
Tagad, kad mēs esam sadalījuši tekstu, mēs varam arī aprēķināt katra vārda biežumu izmantotajā tekstā. Tas ir ļoti vienkārši izdarāms ar NLTK, šeit ir mūsu izmantotais koda fragments:
no nltk.varbūtības importa FreqDistsadalījums = FreqDist (vārdi)
izdruka (izplatīšana)
Mēs redzam kaut ko līdzīgu, izpildot iepriekš minēto skriptu:
Tālāk tekstā varam atrast visbiežāk lietotos vārdus ar vienkāršu funkciju, kas pieņem parādāmo vārdu skaitu:
# Visizplatītākie vārdiizplatīšana.most_common (2)
Mēs redzam kaut ko līdzīgu, izpildot iepriekš minēto skriptu:
Visbeidzot, mēs varam izveidot frekvences sadalījuma diagrammu, lai noskaidrotu vārdus un to skaitu dotajā tekstā un skaidri saprastu vārdu sadalījumu:
Stopvārdi
Tāpat kā tad, kad mēs sarunājamies ar citu personu, izmantojot zvanu, pār zvanu mēdz būt zināms troksnis, kas ir nevēlama informācija. Tādā pašā veidā teksts no reālās pasaules satur arī troksni, ko sauc par Stopvārdi. Atslēgvārdi dažādās valodās var atšķirties, taču tos var viegli noteikt. Daži no atslēgvārdiem angļu valodā var būt - ir, ir, a, utt.
Mēs varam apskatīt vārdus, kurus NLTK uzskata par atslēgvārdiem angļu valodā, ar šādu koda fragmentu:
no nltk.korpusa importēšanas atslēgvārdinltk.lejupielādēt ('stopwords')
language = "angļu valoda"
stop_words = iestatīt (stopwords.vārdi (valoda))
drukāt (stop_words)
Tā kā, protams, pieturas vārdu kopa var būt liela, tā tiek glabāta kā atsevišķa datu kopa, kuru var lejupielādēt ar NLTK, kā parādīts iepriekš. Mēs redzam kaut ko līdzīgu, izpildot iepriekš minēto skriptu:
Šie vārdi ir jānoņem no teksta, ja vēlaties veikt precīzu teksta analīzi paredzētajam teksta fragmentam. Noņemsim pieturas vārdus no mūsu tekstuālajiem marķieriem:
filtered_words = []vārdam vārdos:
ja vārds nav stop_words:
filtered_words.pievienot (vārds)
filtered_words
Mēs redzam kaut ko līdzīgu, izpildot iepriekš minēto skriptu:
Vārds izriet
Vārda pamats ir vārda kāts. Piemēram:
Mēs veiksim radušos filtrētos vārdus, no kuriem pēdējā sadaļā mēs noņēmām pieturas vārdus. Uzrakstīsim vienkāršu koda fragmentu, kur operācijas veikšanai izmantojam NLTK stumbru:
no nltk.kātu imports PorterStemmerps = PorterStemmer ()
stemmed_words = []
vārdam filtrētos vārdos:
stemmed_words.pievienot (ps.kāts (vārds))
drukāt ("Stemmed Sentence:", stemmed_words)
Mēs redzam kaut ko līdzīgu, izpildot iepriekš minēto skriptu:
POS marķēšana
Pēc teksta analīzes nākamais solis ir identificēt un sagrupēt katru vārdu pēc to vērtības, t.i.e. ja katrs no vārdiem ir lietvārds vai darbības vārds vai kaut kas cits. To sauc par runas marķēšanas daļu. Veiksim POS marķēšanu tūlīt:
žetoni = nltk.word_tokenize (teikumi [0])druka (žetoni)
Mēs redzam kaut ko līdzīgu, izpildot iepriekš minēto skriptu:
Tagad mēs varam veikt marķēšanu, kurai mums būs jāielādē cita datu kopa, lai identificētu pareizos tagus:
nltk.lejupielādēt ('averaged_perceptron_tagger')nltk.pos_tag (žetoni)
Šeit ir marķēšanas rezultāts:
Tagad, kad mēs beidzot esam identificējuši atzīmētos vārdus, šī ir datu kopa, kurā mēs varam veikt sentimenta analīzi, lai identificētu emocijas, kas slēpjas aiz teikuma.
Secinājums
Šajā nodarbībā mēs apskatījām lielisku dabiskās valodas paketi NLTK, kas ļauj mums strādāt ar nestrukturētiem teksta datiem, lai identificētu visus apstāšanās vārdus un veiktu dziļāku analīzi, sagatavojot asu datu kopu teksta analīzei ar tādām bibliotēkām kā sklearn.
Github vietnē atrodiet visu šajā nodarbībā izmantoto avota kodu. Lūdzu, dalieties savās atsauksmēs par nodarbību Twitter vietnē @sbmaggarwal un @LinuxHint.