Na primjer, poduzeće može pokrenuti mehanizam za analizu teksta koji obrađuje tweetove o svom poslu spominjući naziv tvrtke, mjesto, proces i analizirajući emocije povezane s tim tweetom. Ispravne radnje mogu se poduzeti brže ako to poduzeće sazna za rastuće negativne tweetove za njega na određenom mjestu kako bi se spasilo od greške ili bilo čega drugog. Još jedan uobičajeni primjer će za Youtube. Administratori i moderatori na YouTubeu upoznaju se s učinkom videozapisa ovisno o vrsti komentara na videozapisu ili porukama video chata. To će im pomoći da mnogo brže pronađu neprikladan sadržaj na web mjestu, jer su sada iskorijenili ručni rad i zaposlili automatizirane pametne botove za analizu teksta.
U ovoj ćemo lekciji proučiti neke koncepte povezane s analizom teksta uz pomoć NLTK biblioteke u Pythonu. Neki od ovih pojmova uključuju:
- Tokenizacija, kako razbiti dio teksta na riječi, rečenice
- Izbjegavanje zaustavljanja riječi temeljenih na engleskom jeziku
- Izvođenje stemminga i lematizacije na dijelu teksta
- Utvrđivanje žetona koji će se analizirati
NLP će biti glavno područje fokusa u ovoj lekciji jer je primjenjiv na ogromne scenarije iz stvarnog života gdje može riješiti velike i ključne probleme. Ako mislite da ovo zvuči složeno, dobro jest, ali koncepte je jednako lako razumjeti ako isprobate primjere jedan pored drugog. Krenimo u instaliranje NLTK-a na vaš stroj da započnemo s njim.
Instaliranje NLTK
Samo napomenu prije početka, za ovu lekciju možete koristiti virtualno okruženje koje možemo napraviti slijedećom naredbom:
python -m virtualenv nltkizvor nltk / bin / aktiviraj
Jednom kada je virtualno okruženje aktivno, možete instalirati NLTK knjižnicu unutar virtualnog okruženja tako da se mogu izvršavati primjeri koje sljedeći kreiramo:
pip instalirati nltkU ovoj ćemo lekciji koristiti Anacondu i Jupyter. Ako ga želite instalirati na svoj stroj, pogledajte lekciju koja opisuje „Kako instalirati Anaconda Python na Ubuntu 18.04 LTS ”i podijelite svoje povratne informacije ako se suočite s bilo kojim problemom. Da biste instalirali NLTK s Anacondom, upotrijebite sljedeću naredbu u terminalu iz Anaconde:
conda install -c anaconda nltkOtprilike ovako vidimo kad izvršimo gornju naredbu:
Jednom kada su instalirani i gotovi svi potrebni paketi, možemo započeti s korištenjem knjižnice NLTK sa sljedećim izrazom o uvozu:
uvoziti nltkKrenimo s osnovnim primjerima NLTK-a sada kada imamo instalirane pakete preduvjeta.
Tokenizacija
Započet ćemo s tokenizacijom koja je prvi korak u izvođenju analize teksta. Token može biti bilo koji manji dio teksta koji se može analizirati. Postoje dvije vrste tokenizacije koje se mogu provesti s NLTK:
- Tokenizacija rečenice
- Tokenizacija riječi
Možete pogoditi što se događa na svakoj od tokenizacija, pa zaronimo u primjere koda.
Tokenizacija rečenice
Kako naziv odražava, Tokenizers rečenica dijeli dio teksta u rečenice. Pokušajmo s jednostavnim isječkom koda za isti gdje se služimo tekstom koji smo odabrali iz udžbenika Apache Kafka. Izvršit ćemo potreban uvoz
uvoziti nltkiz nltk.tokenize uvoz sent_tokenize
Imajte na umu da biste se mogli suočiti s pogreškom zbog nedostajuće ovisnosti za pozvani nltk punkt. Dodajte sljedeći redak odmah nakon uvoza u program kako biste izbjegli upozorenja:
nltk.preuzmi ('punkt')Za mene je dao sljedeći rezultat:
Dalje, koristimo se rečenicama koje smo uveli:
text = "" "Tema na Kafki je nešto gdje se šalje poruka. Potrošačaplikacije koje zanima ta tema uvlače poruku u to
temu i može učiniti sve s tim podacima. Do određenog vremena, bilo koji broj
Potrošačke aplikacije mogu povući ovu poruku bilo koji broj puta."" "
rečenice = poslan_tokenizirati (tekst)
ispis (rečenice)
Otprilike ovako vidimo kad izvršimo gornju skriptu:
Očekivano, tekst je pravilno organiziran u rečenice.
Tokenizacija riječi
Kako naziv govori, Word Tokenizers dijelove teksta dijeli na riječi. Pokušajmo s jednostavnim isječkom koda za isti s istim tekstom kao u prethodnom primjeru:
iz nltk.tokenize uvoz word_tokenizeriječi = riječ_tokenizirati (tekst)
ispis (riječi)
Otprilike ovako vidimo kad izvršimo gornju skriptu:
Očekivano, tekst je pravilno organiziran u riječi.
Distribucija frekvencije
Sad kad smo slomili tekst, možemo izračunati i učestalost svake riječi u tekstu koji smo koristili. S NLTK je vrlo jednostavno, evo isječka koda koji koristimo:
iz nltk.vjerojatnost uvoz FreqDistdistribucija = FreqDist (riječi)
ispis (distribucija)
Otprilike ovako vidimo kad izvršimo gornju skriptu:
Dalje, u tekstu možemo pronaći najčešće riječi s jednostavnom funkcijom koja prihvaća broj prikazanih riječi:
# Najčešće riječidistribucija.najčešće_često (2)
Otprilike ovako vidimo kad izvršimo gornju skriptu:
Napokon, možemo napraviti grafikon raspodjele frekvencija kako bismo raščistili riječi i njihov broj u danom tekstu i jasno razumjeli raspodjelu riječi:
Lozinke
Baš kao kad razgovaramo s drugom osobom putem poziva, tijekom poziva obično se čuje neka buka koja je neželjena informacija. Na isti način, tekst iz stvarnog svijeta također sadrži buku koja se naziva Lozinke. Lozinke se mogu razlikovati od jezika do jezika, ali ih je lako prepoznati. Neke od zaustavljenih riječi na engleskom jeziku mogu biti - jesu, jesu, su, su, itd.
Riječi koje NLTK smatra engleskim jezikom za zaustavljanje možemo pogledati sa sljedećim isječkom koda:
iz nltk.zaustavne riječi za uvoz korpusanltk.preuzimanje ('stopwords')
jezik = "engleski"
stop_words = set (stopwords.riječi (jezik))
ispis (stop_words)
Kako, naravno, skup zaustavnih riječi može biti velik, pohranjen je kao zaseban skup podataka koji se može preuzeti s NLTK-om kao što smo gore prikazali. Otprilike ovako vidimo kad izvršimo gornju skriptu:
Ove zaustavne riječi treba ukloniti iz teksta ako želite izvršiti preciznu analizu teksta za ponuđeni dio teksta. Uklonimo zaustavne riječi iz naših tekstualnih tokena:
filtered_words = []za riječ u riječima:
ako riječ nije u stop_words:
filtrirane_ riječi.dodati (riječ)
filtrirane_ riječi
Otprilike ovako vidimo kad izvršimo gornju skriptu:
Iskušivanje riječi
Osnova riječi je osnova te riječi. Na primjer:
Izvest ćemo izvedbu na filtriranim riječima iz kojih smo uklonili zaustavne riječi u posljednjem odjeljku. Napišimo jednostavan isječak koda gdje koristimo NLTK-ov matični element za izvođenje operacije:
iz nltk.uvoz stabljike PorterStemmerps = PorterStemmer ()
stemmed_words = []
za riječ u filtered_words:
matične_ riječi.dodati (ps.stabljika (riječ))
ispis ("Temeljna rečenica:", matične_ riječi)
Otprilike ovako vidimo kad izvršimo gornju skriptu:
POS označavanje
Sljedeći korak u tekstualnoj analizi je identifikacija i grupiranje svake riječi u smislu njihove vrijednosti, tj.e. ako je svaka od riječi imenica ili glagol ili nešto drugo. To se naziva dijelom označavanja govora. Izvršimo označavanje POS-a sada:
žetoni = nltk.word_tokenize (rečenice [0])ispis (žetoni)
Otprilike ovako vidimo kad izvršimo gornju skriptu:
Sada možemo izvršiti označavanje, za što ćemo morati preuzeti drugi skup podataka kako bismo identificirali ispravne oznake:
nltk.preuzimanje ('prosječni_perceptron_tagger')nltk.pos_tag (tokeni)
Evo rezultata označavanja:
Sad kad smo napokon identificirali označene riječi, ovo je skup podataka na kojem možemo provesti analizu osjećaja kako bismo identificirali osjećaje iza rečenice.
Zaključak
U ovoj smo lekciji pogledali izvrstan paket prirodnog jezika, NLTK koji nam omogućuje rad s nestrukturiranim tekstualnim podacima kako bismo prepoznali bilo koje zaustavne riječi i izveli dublju analizu pripremajući oštar skup podataka za analizu teksta s bibliotekama poput sklearn.
Pronađite sve izvorne kodove korištene u ovoj lekciji na Githubu. Molimo podijelite svoje povratne informacije o lekciji na Twitteru s @sbmaggarwal i @LinuxHint.