NLP z interfejsem API języka naturalnego Google Cloud
Opublikowany: 2022-03-11Przetwarzanie języka naturalnego (NLP), będące połączeniem uczenia maszynowego i lingwistyki, stało się jednym z najintensywniej badanych tematów w dziedzinie sztucznej inteligencji. W ciągu ostatnich kilku lat osiągnięto wiele nowych kamieni milowych, z których najnowszym jest model GPT-2 firmy OpenAI, który jest w stanie generować realistyczne i spójne artykuły na dowolny temat na podstawie krótkich danych wejściowych.
Zainteresowanie to wynika z wielu zastosowań komercyjnych, które zostały wprowadzone na rynek w ostatnich latach. Rozmawiamy z naszymi asystentami domowymi, którzy używają NLP do transkrypcji danych audio i zrozumienia naszych pytań i poleceń. Coraz więcej firm przenosi dużą część działań komunikacyjnych z klientami na zautomatyzowane chatboty. Rynki internetowe używają go do identyfikowania fałszywych recenzji, firmy medialne polegają na NLP do pisania artykułów prasowych, firmy rekrutacyjne dopasowują CV do stanowisk, giganci mediów społecznościowych automatycznie filtrują nienawistne treści, a firmy prawnicze używają NLP do analizowania umów.
Szkolenie i wdrażanie modeli uczenia maszynowego dla takich zadań było w przeszłości złożonym procesem, który wymagał zespołu ekspertów i kosztownej infrastruktury. Jednak duże zapotrzebowanie na takie aplikacje skłoniło dużych dostawców do opracowywania usług związanych z NLP, które znacznie zmniejszają obciążenie pracą i koszty infrastruktury. Średni koszt usług w chmurze spada od lat i oczekuje się, że trend ten będzie się utrzymywał.
Produkty, które przedstawię w tym artykule, są częścią Google Cloud Services i są nazywane „Google Natural Language API” i „Google AutoML Natural Language”.
Interfejs API języka naturalnego Google
Interfejs API języka naturalnego Google to łatwy w użyciu interfejs do zestawu zaawansowanych modeli NLP, które zostały wstępnie przeszkolone przez Google do wykonywania różnych zadań. Ponieważ modele te zostały wytrenowane na bardzo dużych zbiorach dokumentów, ich wydajność jest zwykle całkiem dobra, o ile są używane w zestawach danych, które nie wykorzystują bardzo specyficznego języka.
Największą zaletą korzystania z tych wstępnie wytrenowanych modeli za pośrednictwem interfejsu API jest to, że nie jest potrzebny żaden zestaw danych szkoleniowych. Interfejs API pozwala użytkownikowi natychmiast rozpocząć tworzenie prognoz, co może być bardzo cenne w sytuacjach, w których dostępna jest niewielka ilość danych oznaczonych etykietami.
Interfejs API języka naturalnego obejmuje pięć różnych usług:
- Analiza składni
- Analiza nastrojów
- Analiza encji
- Analiza nastrojów podmiotów
- Klasyfikacja tekstu
Analiza składni
Dla danego tekstu analiza składni Google zwróci podział wszystkich słów z bogatym zestawem informacji językowych dla każdego tokena. Informacje można podzielić na dwie części:
Część mowy: Ta część zawiera informacje o morfologii każdego tokena. Dla każdego słowa zwracana jest szczegółowa analiza zawierająca jego typ (rzeczownik, czasownik itp.), rodzaj, wielkość liter, czas, nastrój gramatyczny, głos gramatyczny i wiele innych.
Na przykład dla zdania wejściowego „Komputer pokonał mnie kiedyś w szachy, ale nie poradził sobie z kickboxingiem”. (Emo Philips) analiza części mowy to:
A | tag: DET |
'komputer' | tag: RZECZOWNIK liczba: POJEDYNCZA |
'pewnego razu' | tag: ADV |
'pokonać' | tag: CZASOWNIK nastrój: ORZECZNIK czas: PRZESZŁOŚĆ |
'ja' | tag: PRON sprawa: LICZBA BIEŻĄCA: POJEDYNCZA osoba: PIERWSZY |
w | tag: ADP |
'szachy' | tag: RZECZOWNIK liczba: POJEDYNCZA |
',' | tag: PUNKTUJ |
'ale' | tag: CONJ |
'to' | tag: PRON sprawa: NOMINATYWNA płeć: NEUTER liczba: POJEDYNCZA osoba: TRZECIA |
'było' | tag: CZASOWNIK nastrój: ORIENTACYJNA liczba: POJEDYNCZA osoba: TRZECI czas: PRZESZŁOŚĆ |
'nie' | tag: DET |
'mecz' | tag: RZECZOWNIK liczba: POJEDYNCZA |
'dla' | tag: ADP |
'kopnięcie' | tag: RZECZOWNIK liczba: POJEDYNCZA |
'boks' | tag: RZECZOWNIK liczba: POJEDYNCZA |
'.' | tag: PUNKTUJ |
Drzewa zależności: Druga część zwrotu nazywana jest drzewem zależności, które opisuje strukturę składniową każdego zdania. Poniższy diagram słynnego cytatu Kennedy'ego pokazuje takie drzewo zależności. Dla każdego słowa strzałki wskazują, które słowa są przez nie modyfikowane.
Powszechnie używane biblioteki Pythona nltk i spaCy zawierają podobne funkcje. Jakość analizy jest niezmiennie wysoka we wszystkich trzech opcjach, ale interfejs API języka naturalnego Google jest łatwiejszy w użyciu. Powyższą analizę można uzyskać za pomocą bardzo niewielu wierszy kodu (patrz przykład poniżej). Jednak chociaż spaCy i nltk są oprogramowaniem typu open source, a zatem są bezpłatne, korzystanie z interfejsu API języka naturalnego Google kosztuje po określonej liczbie bezpłatnych żądań (patrz sekcja dotycząca kosztów).
Oprócz języka angielskiego analiza składniowa obsługuje dziesięć dodatkowych języków: chiński (uproszczony), chiński (tradycyjny), francuski, niemiecki, włoski, japoński, koreański, portugalski, rosyjski i hiszpański .
Analiza nastrojów
Usługa analizy składni jest najczęściej używana na wczesnym etapie procesu tworzenia funkcji, które są później wprowadzane do modeli uczenia maszynowego. Wręcz przeciwnie, usługa analizy nastrojów może być używana od razu po wyjęciu z pudełka.
Analiza sentymentu Google zapewni przeważającą emocjonalną opinię w dostarczonym tekście. API zwraca dwie wartości: „Wynik” opisuje emocjonalne nachylenie tekstu od -1 (ujemny) do +1 (dodatni), przy czym 0 oznacza neutralne.
„Wielkość” mierzy siłę emocji.
Spójrzmy na kilka przykładów:
Zdanie wejściowe | Wyniki nastrojów | Interpretacja |
Pociąg do Londynu odjeżdża o czwartej | Wynik: 0,0 Wielkość: 0,0 | Całkowicie neutralna wypowiedź, w której nie ma żadnych emocji. |
Ten wpis na blogu jest dobry. | Wynik: 0,7 Wielkość: 0,7 | Pozytywny sentyment, ale niezbyt mocno wyrażony. |
Ten wpis na blogu jest dobry. To było bardzo pomocne. Autor jest niesamowity. | Wynik: 0,7 magnitudo: 2,3 | Ten sam sentyment, ale wyrażony znacznie mocniej. |
Ten wpis na blogu jest bardzo dobry. Ten autor jest zwykle okropnym pisarzem, ale tutaj miał szczęście. | Wynik: 0.0 Wielkość: 1.6 | Wielkość pokazuje nam, że w tym tekście są wyrażone emocje, ale sentyment pokazuje, że są one mieszane, a nie wyraźnie pozytywne lub negatywne. |
Model analizy nastrojów Google jest szkolony na bardzo dużym zbiorze danych. Niestety nie ma informacji o jego szczegółowej strukturze. Byłem ciekaw, jak działa w rzeczywistości, więc przetestowałem go na części zestawu danych Large Movie Review Dataset, który został stworzony przez naukowców z Uniwersytetu Stanforda w 2011 roku.
Losowo wybrałem 500 pozytywnych i 500 negatywnych recenzji filmów z zestawu testowego i porównałem przewidywany sentyment z rzeczywistą etykietą recenzji. Macierz pomyłek wyglądała tak:
Pozytywny sentyment | Negatywne nastroje | |
Dobra recenzja | 470 | 30 |
Zła recenzja | 29 | 471 |
Jak pokazuje tabela, model ma rację w około 94% przypadków dobrych i złych recenzji filmów. Nie jest to zła wydajność jak na rozwiązanie gotowe do użycia bez żadnego dostrojenia do danego problemu.
Uwaga: Analiza tonacji jest dostępna dla tych samych języków, co analiza składni, z wyjątkiem języka rosyjskiego.
Analiza encji
Analiza jednostek to proces wykrywania znanych jednostek, takich jak osoby publiczne lub punkty orientacyjne, z danego tekstu. Wykrywanie jednostek jest bardzo pomocne przy wszelkiego rodzaju zadaniach klasyfikacji i modelowania tematów.
Interfejs API języka naturalnego Google dostarcza podstawowych informacji o każdej wykrytej jednostce, a nawet udostępnia link do odpowiedniego artykułu w Wikipedii, jeśli taki istnieje. Obliczany jest również wynik istotności. Ten wynik dla encji dostarcza informacji o znaczeniu lub centralności tej encji w całym tekście dokumentu. Wyniki bliższe 0 są mniej istotne, podczas gdy wyniki bliższe 1,0 są bardzo istotne.
Gdy wysyłamy żądanie do API z przykładowym zdaniem: „Robert DeNiro rozmawiał z Martinem Scorsese w Hollywood w Wigilię Bożego Narodzenia w grudniu 2011 r.” Otrzymujemy następujący wynik:
Wykryty podmiot | Dodatkowe informacje |
Robert De Niro | typ : PERSON istotność : 0.5869118 wikipedia_url : https://en.wikipedia.org/wiki/Robert_De_Niro |
Hollywood | typ : LOKALIZACJA istotność : 0.17918482 wikipedia_url : https://en.wikipedia.org/wiki/Hollywood |
Martin Scorsese | typ : LOKALIZACJA istotność : 0.17712952 wikipedia_url : https://en.wikipedia.org/wiki/Martin_Scorsese |
Wigilia | typ : PERSON istotność : 0.056773853 wikipedia_url : https://en.wikipedia.org/wiki/Boże Narodzenie |
grudzień 2011 | typ : DATA Rok: 2011 Miesiąc: 12 istotność : 0.0 wikipedia_url : - |
2011 | type : NUMBER istotność : 0.0 wikipedia_url : - |
Jak widać, wszystkie podmioty są poprawnie zidentyfikowane i sklasyfikowane, z wyjątkiem tego, że rok 2011 pojawia się dwukrotnie. Oprócz pola w przykładowych danych wyjściowych interfejs API analizy encji wykryje również organizacje, dzieła sztuki, towary konsumpcyjne, numery telefonów, adresy i ceny.
Analiza nastrojów podmiotów
Jeśli istnieją modele do wykrywania jednostek i analizy nastrojów, naturalne jest pójście o krok dalej i połączenie ich w celu wykrycia emocji dominujących w stosunku do różnych jednostek w tekście.
Podczas gdy interfejs API analizy nastrojów znajduje wszystkie przejawy emocji w dokumencie i agreguje je, funkcja analizy nastrojów jednostek próbuje znaleźć zależności między różnymi częściami dokumentu a zidentyfikowanymi jednostkami, a następnie przypisuje emocje w tych segmentach tekstu do odpowiednich jednostek.
Na przykład opiniujący tekst: „Autor jest okropnym pisarzem. Z drugiej strony czytelnik jest bardzo inteligentny.” prowadzi do wyników:
Podmiot | Sentyment |
autor | Salience: 0,8773350715637207 Sentyment: wielkość: 1,899999976158142 wynik: -0,8999999761581421 |
czytelnik | Salience: 0,08653714507818222 Sentyment: wielkość: 0,8999999761581421 wynik: 0,8999999761581421 |
Jak dotąd analiza sentymentu encji działa tylko w języku angielskim, japońskim i hiszpańskim.
Klasyfikacja tekstu
Wreszcie, interfejs API języka naturalnego Google jest wyposażony w model klasyfikacji tekstu typu plug-and-play.
Model jest wyszkolony do klasyfikowania dokumentów wejściowych do dużego zestawu kategorii. Kategorie mają strukturę hierarchiczną, np. Kategoria „Hobby i wypoczynek” ma kilka podkategorii, z których jedna to „Hobby i wypoczynek/Na świeżym powietrzu” , która sama ma podkategorie, takie jak „Hobby i wypoczynek/Na świeżym powietrzu/Wędkarstwo”.
Oto przykładowy tekst reklamy aparatu Nikon:
„Duża matryca formatu DX o rozdzielczości 24,2 megapiksela w aparacie D3500 rejestruje bogate w szczegóły zdjęcia i filmy Full HD — nawet przy słabym oświetleniu. W połączeniu z mocą renderowania obiektywu NIKKOR możesz zacząć tworzyć artystyczne portrety z płynnym rozmyciem tła. Z łatwością."

Google API zwraca wynik:
Kategoria | Zaufanie |
Sztuka i rozrywka/Sztuki wizualne i projektowanie/Sztuka fotograficzna i cyfrowa | 0,95 |
Hobby i wypoczynek | 0,94 |
Komputery i elektronika/Elektronika użytkowa/Aparaty i sprzęt fotograficzny | 0,85 |
Wszystkie trzy z tych kategorii mają sens, chociaż intuicyjnie umieścilibyśmy trzeci wpis wyżej niż drugi. Należy jednak wziąć pod uwagę, że ten segment wejściowy stanowi tylko krótką część pełnego dokumentu reklamy aparatu, a wydajność modelu klasyfikacji poprawia się wraz z długością tekstu.
Po wypróbowaniu go z wieloma dokumentami, w większości przypadków wyniki modelu klasyfikacji miały sens. Mimo to, podobnie jak wszystkie inne modele z Google Natural Language API, klasyfikator jest rozwiązaniem typu „czarna skrzynka”, którego użytkownik nie może modyfikować ani nawet dostrajać. Zwłaszcza w przypadku klasyfikacji tekstu zdecydowana większość firm będzie miała własne kategorie tekstowe, które różnią się od kategorii modelu Google, dlatego usługa klasyfikacji tekstu Natural Language API może nie być dostępna dla większości użytkowników.
Kolejnym ograniczeniem modelu klasyfikacji jest to, że działa on tylko w przypadku tekstów w języku angielskim.
Jak korzystać z interfejsu API języka naturalnego
Główną zaletą interfejsu Google Natural Language API jest łatwość obsługi. Nie są wymagane żadne umiejętności uczenia maszynowego i prawie żadne umiejętności kodowania. W witrynie Google Cloud można znaleźć fragmenty kodu do wywoływania interfejsu API dla wielu języków.
Na przykład kod Pythona wywołujący interfejs API analizy sentymentu jest tak krótki, jak:
from google.cloud import language_v1 from google.cloud.language_v1 import enums import six def sample_analyze_sentiment(content): client = language_v1.LanguageServiceClient() if isinstance(content, six.binary_type): content = content.decode('utf-8') type_ = enums.Document.Type.PLAIN_TEXT document = {'type': type_, 'content': content} response = client.analyze_sentiment(document) sentiment = response.document_sentiment print('Score: {}'.format(sentiment.score)) print('Magnitude: {}'.format(sentiment.magnitude))
Pozostałe funkcjonalności API wywoływane są w podobny sposób, po prostu zmieniając client.analyze_sentiment
na odpowiednią funkcję.
Całkowity koszt interfejsu Google Natural Language API
Google obciąża swoich użytkowników na żądanie za wszystkie usługi interfejsu API języka naturalnego. Ma to tę zaletę, że nie ma stałych kosztów za żadne serwery wdrożeniowe. Wadą jest to, że może to być kosztowne w przypadku bardzo dużych zestawów danych.
Poniższa tabela przedstawia ceny (za 1000 zapytań) w zależności od liczby zapytań miesięcznych:
Jeśli dokument ma więcej niż 1000 znaków, liczy się to jako wielokrotne żądania. Na przykład, jeśli chcesz przeanalizować sentyment 10 000 dokumentów, z których każdy ma 1500 znaków, zostaniesz obciążony kwotą 20 000 żądań. Ponieważ pierwsze 5000 jest bezpłatnych, całkowite koszty wyniosłyby 15 USD. Przeanalizowanie miliona dokumentów o tym samym rozmiarze kosztowałoby 1995 USD.
Wygodny, ale nieelastyczny
Interfejs API języka naturalnego Google to bardzo wygodna opcja dla szybkich, nieszablonowych rozwiązań. Wymagana jest bardzo niewielka wiedza techniczna i brak zrozumienia podstawowych modeli uczenia maszynowego.
Główną wadą jest jej sztywność i brak dostępu do modeli. Modeli nie można dostroić do określonego zadania lub zestawu danych.
W rzeczywistym środowisku większość zadań będzie prawdopodobnie wymagała bardziej dopasowanego rozwiązania, niż mogą zapewnić standardowe funkcje interfejsu API języka naturalnego.
W tym scenariuszu bardziej odpowiedni jest język naturalny Google AutoML.
Język naturalny Google AutoML
Jeśli interfejs API języka naturalnego nie jest wystarczająco elastyczny do celów biznesowych, odpowiednia usługa może być AutoML Natural Language. AutoML to nowa usługa Google Cloud (wciąż w wersji beta), która umożliwia użytkownikowi tworzenie niestandardowych modeli uczenia maszynowego. W przeciwieństwie do interfejsu API języka naturalnego, modele AutoML będą szkolone na danych użytkownika, dzięki czemu będą pasować do określonego zadania.
Niestandardowe modele uczenia maszynowego do klasyfikowania treści są przydatne, gdy wstępnie zdefiniowane kategorie dostępne w interfejsie API języka naturalnego są zbyt ogólne lub nie mają zastosowania do konkretnego przypadku użycia lub domeny wiedzy.
Usługa AutoML wymaga od użytkownika nieco więcej wysiłku, głównie dlatego, że musisz dostarczyć zestaw danych, aby wytrenować model. Jednak szkolenie i ocena modeli w sposób całkowicie zautomatyzowany i nie jest wymagana wiedza na temat uczenia maszynowego. Cały proces można wykonać bez pisania kodu, korzystając z konsoli Google Cloud. Oczywiście, jeśli chcesz zautomatyzować te kroki, istnieje wsparcie dla wszystkich popularnych języków programowania.
Co można zrobić za pomocą języka naturalnego Google AutoML?
Usługa AutoML obejmuje trzy przypadki użycia. Wszystkie te przypadki użycia na razie obsługują wyłącznie język angielski.
1. Klasyfikacja tekstu AutoML
Chociaż klasyfikator tekstu interfejsu API języka naturalnego jest wstępnie przeszkolony i dlatego ma ustalony zestaw kategorii tekstu, klasyfikacja tekstu AutoML tworzy niestandardowe modele uczenia maszynowego z kategoriami podanymi w zestawie danych szkoleniowych.
2. Analiza nastrojów AutoML
Jak widzieliśmy, analiza sentymentów interfejsu API języka naturalnego sprawdza się doskonale w ogólnych przypadkach użycia, takich jak recenzje filmów. Ponieważ model sentymentu jest szkolony na bardzo ogólnym korpusie, wydajność może ulec pogorszeniu w przypadku dokumentów, które używają wielu języków specyficznych dla domeny. W takich sytuacjach analiza nastrojów AutoML umożliwia trenowanie modelu nastrojów dostosowanego do Twojej domeny.
3. Wyodrębnianie jednostek AutoML
W wielu kontekstach biznesowych istnieją jednostki specyficzne dla domeny (umowy prawne, dokumenty medyczne), których interfejs API języka naturalnego nie będzie w stanie zidentyfikować. Jeśli masz zestaw danych, w którym encje są oznaczone, możesz trenować dostosowany ekstraktor encji modelu za pomocą AutoML. Jeśli zestaw danych jest wystarczająco duży, wyszkolony model wyodrębniania jednostek będzie również w stanie wykryć wcześniej niewidoczne jednostki.
Jak korzystać z języka naturalnego AutoML
Korzystanie z trzech AutoML jest procesem czteroetapowym i jest bardzo podobny dla wszystkich trzech metodologii:
Przygotowanie zbioru danych
Zbiór danych musi mieć określony format (CSV lub JSON) i musi być przechowywany w zasobniku na dane. W przypadku modeli klasyfikacji i sentymentu zestawy danych zawierają tylko dwie kolumny, tekst i etykietę. W przypadku modelu wyodrębniania jednostek zestaw danych wymaga tekstu i lokalizacji wszystkich jednostek w tekście.Szkolenie modelek
Trening modelu jest całkowicie automatyczny. Jeśli nie podano inaczej, AutoML podzieli zestaw uczący automatycznie na zestawy szkoleniowe, testowe i walidacyjne. O tym podziale może również zadecydować użytkownik, ale tylko w ten sposób można wpłynąć na uczenie modelu. Reszta szkolenia jest całkowicie zautomatyzowana w sposób czarnoskrzynkowy.Ocena
Po zakończeniu szkolenia AutoML wyświetli wyniki precyzji i przywołania, a także macierz pomyłek. Niestety nie ma absolutnie żadnych informacji o samym modelu, co utrudnia określenie przyczyn złej wydajności modeli.Prognoza
Gdy będziesz zadowolony z wydajności modelu, możesz go wygodnie wdrożyć za pomocą kilku kliknięć. Proces wdrażania zajmuje tylko kilka minut.
Wydajność modelu AutoML
Proces uczenia jest dość powolny, prawdopodobnie dlatego, że podstawowe modele są bardzo duże. Przeszkoliłem małe zadanie klasyfikacyjne testowe z 15 000 próbek i 10 kategoriami, a szkolenie trwało kilka godzin. Przykład ze świata rzeczywistego ze znacznie większym zbiorem danych zajął mi kilka dni.
Chociaż Google nie opublikowało żadnych szczegółów na temat używanych modeli, domyślam się, że model BERT Google jest używany z niewielkimi dostosowaniami do każdego zadania. Dostrajanie dużych modeli, takich jak BERT, jest procesem kosztownym obliczeniowo, zwłaszcza w przypadku przeprowadzania wielu walidacji krzyżowych.
Przetestowałem model klasyfikacji AutoML w rzeczywistym przykładzie z modelem, który sam opracowałem, który był oparty na BERT. Co zaskakujące, model AutoML działał znacznie gorzej niż mój własny model, gdy został wyszkolony na tych samych danych. AutoML osiągnął dokładność 84%, podczas gdy mój model osiągnął 89%.
Oznacza to, że chociaż korzystanie z AutoML może być bardzo wygodne, w przypadku zadań o znaczeniu krytycznym dla wydajności warto zainwestować czas i samodzielnie opracować model.
Ceny AutoML
Ceny AutoML dla prognoz z 5 USD za 1000 rekordów tekstowych są znacznie droższe niż interfejs API języka naturalnego. Dodatkowo za szkolenie modelowe AutoML pobiera 3 USD za godzinę. Chociaż na początku jest to nieistotne, w przypadkach użycia, które wymagają częstego przekwalifikowania, może to wzrosnąć do znacznej kwoty, zwłaszcza że trening wydaje się być dość powolny.
Użyjmy tego samego przykładu, co w przypadku interfejsu API języka naturalnego:
Chcesz przeanalizować sentyment 10 000 dokumentów, z których każdy ma 1500 znaków, więc zostaniesz obciążony 20 000 żądań. Powiedzmy, że trenowanie modelu zajmuje 20 godzin, co kosztuje 48 USD. Przewidywanie nic by Cię nie kosztowało, ponieważ pierwsze 30 000 żądań jest bezpłatnych. W przypadku takich małych zestawów danych AutoML jest bardzo ekonomiczny.
Jeśli jednak Twój zbiór danych jest większy i musisz przewidzieć sentyment jednego miliona o tym samym rozmiarze, kosztowałby to 9850 USD, co jest dość drogie. W przypadku dużych zestawów danych, takich jak ten, sensowne jest opracowanie własnego modelu, wdrożenie go samodzielnie bez korzystania z AutoML.
Interfejs API języka naturalnego Google a język naturalny AutoML
Język naturalny Google AutoML jest znacznie bardziej wydajny niż interfejs API języka naturalnego, ponieważ umożliwia użytkownikowi trenowanie modeli dostosowanych do konkretnego zestawu danych i domeny.
Jest równie łatwy w użyciu i nie wymaga znajomości uczenia maszynowego. Dwie wady to wyższe koszty i konieczność zapewnienia wysokiej jakości zestawu danych, który wymaga trenowania modeli, które działają dobrze.
Wersja beta AutoML obsługuje na razie tylko trzy zadania NLP (klasyfikacja, analiza sentymentu, wyodrębnianie encji) i obsługuje tylko dokumenty w języku angielskim. Gdy ta usługa zostanie w pełni wydana, spodziewam się, że z czasem zostaną dodane inne języki i zadania NLP.