Przetwarzanie języka naturalnego to aspekt uczenia maszynowego, który pozwala przetwarzać słowa pisane na język przyjazny dla maszyn. Takie teksty można następnie modyfikować i można na nich uruchamiać algorytmy obliczeniowe, jak chcesz.

Logika stojąca za tą urzekającą technologią wydaje się skomplikowana, ale tak nie jest. A nawet teraz, mając solidne opanowanie podstaw programowania w Pythonie, możesz stworzyć nowatorski edytor tekstu „zrób to sam” z zestawem narzędzi języka naturalnego (NLTK).

Oto jak rozpocząć pracę z NLTK Pythona.

Co to jest NLTK i jak to działa?

Napisany w Pythonie NLTK oferuje różnorodne funkcje manipulacji ciągami znaków. Jest to wszechstronna biblioteka języka naturalnego z obszernym repozytorium modeli dla różnych aplikacji języka naturalnego.

Dzięki NLTK możesz przetwarzać nieprzetworzone teksty i wydobywać z nich znaczące funkcje. Oferuje również modele analizy tekstu, gramatyki oparte na funkcjach i bogate zasoby leksykalne do budowania kompletnego modelu języka.

instagram viewer

Jak skonfigurować NLTK

Najpierw utwórz folder główny projektu w dowolnym miejscu na komputerze. Aby rozpocząć korzystanie z biblioteki NLTK, otwórz terminal w folderze głównym, który utworzyłeś wcześniej i stworzyć wirtualne środowisko.

Następnie zainstaluj zestaw narzędzi języka naturalnego w tym środowisku za pomocą pypeć:

pip zainstaluj nltk

Jednak NLTK zawiera różnorodne zbiory danych, które służą jako podstawa dla nowatorskich modeli języka naturalnego. Aby uzyskać do nich dostęp, musisz uruchomić wbudowany program do pobierania danych NLTK.

Tak więc, po pomyślnym zainstalowaniu NLTK, otwórz plik Pythona za pomocą dowolnego edytora kodu.

Następnie zaimportuj nltk i utwórz instancję programu do pobierania danych za pomocą następującego kodu:

pip zainstaluj nltk
nltk.pobierz()

Uruchomienie powyższego kodu za pośrednictwem terminala powoduje wyświetlenie graficznego interfejsu użytkownika do wybierania i pobierania pakietów danych. Tutaj musisz wybrać pakiet i kliknąć Pobierać przycisk, aby go uzyskać.

Każdy pobrany pakiet danych trafia do określonego katalogu zapisanego w Pobierz katalog pole. Możesz to zmienić, jeśli chcesz. Staraj się jednak zachować domyślną lokalizację na tym poziomie.

Związane z: Najlepsze darmowe edytory kodu do pisania pierwszej aplikacji

Notatka: Pakiety danych są domyślnie dołączane do zmiennych systemowych. Możesz więc używać ich w kolejnych projektach, niezależnie od używanego środowiska Pythona.

Jak korzystać z tokenizatorów NLTK

Ostatecznie NLTK oferuje wytrenowane modele tokenizacji słów i zdań. Za pomocą tych narzędzi możesz wygenerować listę słów ze zdania. Lub przekształć akapit w sensowną tablicę zdań.

Oto przykład, jak korzystać z NLTK słowo_tokenizer:

importuj nltk
z nltk.tokenize importuj word_tokenize
word = "To jest przykładowy tekst"
tokenWord = słowo_tokenizer (słowo)
drukuj (tokenWord)
Wyjście:
['To', 'jest', 'an', 'przykład', 'tekst']

NLTK używa również wstępnie wytrenowanego tokenizera zdań o nazwie PunktSentenceTokenizer. Działa poprzez podzielenie akapitu na listę zdań.

Zobaczmy, jak to działa z akapitem składającym się z dwóch zdań:

importuj nltk
z nltk.tokenize importuj word_tokenize, PunktSentenceTokenizer
zdanie = "To jest przykładowy tekst. To jest samouczek dla NLTK"
token = PunktSentenceTokenizer()
tokenized_sentence = token.tokenize (zdanie)
drukuj (tokenized_sentence)
Wyjście:
['To jest przykładowy tekst', 'To jest samouczek dla NLTK']

Możesz dalej tokenizować każde zdanie w tablicy wygenerowanej z powyższego kodu za pomocą słowo_tokenizer oraz Python dla pętli.

Przykłady korzystania z NLTK

Więc chociaż nie możemy zademonstrować wszystkich możliwych przypadków użycia NLTK, oto kilka przykładów, jak zacząć używać go do rozwiązywania rzeczywistych problemów.

Uzyskaj definicje słów i ich części mowy

NLTK zawiera modele do określania części mowy, uzyskiwania szczegółowej semantyki i możliwego kontekstowego użycia różnych słów.

Możesz użyć wordnet model do generowania zmiennych dla tekstu. Następnie określ jego znaczenie i część mowy.

Na przykład sprawdźmy możliwe zmienne dla „Monkey:”

importuj nltk
z nltk.corpus importuj wordnet jako wn
print (wn.synsets('małpa'))
Wyjście:
[Synset('małpa.n.01'), Synset('imp.n.02'), Synset('sabotaż.v.01'), Synset('putter.v.02')]

Powyższy kod wyświetla możliwe alternatywy słów lub składnie i części mowy dla „małpy”.

Teraz sprawdź znaczenie słowa „małpa” za pomocą definicja metoda:

Małpa = wn.synset('małpa.n.01').definicja()
Wyjście:
dowolny z różnych naczelnych długoogoniastych (z wyjątkiem małpiatek)

Możesz zastąpić ciąg w nawiasie innymi wygenerowanymi alternatywami, aby zobaczyć, co generuje NLTK.

ten pos_tag model jednak określa części mowy słowa. Możesz użyć tego z słowo_tokenizer lub PunktSentenceTokenizer() jeśli masz do czynienia z dłuższymi akapitami.

Oto jak to działa:

importuj nltk
z nltk.tokenize importuj word_tokenize, PunktSentenceTokenizer
word = "To jest przykładowy tekst. To jest samouczek dotyczący NLTK"
token = PunktSentenceTokenizer()
tokenized_sentence = token.tokenize (słowo)
dla mnie w tokenized_sentence:
tokenWordArray = word_tokenize (i)
partOfSpeech = nltk.pos_tag (tokenWordArray)
drukuj (partsOfSpeech)
Wyjście:
[('This', 'DT'), ('is', 'VBZ'), ('an', 'DT'), ('example', 'NN'), ('text', 'NN'), ('.', '.')]
[('This', 'DT'), ('is', 'VBZ'), ('a', 'DT'), ('tutorial', 'JJ'), ('on', 'IN'), ('NLTK', 'NNP')]

Powyższy kod łączy w parę każde tokenizowane słowo z jego znacznikiem mowy w krotce. Możesz sprawdzić znaczenie tych tagów na Penn Treebank.

Aby uzyskać czystszy wynik, możesz usunąć okresy z danych wyjściowych za pomocą wymienić() metoda:

dla mnie w tokenized_sentence:
tokenWordArray = word_tokenize (i.replace('.', ''))
partOfSpeech = nltk.pos_tag (tokenWordArray)
drukuj (partsOfSpeech)
Czystsze wyjście:
[('This', 'DT'), ('is', 'VBZ'), ('an', 'DT'), ('example', 'NN'), ('text', 'NN') ]
[('This', 'DT'), ('is', 'VBZ'), ('a', 'DT'), ('tutorial', 'JJ'), ('on', 'IN'), ('NLTK', 'NNP')]

Wizualizacja trendów funkcji za pomocą wykresu NLTK

Wydobywanie cech z surowych tekstów jest często żmudne i czasochłonne. Ale możesz wyświetlić najsilniejsze determinanty cech w tekście, korzystając z wykresu trendu rozkładu częstotliwości NLTK.

Jednak NLTK synchronizuje się z matplotlib. Możesz to wykorzystać, aby wyświetlić określony trend w swoich danych.

Poniższy kod porównuje na przykład zestaw dodatnich i ujemnych słów na wykresie rozkładu przy użyciu ich dwóch ostatnich alfabetów:

importuj nltk
z nltk importuj WarunkowąFreqDist
Listy słów negatywnych i pozytywnych:
negatywy = [
„nienormalny”, „znieść”, „odrażający”,
„ohyda”, „obrzydliwość”, „obrzydliwość”
]
pozytywy = [
„obfitość”, „obfitość”, „obfitość”,
„obfity”, „dostępny”, „dostępny”
]
# Podziel elementy w każdej tablicy na oznaczone pary krotek
# i połącz obie tablice:
pos_negData = ([("ujemny", ujemny) dla ujemności w negatywach]+[("dodatni", poz) dla poz w pozytywach])
# Wyodrębnij ostatnie dwa alfabety z wynikowej tablicy:
f = ((poz, i[-2:],) for (poz, i) w poz_negData)
# Utwórz wykres dystrybucji tych alfabetów
cfd = WarunkowaOdległ.częstotliwości (f)
cfd.wykres()

Wykres rozkładu alfabetu wygląda tak:

Patrząc uważnie na wykres, słowa kończące się na Ce, ds, le, NS, oraz nt mają większe prawdopodobieństwo, że będą tekstami pozytywnymi. Ale te kończące się na glin, ly, na, oraz te są bardziej prawdopodobnymi słowami negatywnymi.

Notatka:Chociaż użyliśmy tutaj samodzielnie wygenerowanych danych, możesz uzyskać dostęp do niektórych wbudowanych zestawów danych NLTK za pomocą jego czytnika Corpus, wywołując je z ciało klasa nltk. Możesz chcieć spojrzeć na dokumentacja pakietu korpusu aby zobaczyć, jak możesz z niego korzystać.

Wraz z pojawieniem się technologii, takich jak Alexa, wykrywanie spamu, chatboty, analiza sentymentu i wiele innych, przetwarzanie języka naturalnego wydaje się ewoluować w swoją fazę nieludzką. Chociaż rozważyliśmy tylko kilka przykładów tego, co oferuje NLTK w tym artykule, narzędzie ma bardziej zaawansowane aplikacje, wykraczające poza zakres tego samouczka.

Po przeczytaniu tego artykułu powinieneś mieć dobry pomysł, jak używać NLTK na poziomie podstawowym. Teraz pozostaje Ci tylko wcielić tę wiedzę w życie!

UdziałĆwierkaćE-mail
7 bibliotek uczenia maszynowego dla początkujących ekspertów

Zainteresowany dziedziną uczenia maszynowego? Zacznij korzystać z tych bibliotek.

Czytaj dalej

Powiązane tematy
  • Programowanie
  • Pyton
  • Języki programowania
  • Programowanie
O autorze
Idowu Omisola (96 opublikowanych artykułów)

Idowu pasjonuje się każdą inteligentną technologią i produktywnością. W wolnych chwilach bawi się kodowaniem, a gdy się nudzi, przechodzi na szachownicę, ale od czasu do czasu uwielbia też oderwać się od rutyny. Jego pasja do pokazywania ludziom drogi do nowoczesnych technologii motywuje go do pisania więcej.

Więcej od Idowu Omisola

Zapisz się do naszego newslettera

Dołącz do naszego newslettera, aby otrzymywać porady techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!

Kliknij tutaj, aby zasubskrybować