Napríklad, podnik môže spustiť nástroj na textovú analýzu, ktorý spracuje tweety o svojom podniku, pričom uvedie názov spoločnosti, miesto, proces a analyzuje emócie súvisiace s týmto tweetom. Správne kroky možno podniknúť rýchlejšie, ak sa táto firma dozvie o rastúcich negatívnych tweetoch pre ňu na konkrétnom mieste, aby sa ušetrila pred hrubým omylom alebo čímkoľvek iným. Ďalším bežným príkladom bude pre YouTube. Správcovia a moderátori Youtube sa dozvedia o účinku videa v závislosti od typu komentárov k videu alebo správ videochatu. To im pomôže nájsť nevhodný obsah na webe oveľa rýchlejšie, pretože teraz odstránili manuálnu prácu a nasadili automatizované roboty na inteligentnú analýzu textu.
V tejto lekcii si preštudujeme niektoré pojmy súvisiace s textovou analýzou pomocou knižnice NLTK v Pythone. Niektoré z týchto koncepcií budú zahŕňať:
- Tokenizácia, ako rozdeliť časť textu na slová, vety
- Vyhýbajte sa zastavovaniu slov založených na anglickom jazyku
- Vykonávanie stemmingu a lemmatizácie na kúsku textu
- Identifikácia tokenov, ktoré sa majú analyzovať
NLP bude v tejto lekcii hlavnou oblasťou zamerania, pretože je použiteľná pre obrovské scenáre v reálnom živote, kde môže vyriešiť veľké a zásadné problémy. Ak si myslíte, že to znie zložito, je to tak, ale koncepty sú rovnako ľahko pochopiteľné, ak vedľa seba vyskúšate príklady. Vráťme sa k inštalácii NLTK na vašom počítači a začnite s tým.
Inštaluje sa NLTK
Len na úvod pred začatím môžete pre túto lekciu použiť virtuálne prostredie, ktoré môžeme vytvoriť pomocou nasledujúceho príkazu:
python -m virtualenv nltkzdroj nltk / bin / aktivovať
Keď je virtuálne prostredie aktívne, môžete si nainštalovať knižnicu NLTK vo virtuálnom prostredí env, aby bolo možné vykonať príklady, ktoré vytvoríme ďalej:
pip nainštalovať nltkV tejto lekcii využijeme Anacondu a Jupyter. Ak si ho chcete nainštalovať na svoj počítač, pozrite si lekciu, ktorá popisuje „Ako nainštalovať Anaconda Python na Ubuntu 18.04 LTS ”a podeľte sa o svoje pripomienky, ak narazíte na akýkoľvek problém. Ak chcete nainštalovať NLTK s Anacondou, použite v termináli z príkazu Anaconda nasledujúci príkaz:
conda install -c anaconda nltkVidíme niečo také, keď vykonáme vyššie uvedený príkaz:
Po nainštalovaní a dokončení všetkých potrebných balíkov môžeme začať používať knižnicu NLTK s nasledujúcim príkazom na import:
importovať nltkZačnime so základnými príkladmi NLTK, keď už máme nainštalované balíky nevyhnutných predpokladov.
Tokenizácia
Začneme tokenizáciou, ktorá je prvým krokom pri vykonávaní textovej analýzy. Token môže byť akákoľvek menšia časť textu, ktorá sa dá analyzovať. Existujú dva typy tokenizácie, ktoré je možné vykonať pomocou NLTK:
- Tokenizácia vety
- Tokenizácia slov
Môžete hádať, čo sa stane s každou tokenizáciou, takže sa ponorme do príkladov kódu.
Tokenizácia vety
Ako naznačuje názov, Tokenizátori vety rozdeľujú text na vety. Vyskúšajme jednoduchý útržok kódu, kde použijeme text, ktorý sme vybrali z tutoriálu Apache Kafka. Vykonáme potrebné dovozy
importovať nltkod nltk.tokenize import sent_tokenize
Upozorňujeme, že by ste mohli čeliť chybe z dôvodu chýbajúcej závislosti volaného súboru nltk punkt. Pridajte nasledujúci riadok hneď po importovaní do programu, aby ste sa vyhli akýmkoľvek varovaniam:
nltk.download ('punkt')Pre mňa to prinieslo nasledujúci výstup:
Ďalej použijeme importovaný vetný tokenizer:
text = "" "Téma v Kafke je niečo, na čo sa posiela správa. Spotrebiteľaplikácie, ktoré sa o danú tému zaujímajú, vťahujú do nej správu
téma a s týmito údajmi môže urobiť čokoľvek. Do konkrétneho času, ľubovoľný počet
spotrebiteľské aplikácie môžu túto správu načítať koľkokrát.„“ „
vety = sent_tokenize (text)
tlač (vety)
Vidíme niečo také, keď vykonáme vyššie uvedený skript:
Podľa očakávania bol text správne usporiadaný do viet.
Tokenizácia slov
Ako naznačuje názov, tokenizátory slov rozdeľujú kúsok textu na slová. Vyskúšajme jednoduchý útržok kódu pre rovnaký text s rovnakým textom ako v predchádzajúcom príklade:
od nltk.importovať slovo_tokenizovaťwords = word_tokenize (text)
tlač (slová)
Vidíme niečo také, keď vykonáme vyššie uvedený skript:
Podľa očakávania bol text správne usporiadaný do slov.
Distribúcia frekvencie
Teraz, keď sme text porušili, môžeme tiež vypočítať frekvenciu každého slova v texte, ktorý sme použili. Je to veľmi jednoduché urobiť s NLTK, tu je fragment kódu, ktorý používame:
od nltk.pravdepodobný import FreqDistdistribúcia = FreqDist (slová)
tlač (distribúcia)
Vidíme niečo také, keď vykonáme vyššie uvedený skript:
Ďalej môžeme v texte nájsť najbežnejšie slová s jednoduchou funkciou, ktorá akceptuje počet slov, ktoré sa majú zobraziť:
# Najčastejšie slovádistribúcia.most_common (2)
Vidíme niečo také, keď vykonáme vyššie uvedený skript:
Na záver môžeme urobiť graf rozdelenia frekvencií, ktorý vymaže slová a ich počet v danom texte a jasne pochopí rozdelenie slov:
Stopové slová
Rovnako ako keď hovoríme s inou osobou prostredníctvom hovoru, býva počas hovoru určitý hluk, čo sú nežiaduce informácie. Rovnakým spôsobom obsahuje text z reálneho sveta aj šum, ktorý sa označuje ako Stopové slová. Stopové slová sa môžu v jednotlivých jazykoch líšiť, ale dajú sa ľahko identifikovať. Niektoré stopové slová v anglickom jazyku môžu byť - sú, sú, a, atď.
Na slová, ktoré NLTK pre anglický jazyk považuje N Stop za slová, sa môžeme pozrieť pomocou nasledujúceho útržku kódu:
od nltk.korpusové importné slovánltk.download ('stopwords')
jazyk = "angličtina"
stop_words = sada (stopwords.slová (jazyk))
print (stop_words)
Pretože skupina zastávkových slov môže byť samozrejme veľká, je uložená ako samostatná množina údajov, ktorú je možné stiahnuť pomocou programu NLTK, ako sme si ukázali vyššie. Vidíme niečo také, keď vykonáme vyššie uvedený skript:
Tieto zastavovacie slová by sa mali z textu odstrániť, ak chcete vykonať presnú textovú analýzu poskytnutej časti textu. Odstráňte ukončovacie slová z našich textových tokenov:
filtrované_slová = []pre slovo slovami:
ak slovo nie je v stop_words:
filtrované_slová.pripojiť (slovo)
filtrované_slová
Vidíme niečo také, keď vykonáme vyššie uvedený skript:
Stemming slova
Kmeň slova je základom tohto slova. Napríklad:
Vykonáme vychádzanie z filtrovaných slov, z ktorých sme v poslednej časti odstránili zastávky. Poďme napísať jednoduchý úryvok kódu, kde na vykonanie operácie použijeme stemmer NLTK:
od nltk.kmeňový import PorterStemmerps = PorterStemmer ()
stemmed_words = []
pre slovo vo filtrovaných_slovách:
stemmed_words.pridať (ps.stonka (slovo))
print ("Zastavená veta:", stemmed_words)
Vidíme niečo také, keď vykonáme vyššie uvedený skript:
Označovanie POS
Ďalším krokom v textovej analýze je po identifikácii a zoskupení každého slova z hľadiska jeho hodnoty, t.j.e. ak je každé zo slov podstatné meno alebo sloveso alebo niečo iné. Toto sa označuje ako súčasť označovania reči. Teraz vykonajme označovanie POS:
tokeny = nltk.word_tokenize (vety [0])tlač (tokeny)
Vidíme niečo také, keď vykonáme vyššie uvedený skript:
Teraz môžeme vykonať značkovanie, pre ktoré si budeme musieť stiahnuť ďalšiu množinu údajov, aby sme určili správne značky:
nltk.stiahnuť ('averaged_perceptron_tagger')nltk.pos_tag (tokeny)
Tu je výstup značkovania:
Teraz, keď sme konečne identifikovali označené slová, ide o množinu údajov, na ktorej môžeme vykonať analýzu sentimentu a identifikovať emócie za vetou.
Záver
V tejto lekcii sme sa zamerali na vynikajúci balík prirodzeného jazyka, NLTK, ktorý nám umožňuje pracovať s neštruktúrovanými textovými dátami na identifikáciu akýchkoľvek zastávkových slov a vykonať hlbšiu analýzu pomocou prípravy ostrej sady dát na analýzu textu s knižnicami ako sklearn.
Všetky zdrojové kódy použité v tejto lekcii nájdete na serveri Github. Podeľte sa o svoju spätnú väzbu k lekcii na Twitteri s @sbmaggarwal a @LinuxHint.