Zakoduj wielojęzyczne właściwości tekstu w Amazon Neptune, aby szkolić modele predykcyjne PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Koduj wielojęzyczne właściwości tekstu w Amazon Neptune, aby trenować modele predykcyjne

Amazonka Neptuna ML jest funkcją uczenia maszynowego (ML) w Amazon Neptun który pomaga w dokonywaniu dokładnych i szybkich prognoz na danych wykresu. Pod maską Neptune ML wykorzystuje Graph Neural Networks (GNN), aby jednocześnie wykorzystać strukturę grafu i właściwości węzła/krawędzi do rozwiązania danego zadania. Tradycyjne metody albo używają tylko właściwości bez struktury grafu (np. XGBoost, sieci neuronowe), albo tylko struktury grafu bez właściwości (np. node2vec, Label Propagation). Aby lepiej manipulować właściwościami węzła/krawędzi, algorytmy ML wymagają, aby dane były dobrze zachowanymi danymi liczbowymi, ale nieprzetworzone dane w bazie danych mogą mieć inne typy, takie jak nieprzetworzony tekst. Aby skorzystać z tych innych typów danych, potrzebujemy wyspecjalizowanych kroków przetwarzania, które konwertują je z ich natywnego typu na dane liczbowe, a jakość wyników ML jest silnie uzależniona od jakości tych przekształceń danych. Surowy tekst, podobnie jak zdania, należą do najtrudniejszych typów do przekształcenia, ale niedawny postęp w dziedzinie przetwarzania języka naturalnego (NLP) doprowadził do opracowania silnych metod, które mogą obsługiwać tekst pochodzący z wielu języków io różnych długościach.

Począwszy od wersji 1.1.0.0, Neptune ML obsługuje wiele koderów tekstu (tekst_szybkitekst, tekst_sbert, tekst_word2vec, tekst_tfidf), które zapewniają korzyści wynikające z najnowszych postępów w NLP i umożliwiają obsługę właściwości tekstu w wielu językach, a także dodatkowe wymagania dotyczące wnioskowania dotyczące języków i długości tekstu. Na przykład w przypadku użycia rekomendacji stanowiska pracy w różnych krajach można opisywać w różnych językach, a długość opisów stanowisk znacznie się różni. Dodatkowo Neptune ML obsługuje samochód opcja, która automatycznie wybiera najlepszą metodę kodowania w oparciu o charakterystykę funkcji tekstu w danych.

W tym poście zilustrujemy użycie każdego kodera tekstu, porównamy jego zalety i wady oraz pokażemy przykład, jak wybrać odpowiednie kodery tekstu do zadania rekomendacji pracy.

Co to jest koder tekstu?

Celem kodowania tekstu jest przekonwertowanie właściwości krawędzi/węzła opartych na tekście w programie Neptune na wektory o stałym rozmiarze do użytku w dalszych modelach uczenia maszynowego na potrzeby klasyfikacji węzłów lub zadań przewidywania linków. Długość funkcji tekstowej może się bardzo różnić. Może to być słowo, fraza, zdanie, akapit, a nawet dokument z wieloma zdaniami (maksymalny rozmiar pojedynczej właściwości to 55 MB w Neptune). Dodatkowo funkcje tekstowe mogą być w różnych językach. Mogą również istnieć zdania zawierające słowa w kilku różnych językach, które definiujemy jako zmiana kodu.

Począwszy od wydania 1.1.0.0, Neptune ML umożliwia wybór spośród kilku różnych koderów tekstu. Każdy koder działa nieco inaczej, ale ma ten sam cel, jakim jest przekształcenie pola wartości tekstowej z Neptuna na wektor o stałym rozmiarze, którego używamy do zbudowania naszego modelu GNN przy użyciu Neptune ML. Nowe kodery to:

  • tekst_szybkitekst (nowe) – Zastosowania szybki tekst kodowanie. FastText to biblioteka do efektywnego uczenia się reprezentacji tekstu. text_fasttext jest zalecany dla funkcji korzystających z jednego i tylko jednego z pięciu języków obsługiwanych przez fastText (angielski, chiński, hindi, hiszpański i francuski). The text_fasttext metoda może opcjonalnie przyjąć max_length pole, które określa maksymalną liczbę tokenów w wartości właściwości tekstowej, która zostanie zakodowana, po czym ciąg zostanie obcięty. Możesz traktować token jako słowo. Może to poprawić wydajność, gdy wartości właściwości tekstowych zawierają długie ciągi, ponieważ jeśli max_length nie jest określony, fastText koduje wszystkie tokeny bez względu na długość ciągu.
  • tekst_sbert (nowe) – Używa zdania BERT (SBERTA) metoda kodowania. SBERT jest rodzajem metody osadzania zdań przy użyciu modeli uczenia reprezentacji kontekstowej, BERT-Networks. text_sbert jest zalecany, gdy język nie jest obsługiwany przez text_fasttext. Neptune obsługuje dwie metody SBERT: text_sbert128, który jest domyślny, jeśli po prostu określisz text_sbert, text_sbert512. Różnica między nimi to maksymalna liczba tokenów we właściwości tekstowej, które zostaną zakodowane. The text_sbert128 kodowanie koduje tylko pierwsze 128 tokenów, podczas gdy text_sbert512 koduje do 512 tokenów. W rezultacie, używając text_sbert512 może wymagać dłuższego czasu przetwarzania niż text_sbert128. Obie metody są wolniejsze niż text_fasttext.
  • tekst_word2vec - Używa Word2Stary algorytmy pierwotnie opublikowane przez Google do kodowania tekstu. Word2Vec obsługuje tylko język angielski.
  • tekst_tfidf – Używa terminu częstotliwość odwrotna częstotliwości dokumentu (TF-IDF) wektoryzator do kodowania tekstu. Kodowanie TF-IDF obsługuje funkcje statystyczne, których nie obsługują inne kodowania. Określa ilościowo ważność lub znaczenie słów we właściwościach jednego węzła wśród wszystkich pozostałych węzłów.

Należy pamiętać, że text_word2vec i text_tfidf były wcześniej obsługiwane i nowe metody text_fasttext i text_sbert są zalecane w stosunku do starych metod.

Porównanie różnych koderów tekstu

Poniższa tabela przedstawia szczegółowe porównanie wszystkich obsługiwanych opcji kodowania tekstu (text_fasttext, text_sbert, text_word2vec). text_tfidf nie jest metodą kodowania opartą na modelu, ale raczej miarą opartą na liczbie, która ocenia, jak istotny jest token (na przykład słowo) dla funkcji tekstu w innych węzłach lub krawędziach, więc nie uwzględniamy text_tfidf dla porownania. Zalecamy używanie text_tfidf gdy chcesz określić ilościowo ważność lub istotność niektórych słów w jednej właściwości węzła lub krawędzi wśród wszystkich innych właściwości węzła lub krawędzi.)

. . tekst_szybkitekst tekst_sbert tekst_word2vec
Możliwości modelu Obsługiwany język angielski, chiński, hindi, hiszpański i francuski Ponad 50 języków Angielski
Potrafi kodować właściwości tekstowe zawierające słowa w różnych językach Nie Tak Nie
Wsparcie o maksymalnej długości Brak maksymalnego limitu długości Koduje sekwencję tekstu o maksymalnej długości 128 i 512 Brak maksymalnego limitu długości
Koszt czasu ładowanie Około 10 sekundy Około 2 sekundy Około 2 sekundy
Wnioskowanie pompatyczność Zwolnij Średni

Zwróć uwagę na następujące wskazówki dotyczące użytkowania:

  • W przypadku wartości właściwości tekstowych w języku angielskim, chińskim, hindi, hiszpańskim i francuskim: text_fasttext to zalecane kodowanie. Nie obsługuje jednak przypadków, w których to samo zdanie zawiera słowa w więcej niż jednym języku. Dla innych języków niż pięć, które fastText obsługuje, używaj text_sbert kodowanie.
  • Jeśli masz wiele ciągów tekstowych wartości właściwości dłuższych niż na przykład 120 tokenów, użyj max_length pole, aby ograniczyć liczbę tokenów w każdym ciągu, który text_fasttext koduje.

Podsumowując, w zależności od przypadku użycia, zalecamy następującą metodę kodowania:

  • Jeśli właściwości tekstu są w jednym z pięciu obsługiwanych języków, zalecamy użycie text_fasttext ze względu na szybkie wnioskowanie. text_fasttext jest zalecanym wyborem i możesz również użyć text_sbert w następujących dwóch wyjątkach.
  • Jeśli właściwości tekstu są w różnych językach, zalecamy użycie text_sbert ponieważ jest to jedyna obsługiwana metoda, która może kodować właściwości tekstowe zawierające słowa w kilku różnych językach.
  • Jeśli właściwości tekstu są w jednym języku, który nie jest jednym z pięciu obsługiwanych języków, zalecamy użycie text_sbert ponieważ obsługuje ponad 50 języków.
  • Jeśli średnia długość właściwości tekstu jest dłuższa niż 128, rozważ użycie text_sbert512 or text_fasttext. Obie metody mogą używać kodowania dłuższych sekwencji tekstowych.
  • Jeśli właściwości tekstu są tylko w języku angielskim, możesz użyć text_word2vec, ale zalecamy używanie text_fasttext za szybkie wnioskowanie.

Demonstracja przypadku użycia: zadanie rekomendacji pracy

Celem zadania rekomendacji pracy jest przewidzenie, o jakie stanowiska będą aplikować użytkownicy na podstawie ich poprzednich aplikacji, informacji demograficznych i historii pracy. Ten post używa otwarty zbiór danych Kaggle. Zestaw danych konstruujemy jako graf z trzema węzłami: praca, użytkownik, miasto.

Stanowisko charakteryzuje się tytułem, opisem, wymaganiami, zlokalizowanym miastem i stanem. Użytkownik jest opisywany właściwościami kierunku, rodzaju stopnia naukowego, liczby historii pracy, łącznej liczby lat doświadczenia zawodowego i innych. W tym przypadku użycia nazwa stanowiska, opis stanowiska, wymagania stanowiska i kierunki są w formie tekstowej.

W zbiorze danych użytkownicy mają następujące właściwości:

  • Stan – Na przykład CA lub 广东省 (chiński)
  • Major – Na przykład Zarządzanie Zasobami Ludzkimi lub Lic Cytura Fisica (hiszpański)
  • Rodzaj stopnia – Na przykład licencjat, magister, doktorat lub brak
  • Historia Pracy – Na przykład 0, 1, 16 itd.
  • Razem LataDoświadczenie – Na przykład 0.0, 10.0 lub NAN

Zadania mają następujące właściwości:

  • Tytuł – Na przykład asystent administracyjny lub Lic Cultura Física (hiszpański).
  • Opis – Na przykład: „To stanowisko asystenta administracyjnego jest odpowiedzialne za wykonywanie różnych funkcji wsparcia biurowego i administracyjnego w obszarach komunikacji…” Średnia liczba słów w opisie wynosi około 192.2.
  • wymagania – Na przykład „WYMAGANIA DOTYCZĄCE PRACY: 1. Dbałość o szczegóły; 2.Zdolność do pracy w szybkim tempie;3.Fakturowanie…”
  • Stan: – Na przykład CA, NY i tak dalej.

Typ węzła miasto jak Waszyngton DC i Orlando FL ma tylko identyfikator dla każdego węzła. W poniższej sekcji przeanalizujemy cechy różnych funkcji tekstu i zilustrujemy, jak wybrać odpowiednie kodery tekstu dla różnych właściwości tekstu.

Jak wybrać różne kodery tekstu

W naszym przykładzie Major i Tytuł właściwości są w wielu językach i mają krótkie sekwencje tekstowe, więc text_sbert jest polecany. Przykładowy kod dla parametry eksportu następująco. Dla text_sbert typ, nie ma innych pól parametrów. Tutaj wybieramy text_sbert128 inne niż text_sbert512, ponieważ długość tekstu jest stosunkowo krótsza niż 128.

"additionalParams": {
    "neptune_ml": {
        "version": "v2.0",
        "targets": [ ... ],
        "features": [
            {
                "node": "user",
                "property": "Major",
                "type": "text_sbert128"
            },
            {
                "node": "job",
                "property": "Title",
                "type": "text_sbert128",
            }, ...
        ], ...
    }
}

Połączenia Opis i wymagania właściwości są zwykle w długich sekwencjach tekstowych. Średnia długość opisu to około 192 słowa, czyli więcej niż maksymalna długość wejściowa text_sbert (128). Możemy użyć text_sbert512, ale może to spowodować wolniejsze wnioskowanie. Ponadto tekst jest w jednym języku (angielskim). Dlatego polecamy text_fasttext z en wartość języka ze względu na szybkie wnioskowanie i nieograniczoną długość danych wejściowych. Przykładowy kod dla parametry eksportu następująco. The text_fasttext kodowanie można dostosować za pomocą język i maksymalna długość, language wartość jest wymagana, ale max_length jest opcjonalne.

"additionalParams": {
    "neptune_ml": {
        "version": "v2.0",
        "targets": [ ... ],
        "features": [
            {
                "node": "job",
                "property": "Description",
                "type": "text_fasttext",
                "language": "en",
                "max_length": 256
            },
            {
                "node": "job",
                "property": "Requirements",
                "type": "text_fasttext",
                "language": "en"
            }, ...
        ], ...
    }
}

Więcej szczegółów na temat przypadków użycia rekomendacji pracy można znaleźć w Samouczek notebooka Neptuna.

Do celów demonstracyjnych wybieramy jednego użytkownika, tj. użytkownika 443931, który posiada tytuł magistra „Zarządzanie i zasoby ludzkie”. Użytkownik zgłosił się do pięciu różnych stanowisk, zatytułowanych „Menedżer ds. zasobów ludzkich (HR)”, „Generalny HR”, „Menedżer ds. zasobów ludzkich”, „Administrator ds. zasobów ludzkich” i „Starszy specjalista ds. płac”. Aby ocenić wykonanie zadania rekomendacji, usuwamy 50% zadań aplikacyjnych (krawędzie) użytkownika (tu usuwamy „Administratora zasobów ludzkich” i „Menedżera ds. zasobów ludzkich (HR)) i staramy się przewidzieć szczyt 10 miejsc pracy, o które ten użytkownik najprawdopodobniej się ubiega.

Po zakodowaniu funkcji zadania i funkcji użytkownika wykonujemy zadanie przewidywania łącza, ucząc modelu sieci splotowej z wykresem relacyjnym (RGCN). Uczenie modelu Neptune ML wymaga trzech kroków: przetwarzania danych, uczenia modelu i tworzenia punktu końcowego. Po utworzeniu punktu końcowego wnioskowania możemy przedstawić rekomendacje dla użytkownika 443931. Z przewidywanych 10 najlepszych zadań dla użytkownika 443931 (tj. „HR Generalist”, „Human Resources (HR) Manager”, „Senior Payroll Specialist”, „Human Administrator zasobów”, „Analityk HR” i in.), zauważamy, że dwa usunięte stanowiska pracy znajdują się wśród 10 prognoz.

Wnioski

W tym poście pokazaliśmy użycie nowych obsługiwanych koderów tekstu w Neptune ML. Te kodery tekstu są proste w użyciu i mogą spełniać wiele wymagań. W podsumowaniu,

  • text_fasttext jest zalecany dla funkcji korzystających z jednego i tylko jednego z pięciu języków obsługiwanych przez text_fasttext.
  • text_sbert jest zalecany w przypadku tekstu, którego nie obsługuje text_fasttext.
  • text_word2vec obsługuje tylko język angielski i może być zastąpiony przez text_fasttext w dowolnym scenariuszu.

Aby uzyskać więcej informacji na temat rozwiązania, zobacz GitHub repo. Aby spełnić Twoje wymagania, zalecamy używanie koderów tekstu na danych wykresu. Możesz po prostu wybrać nazwę kodera i ustawić niektóre atrybuty kodera, zachowując niezmieniony model GNN.


O autorach

Zakoduj wielojęzyczne właściwości tekstu w Amazon Neptune, aby szkolić modele predykcyjne PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Jiani Zhang jest naukowcem stosowanym w AWS AI Research and Education (AIRE). Zajmuje się rozwiązywaniem rzeczywistych aplikacji za pomocą algorytmów uczenia maszynowego, w szczególności problemów związanych z językiem naturalnym i grafami.

Znak czasu:

Więcej z Uczenie maszynowe AWS