Technologia przetwarzania języka naturalnego
Przetwarzanie języka naturalnego ma wiele aplikacji, takich jak analiza tonacji, wykrywanie tematów, wykrywanie języka, wyodrębnianie kluczowych fraz i kategoryzacja dokumentów.
W szczególności można użyć przetwarzania języka naturalnego w celu:
- Klasyfikowanie dokumentów. Możesz na przykład oznaczyć je jako poufne lub spam.
- Przeprowadź kolejne przetwarzanie lub wyszukiwanie przy użyciu danych wyjściowych przetwarzania języka naturalnego.
- Podsumuj tekst, identyfikując jednostki w dokumencie.
- Oznaczanie dokumentów słowami kluczowymi przy użyciu zidentyfikowanych jednostek.
- Przeprowadź wyszukiwanie oparte na zawartości i pobieranie przy użyciu tagów.
- Podsumowanie kluczowych tematów dokumentu przy użyciu zidentyfikowanych jednostek.
- Kategoryzuj dokumenty na potrzeby nawigacji przy użyciu wykrytych tematów.
- Wyliczanie powiązanych dokumentów na podstawie wybranego tematu.
- Ocena tonacji tekstu w celu zrozumienia pozytywnego lub negatywnego tonu.
W miarę rozwoju technologii można użyć przetwarzania języka naturalnego do kategoryzowania i analizowania danych tekstowych. Można go również użyć do ulepszania funkcji interpretowalnych sztucznej inteligencji w różnych domenach. Integracja modeli językowych znacznie zwiększa możliwości przetwarzania języka naturalnego. Modele językowe, takie jak GPT i BERT, mogą generować tekst przypominający ludzki, świadomy kontekstu. Ta funkcja sprawia, że są one wysoce skuteczne w przypadku złożonych zadań przetwarzania języka. Uzupełniają one istniejące techniki przetwarzania języka naturalnego dzięki obsłudze szerszych zadań poznawczych, które poprawiają systemy konwersacji i zaangażowanie klientów, zwłaszcza w przypadku modeli takich jak Dolly 2.0 usługi Databricks.
Relacje i różnice między modelami językowymi a przetwarzaniem języka naturalnego
Przetwarzanie języka naturalnego to kompleksowe pole, które obejmuje różne techniki przetwarzania języka ludzkiego. Natomiast modele językowe są określonym podzbiorem przetwarzania języka naturalnego. Koncentrują się na uczeniu głębokim w celu wykonywania zadań językowych wysokiego poziomu. Modele językowe rozszerzają przetwarzanie języka naturalnego, zapewniając zaawansowane generowanie tekstu i możliwości interpretacji, ale nie są one synonimem przetwarzania języka naturalnego. Zamiast tego służą one jako zaawansowane narzędzia w szerszej domenie przetwarzania języka naturalnego, umożliwiając bardziej zaawansowane przetwarzanie języka.
Notatka
Ten artykuł koncentruje się na przetwarzaniu języka naturalnego. Relacja między przetwarzaniem języka naturalnego a modelami językowymi pokazuje, że modele językowe zwiększają procesy przetwarzania języka naturalnego poprzez lepsze zrozumienie języka i możliwości generowania.
Potencjalne przypadki użycia
Scenariusze biznesowe, które mogą korzystać z niestandardowego przetwarzania języka naturalnego, obejmują:
Analiza dokumentów dla dokumentów napisanych odręcznie lub utworzonych maszynowo w sektorze finansów, opieki zdrowotnej, handlu detalicznego, instytucji rządowych i innych sektorów.
Niezależne od branży zadania przetwarzania języka naturalnego na potrzeby przetwarzania tekstu, takie jak rozpoznawanie nazwanych jednostek (NER), klasyfikacja, podsumowanie i wyodrębnianie relacji.
Te zadania ułatwiają automatyczne pobieranie, identyfikowanie i analizowanie informacji o dokumencie, takich jak tekst i dane bez struktury. Przykłady tych zadań obejmują modele stratyfikacji ryzyka, klasyfikację ontologii i podsumowania sprzedaży detalicznej.
Pobieranie informacji i tworzenie grafu wiedzy na potrzeby wyszukiwania semantycznego. Ta funkcja umożliwia tworzenie grafów wiedzy medycznej, które obsługują odnajdywanie leków i badania kliniczne.
Tłumaczenie tekstu dla konwersacyjnych systemów sztucznej inteligencji w aplikacjach przeznaczonych dla klientów w branży handlu detalicznego, finansów, podróży i innych branż.
Sentyment i zaawansowana inteligencja emocjonalna w analizie, szczególnie w kontekście monitorowania percepcji marki i analizy opinii klientów.
Automatyczne generowanie raportów. Syntetyzowanie i generowanie kompleksowych raportów tekstowych na podstawie ustrukturyzowanych danych wejściowych. Te zadania pomagają sektorom, takim jak finanse i zgodność, w przypadku gdy wymagana jest szczegółowa dokumentacja.
Interfejsy aktywowane głosowo, które integrują przetwarzanie języka naturalnego na potrzeby rozpoznawania głosu i możliwości naturalnej konwersacji. Ta integracja zwiększa interakcje użytkowników w aplikacjach Internetu rzeczy i aplikacjach inteligentnych urządzeń.
Adaptacyjne modele językowe, które mogą dynamicznie dostosowywać dane wyjściowe języka do różnych poziomów zrozumienia odbiorców. Ta możliwość ma kluczowe znaczenie dla ulepszeń treści edukacyjnych i ułatwień dostępu.
Analiza tekstowa w zakresie cyberbezpieczeństwa do analizowania wzorców komunikacji i użycia języka w czasie rzeczywistym. Ta analiza pomaga zidentyfikować potencjalne zagrożenia bezpieczeństwa w komunikacji cyfrowej i poprawić wykrywanie prób wyłudzania informacji lub dezinformacji.
Platforma Apache Spark jako niestandardowa struktura przetwarzania języka naturalnego
Apache Spark to zaawansowana platforma przetwarzania równoległego, która zwiększa wydajność aplikacji analitycznych big data przy użyciu przetwarzania w pamięci. Usługi Azure Synapse Analytics, usługi Azure HDInsight, i usługi Azure Databricks zapewniają niezawodny dostęp do możliwości przetwarzania platformy Spark. Ten dostęp ułatwia bezproblemowe uruchamianie operacji na danych na dużą skalę.
Spark NLP to wydajna struktura, która może przetwarzać duże ilości tekstu na potrzeby dostosowanych obciążeń przetwarzania języka naturalnego. Ta biblioteka typu open source udostępnia rozbudowane funkcje przy użyciu bibliotek Python, Java i Scala. Te biblioteki zapewniają wyrafinowanie, które można znaleźć w wybitnych bibliotekach przetwarzania języka naturalnego, takich jak spaCy i Natural Language Toolkit. Usługa Spark NLP obejmuje zaawansowane funkcje, takie jak sprawdzanie pisowni, analiza tonacji i klasyfikacja dokumentów. Te funkcje pomagają spójnie zapewnić optymalną dokładność i skalowalność.
Apache®, Apache Spark, a logo płomienia są zastrzeżonymi znakami towarowymi lub znakami towarowymi platformy Apache Software Foundation w Stanach Zjednoczonych i/lub innych krajach. Użycie tych znaków nie sugeruje poparcia przez The Apache Software Foundation.
Ostatnie publiczne testy porównawcze podkreślają wydajność usługi Spark NLP. Wyniki testów porównawczych pokazują znaczne ulepszenia szybkości w porównaniu do innych bibliotek. Spark NLP również utrzymuje porównywalną dokładność podczas trenowania modeli niestandardowych. W szczególności integracja modeli Llama 2 i OpenAI Whisper zwiększa interfejsy konwersacyjne i wielojęzyczne rozpoznawanie mowy. Te możliwości oznaczają znaczne postępy w zoptymalizowanych możliwościach przetwarzania.
Usługa Spark NLP efektywnie wykorzystuje rozproszony klaster Spark, który działa jako natywne rozszerzenie spark ML i działa bezpośrednio na ramkach danych. Ta integracja obsługuje zwiększone wzrosty wydajności w klastrach, co ułatwia tworzenie ujednoliconego przetwarzania języka naturalnego i potoków uczenia maszynowego dla zadań, takich jak klasyfikacja dokumentów i przewidywanie ryzyka. Osadzanie w sieci MPNet i rozbudowane funkcje ONNX dodatkowo wzbogacają te możliwości i umożliwiają dokładne i kontekstowe przetwarzanie.
Spark NLP zapewnia bardzo dokładne wyniki w coraz szerszym zakresie zadań przetwarzania języka naturalnego. Biblioteka zawiera gotowe modele uczenia głębokiego do rozpoznawania nazwanych encji, klasyfikacji dokumentów i detekcji sentymentu. Jego rozbudowany projekt obejmuje wstępnie wytrenowane modele językowe, które obsługują osadzanie słów, fragmentów, zdań i dokumentów.
Infrastruktura Spark NLP jest skalowana poprzez użycie zoptymalizowanych kompilacji na CPU, GPU oraz najnowsze układy Intel Xeon, co umożliwia procesom trenowania i wykonywania wnioskowań pełne wykorzystanie klastrów Spark. Ta funkcja pomaga zapewnić wydajną obsługę zadań przetwarzania języka naturalnego w różnych środowiskach i aplikacjach.
Wyzwania
przetwarzanie zasobów: przetwarzanie kolekcji dokumentów tekstowych w dowolnej formie wymaga znacznej ilości zasobów obliczeniowych. Przetwarzanie jest również czasochłonne. Tego rodzaju przetwarzanie często wiąże się z wdrożeniem obliczeń procesora GPU. Ostatnie postępy wspierające kwantyzację, takie jak optymalizacje w architekturach Spark NLP, takich jak Llama 2, pomagają usprawnić te intensywne zadania poprzez bardziej efektywne przydzielanie zasobów.
Standaryzacja: Bez standardowego formatu dokumentu trudno jest osiągnąć spójne i dokładne wyniki podczas korzystania z przetwarzania tekstu bez ustalonego formatu w celu wyodrębnienia określonych faktów z dokumentu. Na przykład wyodrębnienie numeru faktury i daty z różnych faktur stanowi wyzwanie. Integracja dostosowanych modeli przetwarzania języka naturalnego, takich jak M2M100, zwiększa dokładność przetwarzania w wielu językach i formatach. Ta ulepszona dokładność prowadzi do bardziej spójnych wyników.
Różnorodność i złożoność danych: Rozwiązywanie różnych struktur dokumentów i niuansów językowych pozostaje złożone. Innowacje, takie jak osadzanie MPNet, zapewniają ulepszone zrozumienie kontekstowe, co prowadzi do bardziej intuicyjnej obsługi różnych formatów tekstowych i bardziej niezawodnego przetwarzania danych.
Kluczowe kryteria wyboru
Na platformie Azure usługi Spark, takie jak Azure Databricks, Microsoft Fabric i HDInsight, zapewniają funkcje przetwarzania języka naturalnego podczas korzystania z usługi Spark NLP. Usługi azure AI to kolejna opcja funkcji przetwarzania języka naturalnego. Aby ułatwić podjęcie decyzji o tym, która usługa ma być używana, należy wziąć pod uwagę następujące aspekty:
Jeśli chcesz używać wstępnie utworzonych lub wstępnie wytrenowanych modeli, rozważ użycie interfejsów API zapewnianych przez usługi sztucznej inteligencji. Możesz też pobrać wybrany model za pomocą usługi Spark NLP, która obejmuje zaawansowane modele, takie jak Llama 2 i MPNet, w celu uzyskania rozszerzonych możliwości.
Jeśli musisz wytrenować modele niestandardowe pod kątem dużej kolekcji danych tekstowych, rozważ użycie usługi Azure Databricks, Fabric lub usługi HDInsight z usługą Spark NLP. Te platformy zapewniają moc obliczeniową i elastyczność, których potrzebujesz do rozbudowanego trenowania modelu.
Jeśli potrzebujesz funkcji przetwarzania języka naturalnego niskiego poziomu, takich jak tokenizacja, stemming, lemmatyzacja i częstotliwość/odwrotna częstotliwość dokumentów (TF/IDF), rozważ użycie usługi Azure Databricks, Fabric lub HDInsight z usługą Spark NLP. Alternatywnie możesz użyć biblioteki oprogramowania typu open source w wybranym narzędziu przetwarzania.
Jeśli potrzebujesz prostych funkcji przetwarzania języka naturalnego wysokiego poziomu, takich jak identyfikacja jednostek i intencji, wykrywanie tematów, sprawdzanie pisowni lub analiza tonacji, rozważ użycie interfejsów API oferowanych przez usługi sztucznej inteligencji. Możesz też pobrać wybrany model za pomocą usługi Spark NLP, aby użyć wstępnie utworzonych funkcji dla tych zadań.
Macierz możliwości
W poniższych tabelach podsumowano kluczowe różnice w możliwościach usług przetwarzania języka naturalnego.
Ogólne możliwości
Zdolność | Usługa Spark (Azure Databricks, Fabric, HDInsight) z usługą Spark NLP | Usługi sztucznej inteligencji |
---|---|---|
Udostępnia przygotowane modele w formie usługi | Tak | Tak |
REST API | Tak | Tak |
Programowalność | Python, Scala | Zobacz obsługiwane języki programowania |
Obsługuje przetwarzanie dużych zestawów danych i dużych dokumentów | Tak | Nie |
Możliwości adnotacji
Zdolność | Usługa Spark (Azure Databricks, Fabric, HDInsight) z usługą Spark NLP | Usługi sztucznej inteligencji |
---|---|---|
Detektor zdań | Tak | Nie |
Wykrywacz głębokich zdań | Tak | Tak |
narzędzie do tokenizacji | Tak | Tak |
Generator N-gram | Tak | Nie |
Segmentacja wyrazów | Tak | Tak |
Stemmer | Tak | Nie |
Lemmatizer | Tak | Nie |
Tagowanie części mowy | Tak | Nie |
Analizator zależności | Tak | Nie |
Tłumaczenie | Tak | Nie |
Czyszczenie stopwordów | Tak | Nie |
Korekta pisowni | Tak | Nie |
Normalizator | Tak | Tak |
Narzędzie do dopasowywania tekstu | Tak | Nie |
TF/IDF | Tak | Nie |
Mechanizm dopasowywania wyrażeń regularnych | Tak | Osadzona w funkcji interpretacji języka konwersacyjnego (CLU) |
Dopasowywanie dat | Tak | Możliwe w clu za pomocą funkcji rozpoznawania daty/godziny |
Dzielnik | Tak | Nie |
Notatka
Usługa Language Understanding (LUIS) zostanie wycofana 1 października 2025 r. Istniejące aplikacje usługi LUIS należy migrować do funkcji interpretacji języka konwersacyjnego (CLU) języka azure AI, która zwiększa możliwości interpretacji języka i udostępnia nowe funkcje.
Zaawansowane możliwości przetwarzania języka naturalnego
Zdolność | Usługa Spark (Azure Databricks, Fabric, HDInsight) z usługą Spark NLP | Usługi sztucznej inteligencji |
---|---|---|
Sprawdzanie pisowni | Tak | Nie |
Podsumowania | Tak | Tak |
Odpowiadanie na pytania | Tak | Tak |
Wykrywanie emocji | Tak | Tak |
Wykrywanie emocji | Tak | Wspiera górnictwo opinii |
Klasyfikacja tokenów | Tak | Tak, za pośrednictwem modeli niestandardowych |
Klasyfikacja tekstu | Tak | Tak, za pośrednictwem modeli niestandardowych |
Reprezentacja tekstu | Tak | Nie |
NER | Tak | Tak, analiza tekstu udostępnia zestaw funkcji NER |
Rozpoznawanie jednostek | Tak | Tak, za pośrednictwem modeli niestandardowych |
Wykrywanie języka | Tak | Tak |
Obsługuje języki poza językiem angielskim | Tak, obsługuje ponad 200 języków | Tak, obsługuje ponad 97 języków |
Konfigurowanie usługi Spark NLP na platformie Azure
Aby zainstalować usługę Spark NLP, użyj następującego kodu, ale zastąp <version>
najnowszym numerem wersji. Aby uzyskać więcej informacji, zobacz dokumentację Spark NLP.
# Install Spark NLP from PyPI.
pip install spark-natural language processing==<version>
# Install Spark NLP from Anaconda or Conda.
conda install -c johnsnowlabs spark-natural language processing
# Load Spark NLP with Spark Shell.
spark-shell --packages com.johnsnowlabs.natural language processing:spark-natural language processing_<version>
# Load Spark NLP with PySpark.
pyspark --packages com.johnsnowlabs.natural language processing:spark-natural language processing_<version>
# Load Spark NLP with Spark Submit.
spark-submit --packages com.johnsnowlabs.natural language processing:spark-natural language processing_<version>
# Load Spark NLP as an external JAR after compiling and building Spark NLP by using SBT assembly.
spark-shell --jars spark-natural language processing-assembly-3 <version>.jar
Opracowywanie potoków przetwarzania języka naturalnego
Spark NLP stosuje tę samą koncepcję programowania co tradycyjne modele uczenia maszynowego Spark ML, gdy uruchamia potok przetwarzania języka naturalnego. Stosuje również wyspecjalizowane techniki przetwarzania języka naturalnego.
Potok przetwarzania języka naturalnego w środowisku Spark obejmuje następujące podstawowe składniki:
documentAssembler to transformator, który przygotowuje dane, konwertując je na format, który może przetwarzać usługa Spark NLP. Ten etap jest punktem wejścia dla każdego potoku Spark NLP. DocumentAssembler odczytuje kolumnę
String
lubArray[String]
i może wstępnie przetworzyć tekst przy użyciusetCleanupMode
, która jest domyślnie wyłączona.SentenceDetector to adnotacja identyfikująca granice zdań przy użyciu wstępnie zdefiniowanych metod. Może zwrócić każde wykryte zdanie w
Array
lub w osobnych wierszach, gdyexplodeSentences
jest ustawiona na true.Tokenizer to narzędzie adnotacyjne dzielące nieprzetworzony tekst na tokeny dyskretne, takie jak wyrazy, liczby i symbole, i wypisuje je w postaci
TokenizedSentence
. Tokenizer nie jest dopasowany i używa konfiguracji danych wejściowych w ramachRuleFactory
do tworzenia reguł tokenizowania. Możesz dodać reguły niestandardowe, jeśli te domyślne są niewystarczające.Normalizer jest adnotatorem, którego zadaniem jest ulepszanie tokenów. Normalizer stosuje wyrażenia regularne i przekształcenia słownika w celu czyszczenia tekstu i usuwania dodatkowych znaków.
WordEmbeddings to anotatory wyszukiwania, które mapują tokeny na wektory i ułatwiają przetwarzanie semantyczne. Niestandardowy słownik osadzania można określić przy użyciu
setStoragePath
, gdzie każdy wiersz zawiera token i jego wektor oddzielony spacjami. Nierozwiązane tokeny są reprezentowane przez wektory zerowe.
Spark NLP używa potoków MLlib platformy Spark, które mają natywną obsługę przez MLflow, platformy typu open source, która zarządza cyklem życia uczenia maszynowego. Rozwiązanie MLflow ma następujące kluczowe składniki:
Śledzenie MLflow rejestruje przebiegi eksperymentalne i oferuje niezawodne funkcje zapytań do analizowania wyników.
MLflow Projects umożliwia uruchamianie kodu nauki o danych na różnych platformach. Ta funkcja zwiększa przenośność i powtarzalność.
Modele MLflow wspierają uniwersalne wdrażanie modeli w różnych środowiskach poprzez spójny framework.
Model Registry zapewnia kompleksowe zarządzanie modelami, przechowując wersje centralnie w celu usprawnienia dostępu i wdrażania. Ten krok ułatwia gotowość produkcyjną.
Platforma MLflow jest zintegrowana z platformami takimi jak Azure Databricks, ale można ją również zainstalować w innych środowiskach opartych na platformie Spark w celu zarządzania eksperymentami i śledzenia ich. Ta integracja umożliwia korzystanie z rejestru modeli MLflow w celu udostępniania modeli do celów produkcyjnych. Proces wdrażania można usprawnić i zachować nadzór nad modelem.
Korzystając z platformy MLflow obok platformy Spark NLP, można zapewnić bardziej wydajne zarządzanie potokami przetwarzania języka naturalnego i wdrażanie ich. Można również spełnić nowoczesne wymagania dotyczące skalowalności i integracji, jednocześnie obsługując zaawansowane techniki, takie jak osadzanie słów i adaptacje modelu językowego.
Współpracownicy
Firma Microsoft utrzymuje ten artykuł. Następujący współautorzy napisali ten artykuł.
Główni autorzy:
- Freddy Ayala | Architekt rozwiązań w chmurze
- Moritz Steller | Starszy architekt rozwiązań w chmurze
Aby wyświetlić niepubliczne profile serwisu LinkedIn, zaloguj się do serwisu LinkedIn.
Następne kroki
Dokumentacja nlp platformy Spark:
Składniki platformy Azure:
Zasoby platformy Learn: