Například může podnik provozovat stroj pro analýzu textu, který zpracovává tweety o svém podniku se zmínkou o názvu společnosti, umístění, procesu a analyzuje emoce související s tímto tweetem. Správné akce lze podniknout rychleji, pokud se tento podnik dozví o rostoucím negativním tweetu pro něj na konkrétním místě, aby se zachránil před chybou nebo čímkoli jiným. Dalším běžným příkladem bude pro Youtube. Správci a moderátoři Youtube se dozvědí o účinku videa v závislosti na typu komentářů k videu nebo zprávám videochatu. To jim pomůže najít nevhodný obsah na webu mnohem rychleji, protože nyní odstranili manuální práci a použili automatizované roboty pro inteligentní analýzu textu.
V této lekci budeme studovat některé koncepty související s textovou analýzou pomocí knihovny NLTK v Pythonu. Některé z těchto konceptů budou zahrnovat:
- Tokenizace, jak rozdělit část textu na slova, věty
- Vyhněte se zastavování slov založených na anglickém jazyce
- Provádění stemming a lemmatizace na kousku textu
- Identifikace tokenů, které mají být analyzovány
NLP bude v této lekci hlavní oblastí zájmu, protože je použitelná pro obrovské scénáře v reálném životě, kde může řešit velké a zásadní problémy. Pokud si myslíte, že to zní složitě, dobře to funguje, ale koncepty jsou stejně snadno pochopitelné, pokud vyzkoušíte příklady vedle sebe. Pojďme skočit do instalace NLTK na vašem počítači, abychom mohli začít.
Instalace NLTK
Jen poznámka před spuštěním, pro tuto lekci můžete použít virtuální prostředí, které můžeme provést pomocí následujícího příkazu:
python -m virtualenv nltkzdroj nltk / bin / aktivovat
Jakmile je virtuální prostředí aktivní, můžete nainstalovat knihovnu NLTK v rámci virtuálního env, aby bylo možné provést příklady, které vytvoříme dále:
pip install nltkV této lekci využijeme Anacondu a Jupytera. Chcete-li jej nainstalovat na svůj počítač, podívejte se na lekci, která popisuje „Jak nainstalovat Anaconda Python na Ubuntu 18.04 LTS ”a sdílejte zpětnou vazbu, pokud narazíte na nějaké problémy. Chcete-li nainstalovat NLTK s Anacondou, použijte v terminálu z Anacondy následující příkaz:
conda install -c anaconda nltkVidíme něco takového, když provedeme výše uvedený příkaz:
Jakmile jsou všechny potřebné balíčky nainstalovány a hotové, můžeme začít používat knihovnu NLTK s následujícím příkazem importu:
importovat nltkPojďme začít se základními příklady NLTK, když máme nainstalované balíčky předpokladů.
Tokenizace
Začneme tokenizací, což je první krok při provádění textové analýzy. Tokenem může být jakákoli menší část textu, kterou lze analyzovat. Existují dva typy tokenizace, které lze provést pomocí NLTK:
- Tokenizace věty
- Tokenizace slov
Můžete hádat, co se stane s každou tokenizací, takže se ponořme do příkladů kódu.
Tokenizace věty
Jak název odráží, tokenizátoři věty rozdělí část textu na věty. Zkusme jednoduchý úryvek kódu, kde použijeme text, který jsme vybrali z tutoriálu Apache Kafka. Provedeme potřebné importy
importovat nltkod nltk.tokenize import sent_tokenize
Vezměte prosím na vědomí, že se můžete setkat s chybou kvůli chybějící závislosti volaného nltk punkt. Přidejte následující řádek hned po importu do programu, abyste předešli jakémukoli varování:
nltk.stáhnout ('punkt')Pro mě to dalo následující výstup:
Dále použijeme importovaný větový tokenizer:
text = "" "Téma v Kafce je něco, kam se posílá zpráva. Spotřebitelaplikace, které se o dané téma zajímají, do toho vtahují zprávy
téma a může s těmito daty dělat cokoli. Do určité doby libovolný počet
spotřebitelské aplikace mohou tuto zprávu vytáhnout kolikrát.„“ „
věty = sent_tokenize (text)
tisk (věty)
Něco takového vidíme, když provedeme výše uvedený skript:
Podle očekávání byl text správně uspořádán do vět.
Tokenizace slov
Jak název odráží, tokenizátoři slov rozdělují část textu na slova. Zkusme jednoduchý fragment kódu se stejným textem jako v předchozím příkladu:
od nltk.tokenize import word_tokenizewords = word_tokenize (text)
tisk (slova)
Něco takového vidíme, když provedeme výše uvedený skript:
Podle očekávání byl text správně uspořádán do slov.
Distribuce frekvence
Nyní, když jsme text rozbili, můžeme také vypočítat frekvenci každého slova v textu, který jsme použili. Je to velmi jednoduché udělat s NLTK, zde je fragment kódu, který používáme:
od nltk.pravděpodobnost importu FreqDistdistribution = FreqDist (slova)
tisk (distribuce)
Něco takového vidíme, když provedeme výše uvedený skript:
Dále můžeme najít nejběžnější slova v textu s jednoduchou funkcí, která přijímá počet slov, která se mají zobrazit:
# Nejběžnější slovarozdělení.most_common (2)
Něco takového vidíme, když provedeme výše uvedený skript:
Nakonec můžeme vytvořit graf distribuce frekvence, abychom vyčistili slova a jejich počet v daném textu a jasně porozuměli distribuci slov:
Stop slova
Stejně jako když hovoříme s jinou osobou prostřednictvím hovoru, během hovoru obvykle dochází k nějakému šumu, což je nežádoucí informace. Stejným způsobem obsahuje text z reálného světa také šum, který se označuje jako Stop slova. Stopwords se mohou lišit od jazyka k jazyku, ale lze je snadno identifikovat. Některá stop slova v angličtině mohou být - jsou, jsou, a, atd.
Můžeme se podívat na slova, která jsou NLTK pro anglický jazyk považována za Stopwords s následujícím fragmentem kódu:
od nltk.korpus import stopwordsnltk.stáhnout ('stopwords')
language = "anglicky"
stop_words = set (stopwords.slova (jazyk))
tisk (stop_words)
Protože sada stop slov může být samozřejmě velká, je uložena jako samostatná datová sada, kterou lze stáhnout pomocí NLTK, jak jsme si ukázali výše. Něco takového vidíme, když provedeme výše uvedený skript:
Tato zastavovací slova by měla být z textu odstraněna, pokud chcete provést přesnou analýzu textu pro poskytnutou část textu. Odeberme stop slova z našich textových tokenů:
filtr_words = []pro slovo slovy:
pokud slovo není v stop_words:
filtrovaný_slov.připojit (slovo)
filtrovaný_slov
Něco takového vidíme, když provedeme výše uvedený skript:
Slovo Stemming
Kmen slova je základem tohoto slova. Například:
Provedeme vyplývající z filtrovaných slov, ze kterých jsme v poslední části odstranili slova zastavení. Pojďme napsat jednoduchý fragment kódu, kde k provedení operace použijeme stemmer NLTK:
od nltk.kmenový import PorterStemmerps = PorterStemmer ()
stemmed_words = []
pro slovo ve filtrovaných slovech:
stemmed_words.připojit (ps.kmen (slovo))
print ("Stemmed Sentence:", stemmed_words)
Něco takového vidíme, když provedeme výše uvedený skript:
Označování POS
Dalším krokem v textové analýze je po ukončení identifikace a seskupení každého slova z hlediska jeho hodnoty, tj.E. jestliže každé slovo je podstatné jméno nebo sloveso nebo něco jiného. Toto se nazývá součást značení řeči. Pojďme nyní provést označování POS:
tokeny = nltk.word_tokenize (věty [0])tisk (žetony)
Něco takového vidíme, když provedeme výše uvedený skript:
Nyní můžeme provést značkování, pro které si budeme muset stáhnout další datovou sadu, abychom identifikovali správné značky:
nltk.stáhnout ('averaged_perceptron_tagger')nltk.pos_tag (tokeny)
Zde je výstup značkování:
Nyní, když jsme konečně identifikovali označená slova, je to datová sada, na které můžeme provádět analýzu sentimentu, abychom identifikovali emoce za větou.
Závěr
V této lekci jsme se podívali na vynikající balíček přirozeného jazyka, NLTK, který nám umožňuje pracovat s nestrukturovanými textovými daty, abychom identifikovali všechna zastavovací slova a provedli hlubší analýzu tím, že připravíme ostrý datový soubor pro textovou analýzu s knihovnami, jako je sklearn.
Najděte všechny zdrojové kódy použité v této lekci na Githubu. Sdělte nám svůj názor na lekci na Twitteru s @sbmaggarwal a @LinuxHint.