Spracovanie prirodzeného jazyka je aspektom strojového učenia, ktoré vám umožňuje spracovať písané slová do jazyka kompatibilného so strojmi. Také texty sa potom dajú upravovať a môžete na nich spúšťať výpočtové algoritmy, ako chcete.
Logika tejto podmanivej technológie sa zdá byť zložitá, ale nie je. A dokonca aj teraz, so solídnym porozumením základného programovania v jazyku Python, môžete vytvoriť nový textový procesor pre domácich majstrov pomocou sady nástrojov pre prirodzený jazyk (NLTK).
Tu je návod, ako začať s Pythonovým NLTK.
Čo je NLTK a ako funguje?
NLTK, napísaný v jazyku Python, ponúka množstvo funkcií na manipuláciu s reťazcami. Je to všestranná knižnica prirodzeného jazyka s rozsiahlym úložiskom modelov pre rôzne aplikácie v prirodzenom jazyku.
S NLTK môžete spracovávať surové texty a extrahovať z nich zmysluplné funkcie. Ponúka tiež modely na analýzu textu, gramatiky založené na funkciách a bohaté lexikálne zdroje na zostavenie kompletného jazykového modelu.
Ako nastaviť NLTK
Najprv vytvorte koreňový priečinok projektu kdekoľvek na počítači. Ak chcete začať používať knižnicu NLTK, otvorte terminál v koreňovom priečinku, ktorý ste vytvorili predtým a vytvoriť virtuálne prostredie.
Potom do tohto prostredia nainštalujte súbor nástrojov pre prirodzený jazyk pip:
pip install nltk
NLTK však ponúka množstvo súborov údajov, ktoré slúžia ako základ pre nové modely prirodzeného jazyka. Na to, aby ste k nim mali prístup, musíte otvoriť vstavaný program na sťahovanie údajov NLTK.
Akonáhle ste úspešne nainštalovali NLTK, otvorte svoj súbor Python pomocou ľubovoľného editora kódu.
Potom importujte súbor nltk modul a spustite aplikáciu na sťahovanie údajov pomocou nasledujúceho kódu:
pip install nltk
nltk.download ()
Spustením vyššie uvedeného kódu cez terminál sa otvorí grafické užívateľské rozhranie na výber a sťahovanie dátových balíkov. Tu budete musieť vybrať balík a kliknúť na Stiahnuť ▼ tlačidlo na jeho získanie.
Akýkoľvek dátový balík, ktorý stiahnete, prejde do zadaného adresára zapísaného v priečinku Adresár na stiahnutie lúka. Ak chcete, môžete to zmeniť. Skúste však zachovať predvolené umiestnenie na tejto úrovni.
Súvisiace: Najlepšie bezplatné editory kódu na napísanie vašej prvej aplikácie
Poznámka: Dátové balíky sa predvolene pripájajú k systémovým premenným. Môžete ich teda naďalej používať pre nasledujúce projekty bez ohľadu na to, aké prostredie Pythonu používate.
Ako používať tokenizéry NLTK
Nakoniec NLTK ponúka vyškolené modely tokenizácie pre slová a vety. Pomocou týchto nástrojov môžete vygenerovať zoznam slov z vety. Alebo transformujte odsek na rozumné pole viet.
Tu je príklad použitia NLTK word_tokenizer:
dovoz nltk
z nltk.tokenize import word_tokenize
word = "Toto je ukážkový text"
tokenWord = word_tokenizer (slovo)
vytlačiť (tokenWord)
Výkon:
['Toto', 'je', 'an', 'príklad', 'text']
NLTK tiež používa vopred vycvičený tokenizer viet s názvom PunktSentenceTokenizer. Funguje to tak, že odsek je rozdelený do zoznamu viet.
Pozrime sa, ako to funguje, s dvoma vetami:
dovoz nltk
z nltk.tokenize import word_tokenize, PunktSentenceTokenizer
věta = "Toto je ukážkový text. Toto je návod pre NLTK "
token = PunktSentenceTokenizer ()
tokenized_sentence = token.tokenize (veta)
print (tokenized_sentence)
Výkon:
['Toto je príklad textu.', 'Toto je návod pre NLTK']
Každú vetu v poli vygenerovanom z vyššie uvedeného kódu môžete ďalej tokenizovať word_tokenizer a Slučka Python pre.
Príklady použitia NLTK
Aj keď nemôžeme predviesť všetky možné prípady použitia NLTK, uvádzame niekoľko príkladov, ako ho môžete začať používať na riešenie problémov v reálnom živote.
Získajte definície slov a ich časti reči
NLTK ponúka modely na určovanie častí reči, získavanie podrobnej sémantiky a možné kontextové používanie rôznych slov.
Môžete použiť wordnet model na generovanie premenných pre text. Potom určte jeho význam a časť reči.
Skontrolujme napríklad možné premenné pre „Monkey:“
dovoz nltk
z nltk.corpus importujte wordnet ako wn
print (wn.synsets ('monkey'))
Výkon:
[Synset ('monkey.n.01'), Synset ('imp.n.02'), Synset ('tamper.v.01'), Synset ('putter.v.02')]
Vyššie uvedený kód vydáva možné alternatívy slova alebo syntaxe a časti reči pre „Monkey“.
Teraz skontrolujte význam „opice“ pomocou definícia metóda:
Monkey = wn.synset ('monkey.n.01'). Definícia ()
Výkon:
ktorýkoľvek z rôznych primátov s dlhým chvostom (okrem prozimov)
Reťazec v zátvorkách môžete nahradiť inými generovanými alternatívami, aby ste zistili, aké výstupy NLTK poskytuje.
The pos_tag model však určuje slovné druhy slova. Môžete to použiť s word_tokenizer alebo PunktSentenceTokenizer () ak máte do činenia s dlhšími odsekmi.
Funguje to takto:
dovoz nltk
z nltk.tokenize import word_tokenize, PunktSentenceTokenizer
word = "Toto je príklad textu. Toto je návod na NLTK “
token = PunktSentenceTokenizer ()
tokenized_sentence = token.tokenize (slovo)
pre i v tokenized_sentence:
tokenWordArray = word_tokenize (i)
partsOfSpeech = nltk.pos_tag (tokenWordArray)
tlač (partsOfSpeech)
Výkon:
[('This', 'DT'), ('is', 'VBZ'), ('an', 'DT'), ('example', 'NN'), ('' text ',' NN '), ('.', '.')]
[('This', 'DT'), ('is', 'VBZ'), ('a', 'DT'), ('tutorial', 'JJ'), ('' on ',' IN '), ('NLTK', 'NNP')]
Vyššie uvedený kód spáruje každé tokenizované slovo s jeho rečovou značkou v n -tici. Význam týchto značiek môžete skontrolovať na Penn Treebank.
Pre čistejší výsledok môžete odstrániť bodky na výstupe pomocou nahradiť () metóda:
pre i v tokenized_sentence:
tokenWordArray = word_tokenize (i.replace ('.', ''))
partsOfSpeech = nltk.pos_tag (tokenWordArray)
tlač (partsOfSpeech)
Čistiaci výkon:
[('This', 'DT'), ('is', 'VBZ'), ('an', 'DT'), ('example', 'NN'), ('' text ',' NN ') ]
[('This', 'DT'), ('is', 'VBZ'), ('a', 'DT'), ('tutorial', 'JJ'), ('' on ',' IN '), ('NLTK', 'NNP')]
Vizualizácia trendov funkcií pomocou grafu NLTK
Extrahovanie funkcií zo surových textov je často únavné a časovo náročné. Ale najsilnejšie determinanty funkcií v texte môžete zobraziť pomocou grafu trendov distribúcie frekvencie NLTK.
NLTK sa však synchronizuje s matplotlib. Môžete to využiť na zobrazenie konkrétneho trendu vo svojich údajoch.
Nasledujúci kód napríklad porovnáva množinu pozitívnych a negatívnych slov na distribučnom grafe pomocou ich posledných dvoch abeced:
dovoz nltk
z nltk import ConditionalFreqDist
Zoznamy negatívnych a pozitívnych slov:
negatívy = [
„abnormálne“, „zrušiť“, „ohavné“,
„ohavne“, „ohavné“, „ohavné“
]
pozitíva = [
„oplývať“, „oplývať“, „hojnosť“,
„hojný“, „prístupný“, „prístupný“
]
# Rozdeľte položky v každom poli do označených dvojíc tuplí
# a skombinujte obe polia:
pos_negData = ([("negatívne", neg) pre neg v negatívach++(("pozitívne", pos) pre pozit v pozitívach))
# Extrahujte posledné dve abecedy z výsledného poľa:
f = ((poz, i [-2:],) pre (poz, i) v pos_negData)
# Vytvorte distribučný diagram týchto abeced
cfd = ConditionalFreqDist (f)
cfd.plot ()
Distribučný diagram abecedy vyzerá takto:
Pri bližšom pohľade na graf slová končiace na ce, ds, le, nda nt majú väčšiu pravdepodobnosť, že budú pozitívnymi textami. Ale tí, ktorí končia al, ly, naa te sú pravdepodobnejšie negatívne slová.
Poznámka: Aj keď sme tu použili údaje, ktoré ste si vytvorili sami, k niektorým vstavaným súborom údajov NLTK máte prístup pomocou jeho čítačky Corpus tak, že ich zavoláte z korpus trieda nltk. Môžete sa pozrieť na dokumentácia balíka korpusu aby ste zistili, ako ho môžete používať.
S nástupom technológií ako Alexa, detekcie spamu, chatbotov, analýzy sentimentu a ďalších sa zdá, že spracovanie prirodzeného jazyka sa vyvíja do subhumánnej fázy. Aj keď sme v tomto článku zvážili iba niekoľko príkladov toho, čo NLTK ponúka, nástroj má pokročilejšie aplikácie, ktoré presahujú rámec tohto tutoriálu.
Po prečítaní tohto článku by ste mali mať dobrú predstavu o tom, ako používať NLTK na základnej úrovni. Všetko, čo teraz musíte urobiť, je uviesť tieto znalosti do praxe sami!
Zaujímate sa o oblasť strojového učenia? Začnite s týmito knižnicami.
Čítajte ďalej
- Programovanie
- Python
- Programovacie jazyky
- Programovanie
Idowu je zanietený pre čokoľvek, čo sa týka inteligentných technológií a produktivity. Vo svojom voľnom čase sa hrá s kódovaním a keď sa nudí, prejde na šachovnicu, ale tiež sa rád z času na čas odtrhne od rutiny. Jeho vášeň ukazovať ľuďom cestu okolo moderných technológií ho motivuje písať viac.
prihlásiť sa ku odberu noviniek
Pripojte sa k nášmu bulletinu a získajte technické tipy, recenzie, bezplatné elektronické knihy a exkluzívne ponuky!
Kliknutím sem sa prihlásite na odber