Ein Sprachmodell ist ein mathematisches Modell, das eine menschliche Sprache als Wahrscheinlichkeitsverteilung über ihren Wortschatz beschreibt. Um ein Deep-Studying-Netzwerk zum Modellieren einer Sprache zu trainieren, müssen Sie das Vokabular identifizieren und seine Wahrscheinlichkeitsverteilung lernen. Sie können das Modell nicht aus dem Nichts erstellen. Sie benötigen einen Datensatz, aus dem Ihr Modell lernen kann.
In diesem Artikel erfahren Sie mehr über Datensätze, die zum Trainieren von Sprachmodellen verwendet werden, und wie Sie gängige Datensätze aus öffentlichen Repositorys beziehen.
Fangen wir an.
Datensätze zum Trainieren eines Sprachmodells
Foto von Dan V. Einige Rechte vorbehalten.
Ein guter Datensatz zum Trainieren eines Sprachmodells
Ein gutes Sprachmodell sollte den korrekten Sprachgebrauch erlernen, frei von Vorurteilen und Fehlern. Im Gegensatz zu Programmiersprachen mangelt es menschlichen Sprachen an formaler Grammatik und Syntax. Sie entwickeln sich ständig weiter, sodass es unmöglich ist, alle Sprachvarianten zu katalogisieren. Daher sollte das Modell anhand eines Datensatzes trainiert werden, anstatt anhand von Regeln erstellt zu werden.
Das Einrichten eines Datensatzes für die Sprachmodellierung ist eine Herausforderung. Sie benötigen einen großen, vielfältigen Datensatz, der die Nuancen der Sprache darstellt. Gleichzeitig muss es hochwertig sein und den korrekten Sprachgebrauch wiedergeben. Idealerweise sollte der Datensatz manuell bearbeitet und bereinigt werden, um Störungen wie Tippfehler, Grammatikfehler und nichtsprachliche Inhalte wie Symbole oder HTML-Tags zu entfernen.
Die Erstellung eines solchen Datensatzes von Grund auf ist kostspielig, es sind jedoch mehrere hochwertige Datensätze frei verfügbar. Zu den gängigen Datensätzen gehören:
- Gemeinsames Kriechen. Ein riesiger, kontinuierlich aktualisierter Datensatz von über 9,5 Petabyte mit vielfältigen Inhalten. Es wird von führenden Modellen wie GPT-3, Llama und T5 verwendet. Da die Quelle jedoch aus dem Web stammt, enthält sie minderwertige und doppelte Inhalte sowie Vorurteile und anstößiges Materials. Um es nutzbar zu machen, sind gründliche Reinigung und Filterung erforderlich.
- C4 (Colossal Clear Crawled Corpus). Ein 750-GB-Datensatz aus dem Web. Im Gegensatz zu Frequent Crawl wird dieser Datensatz vorbereinigt und gefiltert, was die Verwendung erleichtert. Dennoch müssen Sie mit möglichen Vorurteilen und Fehlern rechnen. Das T5-Modell wurde auf diesem Datensatz trainiert.
- Wikipedia. Allein der englische Inhalt umfasst etwa 19 GB. Es ist riesig und dennoch überschaubar. Es ist intestine kuratiert, strukturiert und nach Wikipedia-Requirements bearbeitet. Obwohl es ein breites Spektrum an Allgemeinwissen mit hoher sachlicher Genauigkeit abdeckt, sind sein enzyklopädischer Stil und sein Ton sehr spezifisch. Das alleinige Coaching dieses Datensatzes kann dazu führen, dass Modelle zu stark an diesen Stil angepasst werden.
- WikiText. Ein Datensatz, der aus verifiziert guten und vorgestellten Wikipedia-Artikeln abgeleitet wurde. Es gibt zwei Versionen: WikiText-2 (2 Millionen Wörter aus Hunderten von Artikeln) und WikiText-103 (100 Millionen Wörter aus 28.000 Artikeln).
- BookCorpus. Ein wenige GB großer Datensatz langformatiger, inhaltsreicher und hochwertiger Buchtexte. Nützlich zum Erlernen kohärenten Geschichtenerzählens und weitreichender Abhängigkeiten. Es sind jedoch Urheberrechtsprobleme und soziale Vorurteile bekannt.
- Der Haufen. Ein 825 GB großer, kuratierter Datensatz aus mehreren Quellen, einschließlich BookCorpus. Es mischt verschiedene Textgenres (Bücher, Artikel, Quellcode und wissenschaftliche Arbeiten) und bietet so eine breite thematische Abdeckung, die auf multidisziplinäres Denken ausgelegt ist. Diese Vielfalt führt jedoch zu unterschiedlicher Qualität, doppelten Inhalten und inkonsistenten Schreibstilen.
Abrufen der Datensätze
Sie können on-line nach diesen Datensätzen suchen und sie als komprimierte Dateien herunterladen. Sie müssen jedoch das Format jedes Datensatzes verstehen und benutzerdefinierten Code schreiben, um ihn zu lesen.
Alternativ können Sie im Hugging Face-Repository unter nach Datensätzen suchen https://huggingface.co/datasets. Dieses Repository stellt eine Python-Bibliothek bereit, mit der Sie Datensätze in Echtzeit in einem standardisierten Format herunterladen und lesen können.
Hugging Face Datasets Repository
Laden wir den WikiText-2-Datensatz von Hugging Face herunter, einen der kleinsten Datensätze, die zum Aufbau eines Sprachmodells geeignet sind:
Zufällig aus Datensätzen importieren import load_dataset dataset = load_dataset(„wikitext“, „wikitext-2-raw-v1″) print(f“Größe des Datensatzes: {len(dataset)}“) # einige Beispiele drucken n = 5 während n > 0: idx = random.randint(0, len(dataset)-1) textual content = dataset(idx)(„textual content“).strip() wenn textual content und nicht textual content.startswith(„=“): print(f“{idx}: {textual content}“) n -= 1
|
Import zufällig aus Datensätze Import Load_Dataset Datensatz = Load_Dataset(„Wikitext“, „wikitext-2-raw-v1“) drucken(F„Größe des Datensatzes: {len(dataset)}“) # Drucken Sie ein paar Beispiele aus N = 5 während N > 0: idx = zufällig.Randint(0, len(Datensatz)–1) Textual content = Datensatz(idx)(„Textual content“).Streifen() Wenn Textual content Und nicht Textual content.beginntmit(„=“): drucken(F„{idx}: {textual content}“) N -= 1 |
Die Ausgabe könnte so aussehen:
Größe des Datensatzes: 36718 31776: Das Quellgebiet des Missouri oberhalb von Three Forks erstreckt sich viel weiter flussaufwärts als … 29504: Regionale Varianten des Wortes Allah kommen sowohl im heidnischen als auch im christlichen Prä-@-@ vor … 19866: Pokiri (englisch: Rogue) ist ein Actionfilm in indischer Telugu-Sprache aus dem Jahr 2006, … 27397: Die erste Getreidemühle in Minnesota wurde gebaut 1823 in Fort Snelling als … 10523: Die Musikindustrie nahm Careys Erfolg zur Kenntnis. Sie gewann zwei Auszeichnungen beim …
|
Größe des Datensatzes: 36718 31776: Das Quellgebiet des Missouri oberhalb von Three Forks erstreckt sich viel weiter flussaufwärts als … 29504: Regionale Varianten des Wortes Allah kommen sowohl in der heidnischen als auch in der christlichen Vorzeit vor … 19866: Pokiri (englisch: Rogue) ist ein indischer Telugu-Actionfilm aus dem Jahr 2006, … 27397: Die erste Getreidemühle in Minnesota wurde 1823 in Fort Snelling als … gebaut. 10523: Die Musikindustrie nahm Careys Erfolg zur Kenntnis. Sie gewann zwei Auszeichnungen beim … |
Falls Sie dies noch nicht getan haben, installieren Sie die Hugging Face-Datensatzbibliothek:
Wenn Sie diesen Code zum ersten Mal ausführen, load_dataset() lädt den Datensatz auf Ihren lokalen Laptop herunter. Stellen Sie sicher, dass Sie über ausreichend Speicherplatz verfügen, insbesondere bei großen Datensätzen. Standardmäßig werden Datensätze heruntergeladen ~/.cache/huggingface/datasets.
Alle Hugging Face-Datensätze folgen einem Standardformat. Der dataset Das Objekt ist ein iterierbares Objekt, wobei jedes Ingredient als Wörterbuch fungiert. Für das Sprachmodelltraining enthalten Datensätze normalerweise Textzeichenfolgen. In diesem Datensatz wird Textual content unter gespeichert "textual content" Schlüssel.
Der obige Code probiert einige Elemente aus dem Datensatz. Sie sehen Klartextzeichenfolgen unterschiedlicher Länge.
Nachbearbeitung der Datensätze
Bevor Sie ein Sprachmodell trainieren, möchten Sie möglicherweise den Datensatz nachbearbeiten, um die Daten zu bereinigen. Dazu gehört die Neuformatierung von Textual content (Abschneiden langer Zeichenfolgen, Ersetzen mehrerer Leerzeichen durch einzelne Leerzeichen), das Entfernen nichtsprachlicher Inhalte (HTML-Tags, Symbole) und das Entfernen unerwünschter Zeichen (zusätzliche Leerzeichen um Satzzeichen). Die spezifische Verarbeitung hängt vom Datensatz und davon ab, wie Sie dem Modell Textual content präsentieren möchten.
Wenn Sie beispielsweise ein kleines Modell im BERT-Stil trainieren, das nur Kleinbuchstaben verarbeitet, können Sie die Vokabulargröße reduzieren und den Tokenizer vereinfachen. Hier ist eine Generatorfunktion, die nachbearbeiteten Textual content bereitstellt:
def wikitext2_dataset(): dataset = load_dataset(„wikitext“, „wikitext-2-raw-v1“) für Ingredient im Datensatz: textual content = merchandise(„textual content“).strip() wenn nicht textual content oder textual content.startswith(„=“): fortfahren # leere Zeilen oder Kopfzeilen überspringen yield textual content.decrease() # Kleinbuchstabenversion des Textes generieren
|
def wikitext2_dataset(): Datensatz = Load_Dataset(„Wikitext“, „wikitext-2-raw-v1“) für Artikel In Datensatz: Textual content = Artikel(„Textual content“).Streifen() Wenn nicht Textual content oder Textual content.beginntmit(„=“): weitermachen # Überspringen Sie die Leerzeilen oder Kopfzeilen Ertrag Textual content.untere() # Erzeuge eine Kleinbuchstabenversion des Textes |
Eine gute Nachbearbeitungsfunktion zu erstellen ist eine Kunst. Es sollte das Sign-Rausch-Verhältnis des Datensatzes verbessern, um dem Modell zu helfen, besser zu lernen, und gleichzeitig die Fähigkeit bewahren, unerwartete Eingabeformate zu verarbeiten, auf die ein trainiertes Modell möglicherweise stößt.
Weitere Lektüre
Nachfolgend finden Sie einige Ressourcen, die für Sie nützlich sein könnten:
Zusammenfassung
In diesem Artikel haben Sie etwas über Datensätze erfahren, die zum Trainieren von Sprachmodellen verwendet werden, und darüber, wie Sie allgemeine Datensätze aus öffentlichen Repositorys beziehen. Dies ist nur ein Ausgangspunkt für die Erkundung von Datensätzen. Erwägen Sie die Nutzung vorhandener Bibliotheken und Instruments, um die Ladegeschwindigkeit von Datensätzen zu optimieren, damit diese nicht zu einem Engpass in Ihrem Trainingsprozess werden.
