Przetwarzanie języka naturalnego w akcji
Przetwarzanie języka naturalnego w akcji autorstwa Hobsona Lane’a, Hannesa Maxa Hapke i Cole’a Howarda to przewodnik po tworzeniu maszyn, które potrafią czytać i interpretować ludzki język. Użyjecie w nim łatwo dostępnych pakietów Pythona, aby wychwycić znaczenie tekstu i odpowiednio zareagować. Książka poszerza tradycyjne podejścia do przetwarzania języka naturalnego (Natural Language Processing, NLP) o
sieci neuronowe, nowoczesne algorytmy głębokiego uczenia się i techniki generatywne w miarę rozwiązywania rzeczywistych problemów, takich jak wyodrębnianie dat i nazwisk, komponowanie tekstu i odpowiadanie na pytania w swobodnej formie.
Niektóre zdania tej książki zostały napisane przez NLP! Czy potraficie odgadnąć które?
W książce :
• Praca z Keras, TensorFlow, gensim i scikit-learn
• NLP oparte na regułach i danych
• Skalowalne potoki
Polskie wydanie zostało wzbogacone o dodatkowy rozdział, który omawia przetwarzanie języka naturalnego na podstawie języka polskiego, autorstwa dr Łukasza Kobylińskiego i Ryszarda Tuory.
- Kategorie:
- ISBN: 978-83-01-21721-1
- ISBN druku: 978-83-01-21569-9
- Liczba stron: 600
-
Sposób dostarczenia produktu elektronicznegoProdukty elektroniczne takie jak Ebooki czy Audiobooki są udostępniane online po opłaceniu zamówienia kartą lub przelewem na stronie Twoje konto > Biblioteka.Pliki można pobrać zazwyczaj w ciągu kilku-kilkunastu minut po uzyskaniu poprawnej autoryzacji płatności, choć w przypadku niektórych publikacji elektronicznych czas oczekiwania może być nieco dłuższy.Sprzedaż terytorialna towarów elektronicznych jest regulowana wyłącznie ograniczeniami terytorialnymi licencji konkretnych produktów.
-
Ważne informacje techniczneMinimalne wymagania sprzętowe:procesor: architektura x86 1GHz lub odpowiedniki w pozostałych architekturachPamięć operacyjna: 512MBMonitor i karta graficzna: zgodny ze standardem XGA, minimalna rozdzielczość 1024x768 16bitDysk twardy: dowolny obsługujący system operacyjny z minimalnie 100MB wolnego miejscaMysz lub inny manipulator + klawiaturaKarta sieciowa/modem: umożliwiająca dostęp do sieci Internet z prędkością 512kb/sMinimalne wymagania oprogramowania:System Operacyjny: System MS Windows 95 i wyżej, Linux z X.ORG, MacOS 9 lub wyżej, najnowsze systemy mobilne: Android, iPhone, SymbianOS, Windows MobilePrzeglądarka internetowa: Internet Explorer 7 lub wyżej, Opera 9 i wyżej, FireFox 2 i wyżej, Chrome 1.0 i wyżej, Safari 5Przeglądarka z obsługą ciasteczek i włączoną obsługą JavaScriptZalecany plugin Flash Player w wersji 10.0 lub wyżej.Informacja o formatach plików:
- PDF - format polecany do czytania na laptopach oraz komputerach stacjonarnych.
- EPUB - format pliku, który umożliwia czytanie książek elektronicznych na urządzeniach z mniejszymi ekranami (np. e-czytnik lub smartfon), dając możliwość dopasowania tekstu do wielkości urządzenia i preferencji użytkownika.
- MOBI - format zapisu firmy Mobipocket, który można pobrać na dowolne urządzenie elektroniczne (np.e-czytnik Kindle) z zainstalowanym programem (np. MobiPocket Reader) pozwalającym czytać pliki MOBI.
- Audiobooki w formacie MP3 - format pliku, przeznaczony do odsłuchu nagrań audio.
Rodzaje zabezpieczeń plików:- Watermark - (znak wodny) to zaszyfrowana informacja o użytkowniku, który zakupił produkt. Dzięki temu łatwo jest zidentyfikować użytkownika, który rozpowszechnił produkt w sposób niezgodny z prawem. Ten rodzaj zabezpieczenia jest zdecydowanie bardziej przyjazny dla użytkownika, ponieważ aby otworzyć książkę zabezpieczoną Watermarkiem nie jest potrzebne konto Adobe ID oraz autoryzacja urządzenia.
- Brak zabezpieczenia - część oferowanych w naszym sklepie plików nie posiada zabezpieczeń. Zazwyczaj tego typu pliki można pobierać ograniczoną ilość razy, określaną przez dostawcę publikacji elektronicznych. W przypadku zbyt dużej ilości pobrań plików na stronie WWW pojawia się stosowny komunikat.
wprowadzenie xvii wstęp xiv podziękowania xxvi o książce xxiv o autorach xxxii o ilustracji na okładce xxxiv CZĘŚĆ 1 MÓWIĄCE MASZYNY 1 1. Pakiety myśli (przegląd NLP) 3 1.1. Język naturalny a język programowania 4 1.2. Magia 4 1.2.1. Maszyny prowadzące konwersację 5 1.2.2. Matematyka 6 1.3. Zastosowania praktyczne 8 1.4. Język widziany „oczyma” komputera 10 1.4.1. Język zamków 10 1.4.2. Wyrażenia regularne 11 1.4.3. Prosty chatbot 13 1.4.4. Inny sposób 16 1.5. Krótkie spojrzenie na hiperprzestrzeń 20 1.6. Kolejność słów i gramatyka 22 1.7. Potok języka naturalnego chatbota 23 1.8. Szczegóły przetwarzania 26 1.9. IQ języka naturalnego 28 2. Zbuduj swój słownik (tokenizacja słów) 32 2.1. Wyzwania (wprowadzenie do stemmingu) 34 2.2. Tworzenie swojego słownika za pomocą tokenizatora 35 2.2.1. Iloczyn skalarny 44 2.2.2. Pomiar nakładania się wektorów BoW 44 2.2.3. Poprawianie tokenów 45 Jak działają wyrażenia regularne 46 Poprawione wyrażenia regularne do podziału słów 47 Formy skrócone 50 2.2.4. Rozszerzenie słownika za pomocą n-gramów 50 N-gramy 51 Stop listy 54 2.2.5. Normalizacja słownika 57 Ujednolicanie wielkości liter 57 Stemming 59 Lematyzacja 62 Przypadki użycia 64 2.3. Wydźwięk 65 2.3.1. VADER – analizator wydźwięku oparty na regułach 67 2.3.2. Naiwny klasyfikator bayesowski 68 3. Matematyka na słowach (wektory TD-IDF) 73 3.1. Wektor BoW 74 3.2. Wektoryzacja 79 3.2.1. Przestrzenie wektorowe 82 3.3. Prawo Zipfa 87 3.4. Modelowanie tematyczne 89 3.4.1. Powrót Zipfa 92 3.4.2. Ranking trafności 94 3.4.3. Narzędzia 96 3.4.4. Inne możliwości 97 3.4.5. Okapi BM25 98 3.4.6. Co dalej 99 4. Odnajdowanie znaczenia w licznikach słów (analiza semantyczna) 101 4.1. Od liczników słów do wyników dla tematów 103 4.1.1. Wektory TF-IDF i lematyzacja 103 4.1.2. Wektory tematyczne 104 4.1.3. Eksperyment myślowy 105 4.1.4. Algorytm do oceny tematów 110 „Kuzyni” LSA 111 4.1.5. Klasyfikator LDA 111 Inny „kuzyn” 115 4.2. Analiza utajonych własności semantycznych (LSA) 116 4.2.1. Wasz eksperyment myślowy staje się prawdziwy 118 Gra w Mad libs 119 4.3. Rozkład według wartości osobliwej 121 4.3.1. U – lewostronne wektory osobliwe 123 4.3.2. S – wartości osobliwe 124 4.3.3. V T – prawostronne wektory osobliwe 125 4.3.4. Orientacja macierzy SVD 126 4.3.5. Obcinanie tematów 127 4.4. Analiza głównych składowych 128 4.4.1. PCA dla wektorów 3D 130 4.4.2. Przestańmy szaleć i wróćmy do NLP 131 4.4.3. Stosowanie PCA do semantycznej analizy komunikatów SMS 134 4.4.4. Używanie obciętego SVD do analizy semantycznej komunikatu SMS 136 4.4.5. Jak dobrze działa LSA przy klasyfikacji spamu 137 Rozszerzenia LSA i SVD 139 4.5. Ukryta alokacja Dirichleta (LDiA) 140 4.5.1. Idea LDiA 141 4.5.2. Model tematyczny LDiA dla komunikatów SMS 143 4.5.3. LDiA + LDA = klasyfikator spamu 146 4.5.4. Uczciwsze porównanie: 32 tematy LDiA 148 4.6. Odległość i podobieństwo 149 4.7. Sterowanie za pomocą informacji zwrotnej 152 4.7.1. Liniowa analiza dyskryminacyjna 153 4.8. Moc wektorów tematycznych 155 4.8.1. Wyszukiwanie semantyczne 156 4.8.2. Ulepszenia 159 CZĘŚĆ 2 GŁĘBSZE UCZENIE SIĘ (SIECI NEURONOWE) 161 5. Sieci neuronowe krok po kroku (perceptrony i propagacja wsteczna) 163 5.1. Sieci neuronowe – lista składników 164 5.1.1. Perceptron 165 5.1.2. Perceptron numeryczny 165 5.1.3. Zboczenie z drogi spowodowane odchyleniem 166 Neuron w Pythonie 168 Klasa tkwi w sesji 169 Uczenie się logiki to czysta frajda 170 Następny krok 172 Koniec drugiej zimy sztucznej inteligencji 175 Propagacja wsteczna 176 Zróżniczkujmy wszystko 179 5.1.4. Poszusujmy – powierzchnia błędu 181 5.1.5. Z wyciągu prosto na stok 182 5.1.6. Udoskonalmy to nieco 182 5.1.7. Keras: sieci neuronowe w Pythonie 184 5.1.8. Wprzód i w głąb 187 5.1.9. Normalizacja: stylowe wejście 188 6. Wnioskowanie przy użyciu wektorów słów (Word2vec) 190 6.1. Zapytania semantyczne i analogie 191 6.1.1. Pytania o analogię 192 6.2. Wektory słów 193 6.2.1. Wnioskowanie zorientowane wektorowo 197 Jeszcze więcej powodów, by korzystać z wektorów słów 199 6.2.2. Jak obliczać reprezentacje Word2vec 200 Podejście skip-gram 201 Czym jest softmax? 202 W jaki sposób sieć uczy się reprezentacji wektorowej? 203 Odnajdywanie wektorów słów za pomocą algebry liniowej 205 Podejście CBoW 205 Skip-gram a CBoW. Kiedy korzystać z którego podejścia? 207 Triki obliczeniowe Word2vec 207 Częste bigramy 207 Podpróbkowanie często występujących tokenów 208 Próbkowanie negatywne 209 6.2.3. Jak korzystać z modułu gensim.word2vec 209 6.2.4. Jak wygenerować własne reprezentacje wektorów słów 212 Kroki przetwarzania wstępnego 212 Szkolenie dziedzinowego modelu Word2vec 213 6.2.5. Word2vec a GloVe (Global Vectors) 214 6.2.6. fastText 215 Jak korzystać z gotowych modeli fastText 216 6.2.7. Word2vec a LSA 216 6.2.8. Wizualizacja związków między słowami 217 6.2.9. Nienaturalne słowa 224 6.2.10. Doc2vec i podobieństwo dokumentów 225 Jak wyuczyć wektory dokumentów 226 7. Kolejność słów i konwolucyjne sieci neuronowe (CNN) 228 7.1. Uczenie się znaczenia 230 7.2. Zestaw narzędzi 232 7.3. Konwolucyjne sieci neuronowe 233 7.3.1. Elementy składowe 233 7.3.2. Długość kroku 235 7.3.3. Budowa filtra 235 7.3.4. Uzupełnianie 237 Potok konwolucyjny 238 7.3.5. Uczenie 238 7.4. Zaiste, wąskie okna 239 7.4.1. Implementacja w Kerasie: przygotowanie danych 240 7.4.2. Architektura konwolucyjnej sieci neuronowej. 247 7.4.3. Warstwa łącząca (pooling) 247 7.4.4. Dropout 250 7.4.5. Wisienka na torcie 251 Optymalizacja 252 Dopasowanie (fit) 252 7.4.6. Czas zabrać się za naukę (trening) 253 7.4.7. Użycie modelu w potoku 255 7.4.8. Gdzie pójdziecie dalej? 256 8. Zapętlone (rekurencyjne) sieci neuronowe (RNN) 259 8.1. Zapamiętywanie za pomocą sieci rekurencyjnych 262 8.1.1. Propagacja wsteczna przez czas 267 Tl;Dr – Krótka rekapitulacja 269 8.1.2. Kiedy i co aktualizować? 269 Czy jednak obchodzi was to, co wyszło z wcześniejszych kroków? 270 8.1.3. Rekapitulacja 271 8.1.4. Zawsze jest jakiś haczyk 272 8.1.5. Rekurencyjne sieci neuronowe z Kerasem 272 8.2. Składanie w całość 277 8.3. Nauczmy się czegoś o przeszłości 279 8.4. Hiperparametry 279 8.5. Przewidywanie 283 8.5.1. Stanowość 284 8.5.2. Ulica dwukierunkowa 284 8.5.3. Co to takiego? 286 9. Lepsza pamięć dzięki sieciom LSTM 288 9.1. LSTM 290 9.1.1. Propagacja wsteczna przez czas 299 W praktyce 299 9.1.2. Próba ognia 301 9.1.3. Brudne dane 303 9.1.4. Powrót do brudnych danych 306 9.1.5. Słowa są trudne. Litery są prostsze 307 9.1.6. Kolej na rozmowę 312 9.1.7. Zwrot ku klarownej mowie 314 Zwiększanie użyteczności generatora 322 9.1.8. Jak mówić i co mówić 322 9.1.9. Inne rodzaje pamięci 322 9.1.10. Idąc głębiej 323 10. Modele ciąg-ciąg i uwaga (attention) 326 10.1. Architektura koder-dekoder 327 10.1.1. Dekodowanie myśli 328 10.1.2. Wygląda znajomo? 330 10.1.3. Konwersacja ciąg-ciąg 332 10.1.4. Powtórzenie LSTM 332 10.2. Składanie potoku ciąg-ciąg 334 10.2.1. Przygotowanie naszego zbioru danych do szkolenia ciąg-ciąg 334 10.2.2. Model ciąg-ciąg w Kerasie 335 10.2.3. Koder ciągów 336 10.2.4. Koder myśli 337 10.2.5. Składanie sieci ciąg-ciąg 338 10.3. Szkolenie sieci ciąg-ciąg 339 10.3.1. Generowanie ciągów wyjściowych 340 10.4. Budowanie chatbota przy użyciu sieci ciąg-ciąg 341 10.4.1. Przygotowanie korpusu do szkolenia 342 10.4.2. Budowanie słownika znaków 343 10.4.3. Generowanie zbiorów treningowych zakodowanych metodą 1 z n 343 10.4.4. Uczenie chatbota ciąg-ciąg 344 10.4.5. Składanie modelu do generowania ciągów 345 10.4.6. Przewidywanie ciągu 345 10.4.7. Generowanie odpowiedzi 346 10.4.8. Rozmowa z waszym chatbotem 347 10.5. Ulepszenia 347 10.5.1. Redukcja złożoności treningu za pomocą sortowania danych (bucketing) 347 10.5.2. Uwaga (attention) 348 10.6. W świecie rzeczywistym 350 CZĘŚĆ 3 PRZEJŚCIE DO RZECZYWISTOŚCI (PRAWDZIWE PROBLEMY NLP) 353 11. Ekstrakcja informacji (rozpoznawanie jednostek nazewniczych i odpowiadanie na pytania) 355 11.1. Jednostki nazewnicze i relacje 356 11.1.1. Baza wiedzy 356 11.1.2. Ekstrakcja informacji 359 11.2. Regularne wzorce 359 11.2.1. Wyrażenia regularne 360 11.2.2. Ekstrakcja informacji jako ekstrakcja cech z wykorzystaniem uczenia się maszyn 361 11.3. Informacje warte wyodrębnienia 363 11.3.1. Ekstrakcja lokalizacji GPS 363 11.3.2. Ekstrakcja dat 364 11.4. Wyodrębnianie relacji 369 11.4.1. Znakowanie częściami mowy 370 11.4.2. Normalizacja jednostek nazewniczych 374 11.4.3. Normalizacja i wyodrębnianie relacji 375 11.4.4. Wzorce słów 375 11.4.5. Segmentacja 376 Segmentacja na zdania 377 11.4.6. Dlaczego split('.!?') nie będzie działać? 377 11.4.7. Segmentacja na zdania za pomocą wyrażeń regularnych 378 11.5. W prawdziwym świecie 380 12. Pogaduszki (silniki dialogowe) 382 12.1. Umiejętności językowe 383 12.1.1. Nowoczesne podejścia 384 Systemy dialogowe odpowiadające na pytania 386 Wirtualni asystenci 386 Chatboty konwersacyjne 387 Chatboty marketingowe 388 Zarządzanie społecznością 388 Obsługa klienta 389 Terapia 390 12.1.2. Podejście hybrydowe 390 12.2. Podejście polegające na dopasowaniu do wzorców 391 12.2.1. Chatbot oparty na dopasowaniu do wzorca i AIML 392 AIML 1.0 393 Interpreter AIML w Pythonie 394 12.2.2. Sieciowe spojrzenie na dopasowanie do wzorców 399 12.3. Oparcie na wiedzy 400 12.4. Wyszukiwanie 402 12.4.1. Problem kontekstu 403 12.4.2. Przykładowy chatbot oparty na wyszukiwaniu danych 404 12.4.3. Chatbot oparty na wyszukiwaniu 408 12.5. Modele generatywne 410 12.5.1. Czat na temat NLPIA 411 12.5.2. Zalety i wady każdego podejścia 413 12.6. Napęd na cztery koła 414 12.6.1. Will osiąga sukces 414 Instalowanie Willa 414 Hello WILL 414 12.7. Proces projektowania 415 12.8. Sztuczki 418 12.8.1. Zadawanie pytań z przewidywalnymi odpowiedziami 418 12.8.2. Bycie zabawnym 419 12.8.3. Gdy wszystko inne zawiedzie, trzeba wyszukać 419 12.8.4. Bycie popularnym 419 12.8.5. Być łącznikiem 420 12.8.6. Stawanie się emocjonalnym 420 12.9. W świecie rzeczywistym 420 13. Skalowanie (optymalizacja, zrównoleglanie i przetwarzanie wsadowe) 422 13.1. Zbyt wiele dobrego (danych) 423 13.2. Optymalizowanie algorytmów NLP 423 13.2.1. Indeksowanie 424 13.2.2. Zaawansowane indeksowanie 425 13.2.3. Zaawansowane indeksowanie za pomocą Annoy 427 13.2.4. Po co w ogóle stosować indeksy przybliżone? 432 13.2.5. Obejście indeksowania: dyskretyzacja 433 13.3. Algorytmy ze stałą pamięcią RAM 434 13.3.1. Gensim 434 13.3.2. Obliczenia graficzne 435 13.4. Zrównoleglanie waszych obliczeń NLP 436 13.4.1. Trenowanie modeli NLP na procesorach graficznych (GPU) 436 13.4.2. Wynajem a kupno 438 13.4.3. Opcje wynajmu GPU 438 13.4.4. Jednostki przetwarzania tensorowego 439 13.5. Zmniejszanie zużycia pamięci podczas trenowania modeli 440 13.6. Uzyskiwanie wglądu w model za pomocą TensorBoard 442 13.6.1. Jak wizualizować zanurzenia słów 443 dodatek A Nasze narzędzia NLP 447 dodatek B Swawolny Python i wyrażenia regularne 455 dodatek C Wektory i macierze (podstawy algebry liniowej) 461 dodatek D Narzędzia i techniki uczenia się maszyn 467 dodatek E Ustawianie własnego AWS GPU 481 dodatek F Mieszanie wrażliwe na lokalizację (LSH) 495 źródła 503 słownik 513 indeks 520 posłowie do wydania polskiego 535