|
|
||
|---|---|---|
| .. | ||
| 13-TextRep | ||
| 14-Embeddings | ||
| 15-LanguageModeling | ||
| 16-RNN | ||
| 17-GenerativeNetworks | ||
| 18-Transformers | ||
| 19-NER | ||
| 20-LangModels | ||
| README.md | ||
README.md
Przetwarzanie Języka Naturalnego
W tej sekcji skupimy się na wykorzystaniu sieci neuronowych do obsługi zadań związanych z Przetwarzaniem Języka Naturalnego (NLP). Istnieje wiele problemów NLP, które chcemy, aby komputery potrafiły rozwiązywać:
- Klasyfikacja tekstu to typowy problem klasyfikacji dotyczący sekwencji tekstowych. Przykłady to klasyfikowanie wiadomości e-mail jako spam vs. nie-spam lub kategoryzowanie artykułów jako sport, biznes, polityka itd. Również podczas tworzenia chatbotów często musimy zrozumieć, co użytkownik chciał powiedzieć – w tym przypadku mamy do czynienia z klasyfikacją intencji. Często w klasyfikacji intencji musimy radzić sobie z wieloma kategoriami.
- Analiza sentymentu to typowy problem regresji, gdzie musimy przypisać liczbę (sentyment) odpowiadającą temu, jak pozytywne/negatywne jest znaczenie zdania. Bardziej zaawansowaną wersją analizy sentymentu jest analiza sentymentu oparta na aspektach (ABSA), gdzie sentyment przypisujemy nie całemu zdaniu, a różnym jego częściom (aspektom), np. W tej restauracji podobała mi się kuchnia, ale atmosfera była okropna.
- Rozpoznawanie nazwanych jednostek (NER) odnosi się do problemu wydobywania określonych jednostek z tekstu. Na przykład, musimy zrozumieć, że w zdaniu Muszę jutro lecieć do Paryża słowo jutro odnosi się do DATY, a Paryż to LOKALIZACJA.
- Ekstrakcja słów kluczowych jest podobna do NER, ale musimy automatycznie wydobyć słowa ważne dla znaczenia zdania, bez wcześniejszego trenowania dla konkretnych typów jednostek.
- Grupowanie tekstu może być użyteczne, gdy chcemy pogrupować podobne zdania, na przykład podobne zapytania w rozmowach wsparcia technicznego.
- Odpowiadanie na pytania odnosi się do zdolności modelu do udzielenia odpowiedzi na konkretne pytanie. Model otrzymuje na wejściu fragment tekstu i pytanie, a następnie powinien wskazać miejsce w tekście, gdzie zawarta jest odpowiedź (lub czasem wygenerować tekst odpowiedzi).
- Generowanie tekstu to zdolność modelu do generowania nowego tekstu. Można to traktować jako zadanie klasyfikacji, które przewiduje kolejną literę/słowo na podstawie podpowiedzi tekstowej. Zaawansowane modele generowania tekstu, takie jak GPT-3, potrafią rozwiązywać inne zadania NLP, takie jak klasyfikacja, wykorzystując technikę zwaną programowaniem podpowiedzi lub inżynierią podpowiedzi
- Streszczanie tekstu to technika, gdy chcemy, aby komputer "przeczytał" długi tekst i podsumował go w kilku zdaniach.
- Tłumaczenie maszynowe można postrzegać jako połączenie rozumienia tekstu w jednym języku i generowania tekstu w innym.
Początkowo większość zadań NLP rozwiązywano za pomocą tradycyjnych metod, takich jak gramatyki. Na przykład w tłumaczeniu maszynowym parsery były używane do przekształcenia zdania początkowego w drzewo składniowe, następnie wydobywane były wyższe poziomy struktur semantycznych reprezentujących znaczenie zdania, a na podstawie tego znaczenia i gramatyki języka docelowego generowano wynik. Obecnie wiele zadań NLP jest skuteczniej rozwiązywanych za pomocą sieci neuronowych.
Wiele klasycznych metod NLP jest zaimplementowanych w bibliotece Pythona Natural Language Processing Toolkit (NLTK). Dostępna jest świetna książka NLTK, która opisuje, jak różne zadania NLP można rozwiązać przy użyciu NLTK.
W naszym kursie skupimy się głównie na wykorzystaniu sieci neuronowych w NLP i będziemy korzystać z NLTK tam, gdzie to będzie potrzebne.
Już nauczyliśmy się wykorzystywać sieci neuronowe do pracy z danymi tabelarycznymi oraz z obrazami. Główna różnica między tymi typami danych a tekstem polega na tym, że tekst jest sekwencją o zmiennej długości, podczas gdy rozmiar wejścia w przypadku obrazów jest znany z góry. Sieci splotowe mogą wydobywać wzorce z danych wejściowych, jednak wzorce w tekście są bardziej złożone. Na przykład negacja może być oddzielona od podmiotu przez dowolną liczbę wyrazów (np. Nie lubię pomarańczy vs. Nie lubię tych dużych, kolorowych, smacznych pomarańczy), a mimo to powinno to być interpretowane jako jeden wzorzec. Aby poradzić sobie z językiem, musimy wprowadzić nowe typy sieci neuronowych, takie jak sieci rekurencyjne i transformery.
Instalacja bibliotek
Jeśli korzystasz z lokalnej instalacji Pythona do realizacji tego kursu, może być konieczne zainstalowanie wszystkich wymaganych bibliotek do NLP za pomocą następujących poleceń:
Dla PyTorch
pip install -r requirements-pytorch.txt
Dla TensorFlow
pip install -r requirements-tf.txt
Możesz wypróbować NLP z TensorFlow na Microsoft Learn
Ostrzeżenie dotyczące GPU
W tej sekcji w niektórych przykładach będziemy trenować całkiem duże modele.
- Używaj komputera z GPU: Zaleca się uruchamiać notatniki na komputerach z GPU, aby skrócić czas oczekiwania podczas pracy z dużymi modelami.
- Ograniczenia pamięci GPU: Praca na GPU może prowadzić do sytuacji, w których zabraknie pamięci GPU, zwłaszcza podczas trenowania dużych modeli.
- Zużycie pamięci GPU: Ilość pamięci GPU zużywanej podczas treningu zależy od różnych czynników, w tym od rozmiaru minibatcha.
- Minimalizuj rozmiar minibatcha: Jeśli napotkasz problemy z pamięcią GPU, rozważ zmniejszenie rozmiaru minibatcha w swoim kodzie jako potencjalne rozwiązanie.
- Zwalnianie pamięci GPU w TensorFlow: Starsze wersje TensorFlow mogą nie zwalniać poprawnie pamięci GPU podczas trenowania wielu modeli w jednym kernelu Pythona. Aby efektywnie zarządzać użyciem pamięci GPU, możesz skonfigurować TensorFlow tak, aby alokował pamięć GPU tylko wtedy, gdy jest to potrzebne.
- Włączenie kodu: Aby ustawić TensorFlow tak, by dynamicznie zwiększał przydział pamięci GPU, dodaj następujący kod do swoich notatników:
physical_devices = tf.config.list_physical_devices('GPU')
if len(physical_devices)>0:
tf.config.experimental.set_memory_growth(physical_devices[0], True)
Jeśli chcesz nauczyć się NLP z klasycznej perspektywy ML, odwiedź tę serię lekcji
W tej sekcji
W tej sekcji nauczymy się o:
- Reprezentowaniu tekstu jako tensory
- Osadzaniu słów (Word Embeddings)
- Modelowaniu języka
- Rekurencyjnych sieciach neuronowych
- Sieciach generatywnych
- Transformerach
Zastrzeżenie: Niniejszy dokument został przetłumaczony za pomocą usługi tłumaczenia AI Co-op Translator. Choć dążymy do dokładności, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub niedokładności. Oryginalny dokument w jego języku źródłowym należy uznawać za autorytatywne źródło. W przypadku informacji krytycznych zalecane jest skorzystanie z profesjonalnego tłumaczenia wykonanego przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia.
