Piton

NLTK oktatóanyag a Pythonban

NLTK oktatóanyag a Pythonban
Az adatok korszaka már itt van. Az adatok generálásának sebessége ma nagyobb, mint valaha, és mindig növekszik. Legtöbbször azok az emberek, akik a mindennapi adatokkal foglalkoznak, többnyire strukturálatlan szöveges adatokkal dolgoznak. Ezen adatok egy részének vannak társított elemei, például képek, videók, hanganyagok stb. Ezen adatok egyes forrásai webhelyek, napi blogok, híroldalak és még sok más. Mindezen adatok gyorsabb elemzése szükséges, és sokszor döntő fontosságú is.

Például egy vállalkozás futtathat egy szövegelemző motort, amely feldolgozza a vállalkozásával kapcsolatos tweeteket, megemlítve a cég nevét, helyét, folyamatát és elemezve az adott tweethez kapcsolódó érzelmeket. A helyes cselekvések gyorsabban megtehetők, ha az adott vállalkozás megismeri a negatív tweetek növekvő számát egy adott helyen, hogy megmentse magát egy baklövéstől vagy bármi mástól. Egy másik gyakori példa erre Youtube. A Youtube rendszergazdái és moderátorai megismerik a videó hatását, a videóhoz fűzött megjegyzések vagy a videocsevegési üzenetek típusától függően. Ez sokkal gyorsabban segít megtalálni a nem megfelelő tartalmat a webhelyen, mert most felszámolták a kézi munkát és automatizált intelligens szövegelemző robotokat alkalmaztak.

Ebben a leckében a szövegelemzéssel kapcsolatos fogalmakat tanulmányozzuk az NLTK könyvtár segítségével a Pythonban. Ezen fogalmak közül néhány a következőket foglalja magában:

Az NLP lesz a fő fókuszterület ebben a leckében, mivel hatalmas valós élethelyzetekre alkalmazható, ahol nagy és döntő problémákat képes megoldani. Ha úgy gondolja, hogy ez összetettnek hangzik, akkor igen, de a fogalmak ugyanolyan könnyen érthetők, ha egymás mellé próbálunk példákat. Kezdjük az NLTK telepítésével a gépedre, hogy elkezdhessük.

Az NLTK telepítése

Csak egy megjegyzés, mielőtt elkezdené, használhat virtuális környezetet ehhez a leckéhez, amelyet a következő paranccsal készíthetünk:

python -m virtualenv nltk
forrás nltk / bin / activ

Miután a virtuális környezet aktív, telepítheti az NLTK könyvtárat a virtuális env-be, hogy a következő módon létrehozott példák végrehajthatók legyenek:

pip install nltk

Ebben a leckében felhasználjuk az Anacondát és a Jupytert. Ha telepíteni szeretné a számítógépére, nézze meg a „Hogyan telepítsük az Anaconda Python-ot az Ubuntu 18-ra” című leckét.04 LTS ”, és ossza meg visszajelzését, ha bármilyen problémába ütközik. Az NLTK Anaconda alkalmazással történő telepítéséhez használja a következő parancsot az Anaconda termináljában:

conda install -c anaconda nltk

Valami ilyesmit látunk, amikor végrehajtjuk a fenti parancsot:

Miután az összes szükséges csomag telepítve és elkészült, elkezdhetjük az NLTK könyvtár használatát a következő importálási utasítással:

import nltk

Kezdjük az NLTK alapvető példáival, miután telepítettük az előfeltételek csomagjait.

Tokenizálás

A tokenizálással kezdjük, amely a szövegelemzés első lépése. A token a szöveg bármely elemének kisebb része lehet, amelyet elemezni lehet. A tokenizálásnak két típusa végezhető el az NLTK segítségével:

Kitalálhatja, hogy mi történik az egyes tokenizálásokkal, ezért merüljünk el a kód példákban.

Mondatjelzés

Ahogy a név is tükrözi, a mondatjelzők mondatokra bontják a szöveget. Próbálkozzunk egy egyszerű kódrészlettel ugyanahhoz, ahol az Apache Kafka oktatóanyagból kiválasztott szöveget használjuk fel. Mi elvégezzük a szükséges importokat

import nltk
az nltk-ból.tokenize import import_tokenize

Felhívjuk figyelmét, hogy hibával szembesülhet a meghívott nltk hiányzó függősége miatt punkt. A figyelmeztetések elkerülése érdekében közvetlenül a program importja után adja hozzá a következő sort:

nltk.letöltés ('punkt')

Számomra a következő eredményt adta:

Ezután felhasználjuk az importált mondatjelzőt:

text = "" "A Kafka témája üzenet küldése. A fogyasztó
az adott téma iránt érdeklődő alkalmazások ebbe az üzenetbe húznak
témát, és bármit megtehet az adatokkal. Egy adott időpontig tetszőleges számú
a fogyasztói alkalmazások tetszőleges számú alkalommal kihúzhatják ezt az üzenetet."" "
mondatok = sent_tokenize (szöveg)
nyomtatás (mondatok)

Valami ilyesmit látunk, amikor a fenti parancsfájlt végrehajtjuk:

Ahogy az várható volt, a szöveget helyesen mondatokba rendezték.

Szó tokenizálás

Ahogy a név is tükrözi, a Word Tokenizer szavakra bontja a szöveget. Próbálkozzunk egy egyszerű kódrészlettel, ugyanazzal a szöveggel, mint az előző példa:

az nltk-ból.tokenize import word_tokenize
szavak = word_tokenize (szöveg)
nyomtatás (szavak)

Valami ilyesmit látunk, amikor a fenti parancsfájlt végrehajtjuk:

Ahogy az várható volt, a szöveget szavakba rendezték megfelelően.

Gyakorisági eloszlását

Most, hogy megtörtük a szöveget, kiszámíthatjuk az egyes szavak gyakoriságát is az általunk használt szövegben. Nagyon egyszerű megtenni az NLTK-val, itt van az általunk használt kódrészlet:

az nltk-ból.valószínűség importálása FreqDist
elosztás = FreqDist (szavak)
nyomtatás (terjesztés)

Valami ilyesmit látunk, amikor a fenti parancsfájlt végrehajtjuk:

Ezután megtalálhatjuk a leggyakoribb szavakat a szövegben egy egyszerű függvénnyel, amely elfogadja a megjelenítendő szavak számát:

# A leggyakoribb szavak
terjesztés.leggyakoribb (2)

Valami ilyesmit látunk, amikor a fenti parancsfájlt végrehajtjuk:

Végül elkészíthetünk egy frekvenciaeloszlási diagramot, hogy kitisztítsuk a szavakat és azok számát az adott szövegben, és megértsük a szavak eloszlását:

Stopwords

Csakúgy, mint amikor hívással beszélgetünk egy másik személlyel, a hívás során is előfordul némi zaj, ami nem kívánt információ. Ugyanígy a valós világból származó szöveg is zajt tartalmaz, amelyet neveznek Stopwords. A stopszavak nyelvenként változhatnak, de könnyen azonosíthatók. Az angol nyelvű kulcsszavak egy része lehet, van, van, a, stb.

Megtekinthetjük azokat a szavakat, amelyeket az NLTK az angol nyelvben Stopwords-nak tekint, a következő kódrészlettel:

az nltk-ból.corpus import stopwords
nltk.letöltés ('stopwords')
nyelv = "angol"
stop_words = set (stopwords.szavak (nyelv))
nyomtatás (stop_words)

Mivel a stop szavak készlete természetesen nagy lehet, külön adatkészletként kerül tárolásra, amelyet az NLTK segítségével lehet letölteni, amint azt a fentiekben bemutattuk. Valami ilyesmit látunk, amikor a fenti parancsfájlt végrehajtjuk:

Ezeket a megállító szavakat el kell távolítani a szövegből, ha pontos szövegelemzést szeretne végezni a megadott szövegdarabhoz. Távolítsuk el a stop szavakat a szöveges jeleinkből:

filtered_words = []
szó szavakkal:
ha a szó nem szerepel a stop_words-ben:
filtered_words.függelék (szó)
filtered_words

Valami ilyesmit látunk, amikor a fenti parancsfájlt végrehajtjuk:

Szó eredetű

A szó töve a szó alapja. Például:

A szűrt szavakból fogunk végezni, amelyekből az utolsó részben eltávolítottuk a leállítási szavakat. Írjunk egy egyszerű kódrészletet, ahol az NLTK sztringjét használjuk a művelet végrehajtására:

az nltk-ból.szár import PorterStemmer
ps = PorterStemmer ()
stemmed_words = []
szó a filtered_words kifejezésben:
stemmed_words.függelék (ps.szár (szó))
nyomtatás ("Származtatott mondat:", stemmed_words)

Valami ilyesmit látunk, amikor a fenti parancsfájlt végrehajtjuk:

POS címkézés

A szöveges elemzés következő lépése a származtatás után az, hogy azonosítsuk és csoportosítsuk az egyes szavakat értékük szerint, azaz.e. ha a szó mindegyike főnév vagy ige vagy valami más. Ezt a Beszédcímkézés részének nevezzük. Most végezzük el a POS címkézést:

tokenek = nltk.word_tokenize (mondatok [0])
nyomtatás (tokenek)

Valami ilyesmit látunk, amikor a fenti parancsfájlt végrehajtjuk:

Most elvégezhetjük a címkézést, amelyhez le kell töltenünk egy másik adatkészletet a helyes címkék azonosításához:

nltk.letöltés ('averaged_perceptron_tagger')
nltk.pos_tag (tokenek)


Itt van a címkézés kimenete:

Most, hogy végre azonosítottuk a címkézett szavakat, ez az az adatkészlet, amelyen hangulatelemzést végezhetünk a mondat mögött rejlő érzelmek azonosítására.

Következtetés

Ebben a leckében egy kiváló természetes nyelvi csomagot, az NLTK-t néztünk meg, amely lehetővé teszi számunkra, hogy strukturálatlan szöveges adatokkal dolgozzunk fel minden leállító szót és mélyebb elemzést végezzünk egy éles adatsor előkészítésével a szöveg elemzéséhez olyan könyvtárakkal, mint a sklearn.

Keresse meg az összes ebben a leckében használt forráskódot a Githubon. Kérjük, ossza meg visszajelzését a leckéről a Twitteren a @sbmaggarwal és a @LinuxHint oldalakon.

Az Xdotool használata az egérkattintások és a billentyűleütések ösztönzéséhez Linux alatt
Az Xdotool egy ingyenes és nyílt forráskódú parancssori eszköz az egérkattintások és a billentyűleütések szimulálására. Ez a cikk egy rövid útmutatót ...
A top 5 ergonómikus számítógépes egértermék Linuxhoz
Hosszan tartó számítógép-használat okoz-e fájdalmat a csuklóján vagy az ujjain?? Merev ízületek szenvednek, és folyamatosan kezet kell rázniuk? Égő fá...
Az egér és az érintőpad beállításainak módosítása az Xinput használatával Linux alatt
A legtöbb Linux disztribúció alapértelmezés szerint „libinput” könyvtárral szállítja a rendszer bemeneti eseményeit. Feldolgozhatja a Wayland és az X ...