Warum warum

Verschiedene Arten von Algorithmen für maschinelles Lernen wurden lange Zeit immer beliebter. Dank großer Unternehmen, die den technologischen Fortschritt vorantreiben, sind auch viele Open Source-Produkte erschienen. Eines davon ist Fasttext, auf das weiter unten eingegangen wird.
Fasttext - Entwicklung von Facebook. Das Hauptziel des Programms ist die Klassifizierung des Textes. Eine Textklassifizierung kann erforderlich sein für:
- Kombinieren von Textinformationen zu Ähnlichkeitsgruppen (Nachrichten zu einem Thema)
- Gruppieren von Text mit ähnlichen Themen in einer Gruppe (Nachrichten über Autos)
- Suchen Sie nach Informationen, bei denen es sich möglicherweise um Spam handelt
- Clickbait-Suche
- ...
Tatsächlich gibt es viele Optionen und es macht keinen Sinn, alles aufzulisten. Die Idee sollte klar sein.
Erstes Training
Auf der Bibliotheksseite finden Sie eine schrittweise
Installation und eine
erste Schulungsanweisung . Ich werde nicht auf sie eingehen.
BrötchenSie haben auch fertige Modelle in verschiedenen Sprachen zur Klassifizierung
hier. Bibliotheks-Setup
Das Problem des Trainings ist die Individualität der Parameter. Es gibt keine Parameter, die garantiert hervorragende Ergebnisse liefern. Im Internet finden Sie viele (
oder nicht ) Artikel mit Beispielen für Parameter, die möglicherweise nicht für Sie geeignet sind, da sie zu einem unbefriedigenden Ergebnis führen.
Nur empirisch können Sie die Parameter auswählen, die zu Ihnen passen. Nachfolgend finden Sie eine Liste derjenigen, die das Ergebnis erheblich beeinflussen:
-
dim - dimension steuert die Größe von Vektoren (
Butter ): Je mehr sie sind, desto mehr Informationen können sie erfassen, dies erfordert jedoch mehr Daten. Wenn jedoch zu viele Daten vorhanden sind, ist der Trainingsprozess langsamer. Der Standardwert beträgt 100 Messungen. Beginnen Sie mit 150 und wählen Sie den für Sie optimalen Wert.
-
lr - Lerngeschwindigkeit. Wenn der Parameter sehr klein ist, wird das Modell empfindlicher für den Text und unterscheidet möglicherweise keine ähnlichen Texte. Wenn der Parameter jedoch sehr groß ist, kann er im Gegenteil „sagen“, dass die Texte ähnlich sind, obwohl dies in Wirklichkeit nicht der Fall ist. Beginnen Sie mit 0,1 (Standard 0,05).
-
Epoche - Anzahl der Epochen. Dies ist die Anzahl der Durchgänge gemäß Ihren Daten. Mehr - besser (aber leider nicht immer). Dies erhöht die Trainingszeit. Beginnen Sie bei 150 (Standard ist 5).
-
Lernmodell . Lesen Sie die Beschreibung von Facebook. Es ist ganz klar.
-
Verlust - wie der Vergleich erfolgen wird. Alles hier ist sehr individuell und hängt von den Daten ab.
kleiner ExkursEs ist sehr cool, dass Sie auch ohne ausreichende Kenntnisse in der Klassifizierung von Texten und internen Mechanismen des neuronalen Netzwerks ein voll funktionsfähiges Modell erhalten können.
Textvorbereitung
Der Eingabetext ist ebenfalls wichtig. Je besser der Text, desto besser die Informationen aus dem Modell. Grundregeln für die Vorbereitung von Texten für das Training:
- Alle Tags löschen
- in Kleinbuchstaben umwandeln
- Interpunktionszeichen entfernen
- Hash-Tags und Links entfernen
- Stoppwörter ausschließen
- kleine Wörter ausschließen (1,2,3 Zeichen. hier entscheidet jeder für seine Daten)
Einige schreiben, dass man einfach Text in ein Modell fahren und trainieren kann. Diese Option passte nicht zu mir. Ich neige dazu zu glauben, dass ohne Vorverarbeitung ein Modell von schlechter Qualität erhalten wird.
Vorbereitung des Textes zur Klassifizierung
Hier gelten die gleichen Regeln, aber die Erfahrung hat gezeigt, dass diese Regeln durch Lemmatisierung oder Stottern ergänzt werden können. Mit ihnen können die Ergebnisse erheblich verbessert (
oder verschlechtert ) werden. Wenn Sie bereits Cluster gebildet haben, vergessen Sie nicht, dass Clustering-Algorithmen auch auf diese Cluster angewendet werden müssen, jedoch sehr sorgfältig, da Sie ein ähnliches Thema in einem Cluster zusammenfassen können. Dies ist im Sport sehr deutlich: Das Modell versteht, dass die Nachrichten aus dem Fußball stammen. Es ist jedoch sehr schwierig, das Modell dazu zu bringen, die spanische Meisterschaft von der italienischen zu unterscheiden.
Programmiersprache
mehr als wahrWie es im Family Guy gesagt wurde: "Ja, niemand kümmert sich darum "
Um das Modell zu trainieren, können Sie sowohl PHP (verwendet, da die meisten Websites darauf geschrieben sind) als auch Python (es gibt eine Bibliothek dafür) auswählen. Aber es gibt einen
sehr lustigen Moment . Sie müssen das Modell noch trainieren, indem Sie Fasttext über die Befehlszeile ausführen, wenn die Trainingszeit für Sie teuer ist. Es spielt also keine Rolle, worauf der Code für das Training geschrieben wird (was praktisch ist, schreiben Sie darauf).
Der Clustering-Mechanismus ist etwas komplizierter (
oder einfacher ). Wenn Sie Fahrräder mögen (
steuern Sie alle Prozesse selbst und benötigen Sie einen flexiblen Kontrollmechanismus ), schreiben Sie in PHP (wenn die Site in PHP ist). Wenn Sie keine Bibliotheken schreiben möchten und eine Auswahl an Sprachen zur Auswahl steht, ist es wahrscheinlich besser, Python zu verwenden. Ich habe keinen signifikanten Unterschied in der Geschwindigkeit festgestellt (in der Geschwindigkeit des Codes und nicht in der Geschwindigkeit, mit der er geschrieben wurde). Es liegt an dir.
Anstelle einer Schlussfolgerung
Ich habe ein Modell, das in den letzten Tagen ausschließlich auf Nachrichteninhalten basiert. Die Größe der Wörter darin beträgt ungefähr
40.000 . Du kannst mit ihr spielen. Beachten Sie jedoch Folgendes:
- Dies ist kein universelles Modell. Sie trainiert nur mit Nachrichteninhalten.
- Das Modell enthält nicht alle Nachrichten aus der Datenbank, sondern nur ein Editorial (dies reicht aus, um die Aufgabe zu lösen). Dies bedeutet, dass das Modell bei ähnlichen Nachrichten einen geringen Prozentsatz liefern kann.