Zpracování přirozeného jazyka je aspektem strojového učení, které vám umožňuje zpracovat psaná slova do strojově přívětivého jazyka. Takové texty se pak stanou upravitelnými a můžete na nich spouštět výpočetní algoritmy, jak chcete.

Logika této podmanivé technologie se zdá být složitá, ale není. A dokonce i nyní, se solidním pochopením základního programování v Pythonu, můžete vytvořit nový textový procesor pro kutily pomocí sady nástrojů pro přirozený jazyk (NLTK).

Zde je návod, jak začít s Pythonovým NLTK.

Co je NLTK a jak funguje?

Napsáno v Pythonu, NLTK nabízí řadu funkcí pro manipulaci s řetězci. Je to univerzální knihovna přirozeného jazyka s rozsáhlým úložištěm modelů pro různé aplikace v přirozeném jazyce.

S NLTK můžete zpracovávat nezpracované texty a extrahovat z nich smysluplné funkce. Nabízí také modely pro analýzu textu, gramatiky založené na funkcích a bohaté lexikální zdroje pro sestavení kompletního jazykového modelu.

Jak nastavit NLTK

Nejprve vytvořte kořenovou složku projektu kdekoli na vašem PC. Chcete -li začít používat knihovnu NLTK, otevřete terminál v kořenové složce, kterou jste vytvořili dříve a

vytvořit virtuální prostředí.

Poté do tohoto prostředí nainstalujte sadu nástrojů pro přirozený jazyk pip:

pip install nltk

NLTK však nabízí řadu datových sad, které slouží jako základ pro nové modely přirozeného jazyka. Chcete-li k nim získat přístup, musíte roztočit integrovaný stahovač dat NLTK.

Jakmile tedy úspěšně nainstalujete NLTK, otevřete soubor Pythonu pomocí libovolného editoru kódu.

Poté importujte soubor nltk modul a vytvořte instanci stahovače dat pomocí následujícího kódu:

pip install nltk
nltk.download ()

Spuštěním výše uvedeného kódu přes terminál se zobrazí grafické uživatelské rozhraní pro výběr a stahování datových balíčků. Zde budete muset vybrat balíček a kliknout na Stažení tlačítko pro jeho získání.

Jakýkoli balíček dat, který stáhnete, přejde do zadaného adresáře zapsaného v souboru Stáhnout adresář pole. Pokud chcete, můžete to změnit. Ale zkuste zachovat výchozí umístění na této úrovni.

Příbuzný: Nejlepší bezplatné editory kódu pro psaní vaší první aplikace

Poznámka: Datové balíčky se standardně připojují k systémovým proměnným. Můžete je tedy i nadále používat pro následné projekty bez ohledu na to, jaké prostředí Pythonu používáte.

Jak používat tokeny NLTK

Nakonec NLTK nabízí vyškolené tokenizační modely pro slova a věty. Pomocí těchto nástrojů můžete vygenerovat seznam slov z věty. Nebo přeměňte odstavec na rozumné větné pole.

Zde je příklad použití NLTK word_tokenizer:

import nltk
z nltk.tokenize importujte word_tokenize
word = "Toto je ukázkový text"
tokenWord = word_tokenizer (slovo)
tisk (tokenWord)
Výstup:
['This', 'is', 'an', 'example', 'text']

NLTK také používá předem natrénovaný tokenizer vět s názvem PunktSentenceTokenizer. Funguje to tak, že se odstavec rozdělí na seznam vět.

Podívejme se, jak to funguje s odstavcem se dvěma větami:

import nltk
z nltk.tokenize import word_tokenize, PunktSentenceTokenizer
věta = "Toto je ukázkový text. Toto je návod pro NLTK "
token = PunktSentenceTokenizer ()
tokenized_sentence = token.tokenize (věta)
tisk (tokenized_sentence)
Výstup:
['Toto je příklad textu.', 'Toto je návod pro NLTK']

Každou větu v poli generovaném z výše uvedeného kódu můžete dále tokenizovat pomocí word_tokenizer a Python pro smyčku.

Příklady použití NLTK

I když nemůžeme demonstrovat všechny možné případy použití NLTK, zde je několik příkladů, jak jej můžete začít používat k řešení problémů v reálném životě.

Získejte definice slov a jejich části řeči

NLTK nabízí modely pro určování částí řeči, získání podrobné sémantiky a možné kontextové použití různých slov.

Můžete použít wordnet model pro generování proměnných pro text. Poté určete jeho význam a část řeči.

Zkontrolujme například možné proměnné pro „Monkey:“

import nltk
z nltk.corpus importujte wordnet jako wn
print (wn.synsets ('monkey'))
Výstup:
[Synset ('monkey.n.01'), Synset ('imp.n.02'), Synset ('tamper.v.01'), Synset ('putter.v.02')]

Výše uvedený kód vydává možné alternativy slov nebo syntaxe a části řeči pro „Monkey“.

Nyní zkontrolujte význam „opice“ pomocí definice metoda:

Monkey = wn.synset ('monkey.n.01'). Definition ()
Výstup:
některý z různých primátů s dlouhým ocasem (kromě prozimů)

Můžete nahradit řetězec v závorkách jinými generovanými alternativami a zjistit, jaké výstupy NLTK.

The pos_tag model však určuje části řeči slova. Můžete to použít s word_tokenizer nebo PunktSentenceTokenizer () pokud máte co do činění s delšími odstavci.

Funguje to takto:

import nltk
z nltk.tokenize import word_tokenize, PunktSentenceTokenizer
word = "Toto je příklad textu. Toto je návod k NLTK "
token = PunktSentenceTokenizer ()
tokenized_sentence = token.tokenize (slovo)
pro i v tokenized_sentence:
tokenWordArray = word_tokenize (i)
partsOfSpeech = nltk.pos_tag (tokenWordArray)
tisk (partsOfSpeech)
Výstup:
[('This', 'DT'), ('is', 'VBZ'), ('an', 'DT'), ('example', 'NN'), ('' text ',' NN '), ('.', '.')]
[('This', 'DT'), ('is', 'VBZ'), ('a', 'DT'), ('tutorial', 'JJ'), ('' on ',' IN '), ('NLTK', 'NNP')]

Výše uvedený kód spáruje každé tokenizované slovo s jeho řečovou značkou v n -tici. Význam těchto značek můžete zkontrolovat na Penn Treebank.

Pro čistší výsledek můžete odstranit tečky ve výstupu pomocí nahradit() metoda:

pro i v tokenized_sentence:
tokenWordArray = word_tokenize (i.replace ('.', ''))
partsOfSpeech = nltk.pos_tag (tokenWordArray)
tisk (partsOfSpeech)
Čistší výkon:
[('This', 'DT'), ('is', 'VBZ'), ('an', 'DT'), ('example', 'NN'), ('' text ',' NN ') ]
[('This', 'DT'), ('is', 'VBZ'), ('a', 'DT'), ('tutorial', 'JJ'), ('' on ',' IN '), ('NLTK', 'NNP')]

Vizualizace trendů funkcí pomocí vykreslování NLTK

Extrahování funkcí ze surových textů je často zdlouhavé a časově náročné. Nejsilnější determinátory funkcí však můžete zobrazit v textu pomocí grafu trendů distribuce frekvence NLTK.

NLTK se však synchronizuje s matplotlib. Toho můžete využít k zobrazení konkrétního trendu ve vašich datech.

Níže uvedený kód například porovnává sadu pozitivních a negativních slov na distribučním grafu pomocí jejich posledních dvou abeced:

import nltk
z nltk importovat ConditionalFreqDist
Seznamy negativních a pozitivních slov:
negativy = [
'abnormální', 'zrušit', 'ohavný',
„ohavně“, „ohavný“, „ohavný“
]
pozitiva = [
'přetéká', 'oplývá', 'hojnost',
„hojný“, „přístupný“, „přístupný“
]
# Rozdělte položky v každém poli do označených dvojic dvojic
# a zkombinujte obě pole:
pos_negData = ([("negativní", neg) pro neg v negativách]+[("pozitivní", pos) pro pos v pozitivních])
# Z výsledného pole extrahujte poslední dvě abecedy:
f = ((pos, i [-2:],) pro (pos, i) v pos_negData)
# Vytvořte distribuční graf těchto abeced
cfd = ConditionalFreqDist (f)
cfd.plot ()

Distribuční diagram abecedy vypadá takto:

Podíváme -li se pozorně na graf, slova končící na ce, ds, le, nd, a nt mají vyšší pravděpodobnost, že budou pozitivními texty. Ale ti, kteří končí al, ly, na, a te jsou spíše negativní slova.

Poznámka: Přestože jsme zde použili data generovaná vlastními silami, můžete k některým vestavěným datovým sadám NLTK přistupovat pomocí čtečky Corpus jejich zavoláním z korpus třída nltk. Možná se budete chtít podívat na dokumentace balíčku korpusu abyste zjistili, jak jej můžete použít.

Se vznikem technologií, jako je Alexa, detekce spamu, chatboti, analýza sentimentu a další, se zdá, že se zpracování přirozeného jazyka vyvíjí do sub-lidské fáze. Přestože jsme v tomto článku zvážili jen několik příkladů toho, co NLTK nabízí, nástroj má pokročilejší aplikace vyšší než rozsah tohoto kurzu.

Po přečtení tohoto článku byste měli mít dobrou představu o tom, jak používat NLTK na základní úrovni. Vše, co teď můžete udělat, je uvést tyto znalosti do praxe sami!

PodíltweetE-mailem
7 Knihoven strojového učení pro aspirující odborníky

Zajímá vás oblast strojového učení? Začněte s těmito knihovnami.

Číst dále

Související témata
  • Programování
  • Krajta
  • Programovací jazyky
  • Programování
O autorovi
Idowu Omisola (96 článků publikováno)

Idowu je zapálený pro cokoli chytrého a produktivního. Ve svém volném čase si hraje s kódováním a když se nudí, přepne na šachovnici, ale také se rád jednou za čas odpoutá od rutiny. Jeho vášeň ukazovat lidem cestu kolem moderních technologií ho motivuje psát více.

Více od Idowu Omisola

Přihlaste se k odběru našeho zpravodaje

Připojte se k našemu zpravodaji a získejte technické tipy, recenze, bezplatné elektronické knihy a exkluzivní nabídky!

Kliknutím sem se přihlásíte k odběru