Kodieren Sie mehrsprachige Texteigenschaften in Amazon Neptune, um Vorhersagemodelle zu trainieren PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Codieren Sie mehrsprachige Texteigenschaften in Amazon Neptune, um Vorhersagemodelle zu trainieren

Amazon Neptun ML ist eine maschinelle Lernfähigkeit (ML) von Amazon Neptun Dies hilft Ihnen, genaue und schnelle Vorhersagen für Ihre Diagrammdaten zu treffen. Unter der Haube verwendet Neptune ML Graph Neural Networks (GNNs), um gleichzeitig die Vorteile der Graphstruktur und der Knoten-/Kanteneigenschaften zu nutzen, um die anstehende Aufgabe zu lösen. Herkömmliche Verfahren verwenden entweder nur Eigenschaften und keine Graphstruktur (z. B. XGBoost, Neural Networks) oder nur Graphstruktur und keine Eigenschaften (z. B. node2vec, Label Propagation). Um die Knoten-/Kanteneigenschaften besser manipulieren zu können, erfordern ML-Algorithmen, dass es sich bei den Daten um wohlverhaltende numerische Daten handelt, aber Rohdaten in einer Datenbank können andere Typen haben, wie beispielsweise Rohtext. Um diese anderen Datentypen nutzen zu können, benötigen wir spezialisierte Verarbeitungsschritte, die sie von ihrem nativen Typ in numerische Daten umwandeln, und die Qualität der ML-Ergebnisse hängt stark von der Qualität dieser Datentransformationen ab. Rohtext gehört wie Sätze zu den am schwierigsten zu transformierenden Typen, aber die jüngsten Fortschritte auf dem Gebiet der Verarbeitung natürlicher Sprache (Natural Language Processing, NLP) haben zu starken Methoden geführt, die Text verarbeiten können, der aus mehreren Sprachen und einer Vielzahl von Längen stammt.

Ab Version 1.1.0.0 unterstützt Neptune ML mehrere Text-Encoder (text_schnelltext, text_sbert, text_word2vec und text_tfidf), die die Vorteile der jüngsten Fortschritte im NLP bieten und Unterstützung für mehrsprachige Texteigenschaften sowie zusätzliche Inferenzanforderungen in Bezug auf Sprachen und Textlänge ermöglichen. Beispielsweise können in einem Anwendungsfall für Stellenempfehlungen die Stellenausschreibungen in verschiedenen Ländern in verschiedenen Sprachen beschrieben werden und die Länge der Stellenbeschreibungen kann erheblich variieren. Darüber hinaus unterstützt Neptune ML eine Auto Option, die automatisch die beste Kodierungsmethode basierend auf den Merkmalen des Textmerkmals in den Daten auswählt.

In diesem Beitrag veranschaulichen wir die Verwendung der einzelnen Text-Encoder, vergleichen ihre Vor- und Nachteile und zeigen anhand eines Beispiels, wie man die richtigen Text-Encoder für eine Jobempfehlungsaufgabe auswählt.

Was ist ein Textencoder?

Das Ziel der Textcodierung besteht darin, die textbasierten Kanten-/Knoteneigenschaften in Neptune in Vektoren mit fester Größe umzuwandeln, die in nachgelagerten maschinellen Lernmodellen entweder für Knotenklassifizierungs- oder Verknüpfungsvorhersageaufgaben verwendet werden können. Die Länge der Textfunktion kann stark variieren. Dabei kann es sich um ein Wort, einen Ausdruck, einen Satz, einen Absatz oder sogar um ein Dokument mit mehreren Sätzen handeln (die maximale Größe einer einzelnen Eigenschaft beträgt in Neptune 55 MB). Zusätzlich können die Textfunktionen in verschiedenen Sprachen sein. Es kann auch Sätze geben, die Wörter in mehreren verschiedenen Sprachen enthalten, die wir als definieren Code austausch.

Ab Version 1.1.0.0 können Sie in Neptune ML aus mehreren verschiedenen Text-Encodern auswählen. Jeder Encoder funktioniert etwas anders, hat aber das gleiche Ziel, ein Textwertfeld von Neptune in einen Vektor mit fester Größe umzuwandeln, den wir verwenden, um unser GNN-Modell mit Neptune ML zu erstellen. Die neuen Encoder sind wie folgt:

  • text_schnelltext (neu) – Verwendet schnellText Codierung. FastText ist eine Bibliothek zum effizienten Lernen von Textdarstellungen. text_fasttext wird für Funktionen empfohlen, die eine und nur eine der fünf von fastText unterstützten Sprachen verwenden (Englisch, Chinesisch, Hindi, Spanisch und Französisch). Das text_fasttext Methode kann optional die nehmen max_length -Feld, das die maximale Anzahl von Token in einem Texteigenschaftswert angibt, der codiert wird, wonach die Zeichenfolge abgeschnitten wird. Sie können ein Token als ein Wort betrachten. Dies kann die Leistung verbessern, wenn Texteigenschaftswerte lange Zeichenfolgen enthalten, da if max_length nicht angegeben ist, codiert fastText alle Token unabhängig von der Zeichenfolgenlänge.
  • text_sbert (neu) – Verwendet den Satz BERT (SBERT) Kodiermethode. SBERT ist eine Art Satzeinbettungsmethode, die die kontextuellen Darstellungslernmodelle, BERT-Netzwerke, verwendet. text_sbert wird empfohlen, wenn die Sprache nicht von unterstützt wird text_fasttext. Neptune unterstützt zwei SBERT-Methoden: text_sbert128, was der Standardwert ist, wenn Sie nur angeben text_sbert und text_sbert512. Der Unterschied zwischen ihnen ist die maximale Anzahl von Tokens in einer Texteigenschaft, die codiert werden. Das text_sbert128 encoding nur die ersten 128 Token kodiert, wohingegen text_sbert512 codiert bis zu 512 Token. Als Ergebnis verwenden text_sbert512 kann mehr Bearbeitungszeit erfordern als text_sbert128. Beide Methoden sind langsamer als text_fasttext.
  • text_word2vec - Verwendet Word2Old Algorithmen, die ursprünglich von Google zum Codieren von Text veröffentlicht wurden. Word2Vec unterstützt nur Englisch.
  • text_tfidf – Verwendet einen Begriff Frequenz-inverse Dokumenthäufigkeit (TF-IDF) Vektorisierer zum Codieren von Text. Die TF-IDF-Codierung unterstützt statistische Funktionen, die die anderen Codierungen nicht haben. Es quantifiziert die Wichtigkeit oder Relevanz von Wörtern in einer Knoteneigenschaft unter allen anderen Knoten.

Beachten Sie, dass text_word2vec und text_tfidf bisher unterstützt wurden und die neuen Methoden text_fasttext und text_sbert werden gegenüber den alten Methoden empfohlen.

Vergleich verschiedener Text-Encoder

Die folgende Tabelle zeigt den detaillierten Vergleich aller unterstützten Textcodierungsoptionen (text_fasttext, text_sbert und text_word2vec). text_tfidf ist keine modellbasierte Kodierungsmethode, sondern eher ein anzahlbasiertes Maß, das auswertet, wie relevant ein Token (z. B. ein Wort) für die Textmerkmale in anderen Knoten oder Kanten ist, also schließen wir es nicht ein text_tfidf zum Vergleich. Wir empfehlen die Verwendung text_tfidf wenn Sie die Wichtigkeit oder Relevanz einiger Wörter in einer Knoten- oder Kanteneigenschaft unter allen anderen Knoten- oder Kanteneigenschaften quantifizieren möchten.)

. . text_schnelltext text_sbert text_word2vec
Modellfähigkeit Unterstützte Sprache Englisch, Chinesisch, Hindi, Spanisch und Französisch Mehr als 50 Sprachen Englisch
Kann Texteigenschaften codieren, die Wörter in verschiedenen Sprachen enthalten Nein Ja Nein
Unterstützung für maximale Länge Keine maximale Längenbegrenzung Kodiert die Textsequenz mit der maximalen Länge von 128 und 512 Keine maximale Längenbegrenzung
Zeitkosten Laden Ungefähr 10 Sekunden Ungefähr 2 Sekunden Ungefähr 2 Sekunden
Inferenz Schnell Bremst Medium

Beachten Sie die folgenden Anwendungstipps:

  • Für Texteigenschaftswerte in Englisch, Chinesisch, Hindi, Spanisch und Französisch: text_fasttext ist die empfohlene Kodierung. Es kann jedoch keine Fälle behandeln, in denen derselbe Satz Wörter in mehr als einer Sprache enthält. Für andere Sprachen als die fünf, die fastText unterstützt, verwenden text_sbert Codierung.
  • Wenn Sie viele Eigenschaftswert-Textzeichenfolgen haben, die länger als beispielsweise 120 Token sind, verwenden Sie die max_length Feld, um die Anzahl der Token in jeder Zeichenfolge zu begrenzen text_fasttext kodiert.

Zusammenfassend empfehlen wir abhängig von Ihrem Anwendungsfall die folgende Codierungsmethode:

  • Wenn Ihre Texteigenschaften in einer der fünf unterstützten Sprachen vorliegen, empfehlen wir die Verwendung text_fasttext aufgrund seiner schnellen Inferenz. text_fasttext ist die empfohlene Auswahl und Sie können auch verwenden text_sbert in den folgenden zwei Ausnahmen.
  • Wenn Ihre Texteigenschaften in verschiedenen Sprachen vorliegen, empfehlen wir die Verwendung von text_sbert weil es die einzige unterstützte Methode ist, die Texteigenschaften kodieren kann, die Wörter in mehreren verschiedenen Sprachen enthalten.
  • Wenn Ihre Texteigenschaften in einer Sprache vorliegen, die nicht zu den fünf unterstützten Sprachen gehört, empfehlen wir die Verwendung von text_sbert weil es mehr als 50 Sprachen unterstützt.
  • Wenn die durchschnittliche Länge Ihrer Texteigenschaften länger als 128 ist, sollten Sie die Verwendung von in Betracht ziehen text_sbert512 or text_fasttext. Beide Verfahren können längere Textsequenzen kodieren.
  • Wenn Ihre Texteigenschaften nur auf Englisch sind, können Sie verwenden text_word2vec, aber wir empfehlen die Verwendung text_fasttext für seine schnelle Schlussfolgerung.

Anwendungsfall-Demo: Jobempfehlungsaufgabe

Das Ziel der Jobempfehlungsaufgabe besteht darin, vorherzusagen, für welche Jobs sich Benutzer basierend auf ihren früheren Bewerbungen, demografischen Informationen und ihrem beruflichen Werdegang bewerben werden. Dieser Beitrag verwendet ein offenes Kaggle-Dataset. Wir konstruieren den Datensatz als Diagramm vom Typ mit drei Knoten: Job, Benutzer und Stadt.

Ein Job wird durch seinen Titel, seine Beschreibung, seine Anforderungen, seine Stadt und sein Bundesland charakterisiert. Ein Benutzer wird mit den Eigenschaften Hauptfach, Abschlussart, Anzahl der Arbeitserfahrungen, Gesamtzahl der Jahre für Berufserfahrung und mehr beschrieben. Für diesen Anwendungsfall liegen Stellenbezeichnung, Stellenbeschreibung, Stellenanforderungen und Hauptfächer in Textform vor.

Im Datensatz haben Benutzer die folgenden Eigenschaften:

  • Bundesstaat – Zum Beispiel CA oder 广东省 (Chinesisch)
  • Dur – Zum Beispiel Human Resources Management oder Lic Cytura Fisica (Spanisch)
  • Abschlussart – Zum Beispiel Bachelor, Master, PhD oder Keine
  • WorkHistoryCount – Zum Beispiel 0, 1, 16 usw
  • TotalYearsExperience – Zum Beispiel 0.0, 10.0 oder NAN

Jobs haben die folgenden Eigenschaften:

  • Titel – Zum Beispiel Verwaltungsassistent oder Lic Cultura Física (Spanisch).
  • Beschreibung – Zum Beispiel: „Diese Position als Verwaltungsassistent ist für die Ausführung einer Vielzahl von Büro- und Verwaltungsunterstützungsfunktionen in den Bereichen Kommunikation, …“ verantwortlich. Die durchschnittliche Anzahl von Wörtern in einer Beschreibung beträgt etwa 192.2.
  • Voraussetzungen: – Zum Beispiel „JOB ANFORDERUNGEN: 1. Liebe zum Detail; 2.Fähigkeit, in einem schnelllebigen Umfeld zu arbeiten;3.Rechnungsstellung…“
  • Bundesstaat: – Zum Beispiel CA, NY usw.

Der Knotentyp Stadt wie Washington DC und Orlando FL hat nur die Kennung für jeden Knoten. Im folgenden Abschnitt analysieren wir die Eigenschaften verschiedener Textmerkmale und veranschaulichen, wie die richtigen Textcodierer für verschiedene Texteigenschaften ausgewählt werden.

So wählen Sie verschiedene Text-Encoder aus

Für unser Beispiel ist die Dur und Titel Eigenschaften sind mehrsprachig und haben kurze Textfolgen, also text_sbert ist empfohlen. Der Beispielcode für die Parameter exportieren ist wie folgt. Für die text_sbert Typ, es gibt keine weiteren Parameterfelder. Hier wählen wir text_sbert128 ausgenommen text_sbert512, da die Textlänge relativ kürzer als 128 ist.

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

Das Beschreibung und Voraussetzungen: Eigenschaften befinden sich normalerweise in langen Textsequenzen. Die durchschnittliche Länge einer Beschreibung beträgt etwa 192 Wörter, was länger ist als die maximale Eingabelänge von text_sbert (128). Wir können benutzen text_sbert512, aber es kann zu einer langsameren Inferenz führen. Außerdem ist der Text einsprachig (Englisch). Daher empfehlen wir text_fasttext an. Nach der Installation können Sie HEIC-Dateien mit der en Sprachwert aufgrund seiner schnellen Inferenz und nicht begrenzten Eingabelänge. Der Beispielcode für die Parameter exportieren ist wie folgt. Das text_fasttext Codierung kann mit angepasst werden Sprache und maximale Längedem „Vermischten Geschmack“. Seine language Wert ist erforderlich, aber max_length es ist optional.

"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"
            }, ...
        ], ...
    }
}

Weitere Einzelheiten zu den Anwendungsfällen für Stellenempfehlungen finden Sie im Neptun-Notebook-Tutorial.

Zu Demonstrationszwecken wählen wir einen Benutzer aus, nämlich Benutzer 443931, der einen Master-Abschluss in „Management and Human Resources“ besitzt. Der Benutzer hat sich auf fünf verschiedene Stellen mit den Titeln „Human Resources (HR) Manager“, „HR Generalist“, „Human Resources Manager“, „Human Resources Administrator“ und „Senior Payroll Specialist“ beworben. Um die Leistung der Empfehlungsaufgabe zu bewerten, löschen wir 50 % der Bewerbungsjobs (die Kanten) des Benutzers (hier löschen wir „Personaladministrator“ und „Personalleiter (HR)) und versuchen, die Spitze vorherzusagen 10 Jobs, für die sich dieser Benutzer höchstwahrscheinlich bewerben wird.

Nach dem Codieren der Job-Features und Benutzer-Features führen wir eine Link-Vorhersageaufgabe durch, indem wir ein RGCN-Modell (Relational Graph Convolutional Network) trainieren. Das Training eines Neptune ML-Modells erfordert drei Schritte: Datenverarbeitung, Modelltraining und Endpunkterstellung. Nachdem der Inferenzendpunkt erstellt wurde, können wir Empfehlungen für Benutzer 443931 abgeben. Aus den prognostizierten Top-10-Jobs für Benutzer 443931 (d. h. „HR-Generalist“, „Personalmanager (HR)“, „Senior Payroll Specialist“, „Human Resources Administrator“, „HR Analyst“ et al.) stellen wir fest, dass die beiden gelöschten Stellen unter den 10 Vorhersagen sind.

Zusammenfassung

In diesem Beitrag haben wir die Verwendung der neu unterstützten Text-Encoder in Neptune ML gezeigt. Diese Textcodierer sind einfach zu verwenden und können mehrere Anforderungen unterstützen. Zusammenfassend,

  • text_fasttext wird für Funktionen empfohlen, die eine und nur eine der fünf von text_fasttext unterstützten Sprachen verwenden.
  • text_sbert wird für Text empfohlen, den text_fasttext nicht unterstützt.
  • text_word2vec unterstützt nur Englisch und kann in jedem Szenario durch text_fasttext ersetzt werden.

Weitere Details zur Lösung finden Sie unter GitHub Repo. Wir empfehlen die Verwendung der Text-Encoder für Ihre Diagrammdaten, um Ihre Anforderungen zu erfüllen. Sie können einfach einen Encodernamen auswählen und einige Encoderattribute festlegen, während das GNN-Modell unverändert bleibt.


Über die Autoren

Kodieren Sie mehrsprachige Texteigenschaften in Amazon Neptune, um Vorhersagemodelle zu trainieren PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.Jiani Zhang ist ein angewandter Wissenschaftler von AWS AI Research and Education (AIRE). Sie arbeitet an der Lösung realer Anwendungen mit maschinellen Lernalgorithmen, insbesondere an Problemen mit natürlicher Sprache und Graphen.

Zeitstempel:

Mehr von AWS Maschinelles Lernen