Verbesserung der Qualität der Textklassifizierung durch Verbindung von Wikipedia

Wir verwenden eine große strukturierte Quelle mehrsprachiger Texte - Wikipedia, um die Klassifizierung von Texten zu verbessern. Der Ansatz ist gut mit einem hohen Maß an Automatismus und Unabhängigkeit, von dem ein bestimmtes Klassifizierungsproblem gelöst wird. Die größte Auswirkung wird jedoch auf die Aufgaben der Themenbestimmung erwartet.

Die Hauptidee ist, nur die Texte aus Wikipedia zu extrahieren, die uns helfen, unser Klassifizierungsproblem zu lösen, und andere zu ignorieren. Wenn wir Texte über Katzen klassifizieren, ist es unwahrscheinlich, dass wir Texte zur Quantenphysik benötigen, obwohl Texte zu anderen Tierarten nützlich sein können. Die automatische Trennung solcher Texte voneinander ist das Wesentliche des beschriebenen Ansatzes.

Wie Sie wissen, ist Wikipedia eine Sammlung von Artikeln zu vielen Wissens- und Interessenbereichen. Gleichzeitig enthält ein wesentlicher Teil der Artikel Links zu Artikeln eines ähnlichen Themas, jedoch in anderen Sprachen. Dies sind keine Übersetzungen, nämlich Artikel eines allgemeinen Themas. Außerdem fallen die meisten Artikel in eine oder mehrere Kategorien. Kategorien wiederum sind größtenteils in Form eines hierarchischen Baums organisiert. Das heißt, die Aufgabe, Wikipedia-Artikel zu für uns interessanten Themen zu gruppieren, kann gelöst werden.

Wir verwenden die Ressource DBPedia - eine vorverdrahtete und strukturierte Version von Wikipedia. DBPedia gibt uns alle notwendigen Informationen - die Namen der Artikel, ihre Anmerkungen, die Kategorien der Artikel und die übergeordneten Kategorien für die Kategorien. Wir beginnen mit der auf Wikipedia am häufigsten vertretenen Sprache - Englisch. Wenn Ihre Aufgabe keine oder nur wenige englischsprachige Texte enthält, verwenden Sie die Sprache, für die es viele Dokumente gibt.

Schritt 1. Wikipedia gruppieren


Konzentrieren Sie sich auf Artikelkategorien. Ignorieren Sie vorerst ihren Inhalt. Kategorien bilden ein Diagramm, meistens baumartig, aber es gibt auch Zyklen. Artikel sind die Endpunkte des Diagramms (Blätter), die mit einem oder mehreren Knoten des Diagramms verbunden sind. Wir verwenden das Node2Vec-Tool, um eine Vektordarstellung jeder Kategorie und jedes Artikels zu erhalten. Artikel ähnlicher Themen werden im Vektorraum zusammengefasst.

Wir gruppieren nach einer geeigneten Methode des Artikels in eine ziemlich große (Hunderte) Anzahl von Clustern.

Schritt 2. Klassifizierertraining auf Wikipedia


Wir ersetzen die Namen der Artikel in den resultierenden Clustern durch ihre Anmerkungen (Long Abstract und Short Abstract - ungefähr ein Textabschnitt pro Artikel). Jetzt haben wir Hunderte von Clustern, die als Textsätze definiert sind. Wir verwenden ein praktisches Modell und erstellen einen Klassifikator, der das Problem der Klassifizierung mehrerer Klassen löst: einen Cluster - eine Klasse. Wir haben FastText verwendet.
Bei der Ausgabe erhalten wir ein Modell, das Text als Eingabe verwendet, und bei der Ausgabe erhalten Sie einen Vektor mit Schätzungen des Grades, zu dem der Text zu unseren Hunderten von Klassenclustern gehört.

Wenn der erste Schritt darin besteht, Wikipedia-Artikel nicht nach Kategorien, sondern nach Inhalt zu gruppieren, verlieren wir erstens Informationen nach Kategorien, aber es ist wichtig, und zweitens erhalten wir ein entartetes System, das nach Texten gruppiert und aufgebaut wird Klassifikatormodell. Die endgültige Qualität wird wahrscheinlich schlechter sein als bei einem separaten Ansatz. Obwohl ich nicht überprüft habe.

Schritt 3. Erstellen Sie ein Modell aus Ihren eigenen Kampfdaten


Wir verwenden eine Auswahl unserer Kampfdaten und senden jedes Dokument ab Schritt 2 an die Eingabe des Modells. Das Modell gibt einen Vektor von Schätzungen zurück. Wir verwenden diesen Vektor als Merkmalsvektor für das betreffende Dokument. Nachdem wir alle unsere Trainingsmuster von Kampfdokumenten verarbeitet haben, erhalten wir eine Tabelle in der Standardform für maschinelles Lernen - ein Klassenetikett, eine Reihe von numerischen Zeichen. Wir nennen diesen Tisch ein Trainingsset.

Wir bauen auf dem Trainingsbeispiel einen Klassifikator auf, der den Informationsgehalt einzelner Attribute bewerten kann. Entscheidungsbäume und zufällige Waldvariationen davon sind gut geeignet. Die informativsten Anzeichen sind jene Cluster von Wikipedia-Artikeln, die nicht nur ähnliche Themen wie die Themen unserer Kampfdokumente haben, sondern vor allem die Themen dieser Artikel ermöglichen es uns, unsere Kampfklassen gut zu trennen. Bei den ersten Iterationen ist das Histogramm der Informativität von Zeichen normalerweise ziemlich flach - mehrere informative Cluster und ein langer Schwanz sind in Bezug auf die Informativität fast gleich den verbleibenden Hunderten von Zeichen.

Nach dem Studium des Histogramms des Informationsgehalts der Zeichen wurde jedes Mal ein Wendepunkt empirisch bestimmt, und ungefähr 10 bis 30% der Cluster gingen zur nächsten Iteration. Das Wesentliche der Iteration ist, dass Artikel aus den ausgewählten informativen Clustern kombiniert, den Schritten 1 bis 3 unterzogen wurden, wo sie erneut geclustert wurden, zwei Klassifizierer erneut erstellt wurden und alles mit einer Analyse des Histogramms des Informationsinhalts endete. Es dauert 3-4 Iterationen.

Es stellte sich heraus, dass auf unseren Daten die digitalen Zeichen, insbesondere die Zahlen der Jahre, ein sehr starkes Gewicht haben und die Informativität des gesamten Clusters auf sich ziehen. Als logisches Ergebnis wurden die Cluster, die den jährlichen Sportveranstaltungen gewidmet waren, am informativsten - eine Masse von Zahlen und Daten, ein enger Wortschatz. Ich musste alle Zahlen in den Texten der Artikelanmerkungen entfernen (im zweiten Schritt). Es wurde merklich besser, Artikelcluster, die wirklich ein bestimmtes Thema hatten, stachen heraus (wie wir es uns vorgestellt hatten). Gleichzeitig tauchten unerwartete Cluster auf, die logischerweise auf unsere Kampfmission fielen, das richtige Vokabular hatten, aber es war sehr schwierig, die Nützlichkeit solcher Cluster von vornherein zu erraten.

Schritt 4. Finalisieren Sie das Modell


Nach mehreren Iterationen der Schritte 1 bis 3 haben wir eine angemessene Anzahl von Artikeln aus Wikipedia ausgewählt, deren Themen dazu beitragen, unsere Kampfdokumente zu teilen. Wir erweitern die Auswahl um ähnliche Artikel in anderen Sprachen, die für uns von Interesse sind, und bilden endgültige Cluster, diesmal zehn. Diese Cluster können auf zwei Arten verwendet werden: Erstellen Sie entweder einen Klassifikator ähnlich Schritt 2 und erweitern Sie damit den digitalen Merkmalsvektor in Ihrer Kampfmission, oder verwenden Sie diese Textsätze als Quelle für zusätzliches Vokabular und integrieren Sie sie in Ihren Kampfklassifikator. Wir haben den zweiten Weg benutzt.

Unser Kampfklassifikator besteht aus zwei Modellen - abgeschnittenen naiven Bayes und xgboost. Naive Bayes arbeitet mit langen Gramm, dies sind Gramm mit einer Länge von 1 bis 16 Elementen, und jedes gefundene Gramm neigt die Summe zu einer der Klassen, aber Bayes trifft keine endgültige Entscheidung - es gibt nur die Summe der Grammgewichte an, die sich auf jedes beziehen aus Klassen. Xgboost akzeptiert die Ausgabe von Bayes, anderen Klassifizierern und einigen digitalen Attributen, die unabhängig vom Text erstellt werden, und xgboost liefert bereits das endgültige Modell und die endgültige Bewertung. Dieser Ansatz macht es einfach, beliebige Textsätze mit dem Gramm Bayes-Modell zu verbinden, einschließlich der resultierenden Sätze von Wikipedia-Artikeln, und xgboost sucht bereits nach Mustern in Form typischer Reaktionen von Wikipedia-Clustern auf Kampftexte.

Ergebnisse und Schlussfolgerungen


Das erste Ergebnis ergab eine Erhöhung von der bedingten Genauigkeit von 60% auf 62%. Beim Ersetzen der Anmerkungen von Wikipedia-Artikeln in Schritt 4 durch die entleerten Artikel selbst wurde die Genauigkeit auf 66% erhöht. Das Ergebnis ist natürlich, da die Größe der Anmerkung zwei oder drei Sätze beträgt und die Größe des Artikels um Größenordnungen größer ist. Mehr Sprachmaterial - höhere Wirkung.

Wir sollten erwarten, dass nach Abschluss des gesamten Verfahrens für die Texte von Artikeln anstelle von Anmerkungen die Qualitätssteigerung noch größer ist, aber es gibt bereits ein Problem mit der technischen Nummer - das Herunterladen und Verarbeiten der gesamten Wikipedia oder ihres erkennbaren Teils (wenn Sie nicht mit der ersten Iteration beginnen) ist schwierig. Wenn Sie anfänglich nicht nur Englisch, sondern alle Sprachen von Interesse verwenden, können Sie trotzdem etwas anderes gewinnen. In diesem Fall ist das Wachstum der verarbeiteten Mengen vielfältig und nicht wie im ersten Fall um Größenordnungen.

Semantischer Dokumentvektor


Für jedes Dokument wird ein Vektor aus der Beziehung des Dokuments zu den angegebenen Themen basierend auf Wikipedia-Kategorien erstellt. Der Vektor wird entweder nach der in Schritt 3 beschriebenen Methode oder nach unseren Gramm Bayes berechnet. Dementsprechend können Kampfdokumente gemäß diesen Vektoren gruppiert werden und eine Gruppierung von Kampfdokumenten nach Subjekt erhalten. Es müssen nur noch die Hashtags abgelegt werden und jedes neue Dokument kann bereits mit Tags in die Datenbank fallen. Welche dann Benutzer suchen können. Dies ist der Fall, wenn Sie dem Benutzer Tags explizit und sichtbar anbringen. Es sieht modisch aus, obwohl ich kein Unterstützer bin.

Adaptive Suche


Eine interessantere Methode zur Verwendung semantischer Dokumentvektoren ist die adaptive Suche. Wenn Sie die Aktivität des Benutzers beobachten, auf welchen Dokumenten er verweilt und welche er nicht einmal liest, können Sie den Interessenbereich des Benutzers im langfristigen Sinne (schließlich haben Benutzer auch eine Aufteilung der Verantwortlichkeiten und jeder sucht hauptsächlich nach seinen eigenen) und im Rahmen der aktuellen Suchsitzung skizzieren.

Dokumente mit ähnlichen Themen haben ähnliche semantische Vektoren mit einem hohen Kosinusmaß. Auf diese Weise können Sie Dokumente in den Suchergebnissen im laufenden Betrieb entsprechend dem Grad ihrer erwarteten Übereinstimmung mit den Interessen des Benutzers bewerten, wodurch Sie die erforderlichen Dokumente in den Suchergebnissen erhöhen können.

Selbst bei identischen Suchanfragen für jeden Benutzer können die Suchergebnisse für ihn personalisiert werden. Je nachdem, an welchen Dokumenten im vorherigen Schritt der Benutzer interessiert war, wird der nächste Suchschritt an die Bedürfnisse des Benutzers angepasst, auch wenn sich die Suchanfrage selbst nicht geändert hat.

Wir arbeiten jetzt am Problem der adaptiven Suche.

Testen von Geschäftshypothesen


Das Geschäft kommt regelmäßig mit guten Ideen, die sehr schwer umzusetzen sind. Wir müssen lernen, Dokumente anhand ihrer Beschreibung zu finden, ohne entweder ein markiertes Muster für die Schulung zu haben oder die Möglichkeit zu haben, den Prüfern eine Reihe von Dokumenten zur Bewertung vorzulegen. Dies ist normalerweise der Fall, wenn Zieldokumente in Bezug auf den allgemeinen Dokumentenfluss selten gefunden werden. Wenn Sie daher einen Pool von 10.000 Dokumenten ohne vorläufige Filterung an die Prüfer senden, erhalten Sie 1-2 notwendige oder sogar weniger Ausgaben.

Unser Ansatz ist es, einen iterativen Lernprozess basierend auf semantischen Vektoren zu erstellen. Im ersten Schritt finden wir mehrere Texte, die unser Zielthema festlegen - dies können Wikipedia-Artikel oder Texte aus anderen Quellen sein. Für jeden Text wird sein semantischer Vektor erzeugt. Wenn das Zielthema komplex ist, funktioniert die Algebra der Mengen - Vereinheitlichung, Schnittmenge, Ausschluss einiger Themen von anderen. Zum Beispiel - es gibt Wikipedia-Artikel über "Forschung und Entwicklung" und über "Kosmetik", die Schnittmenge von Sets wird "F & E über Kosmetik" geben.

Alle Dokumente in der Datenbank können nach dem Grad ihrer Übereinstimmung mit den angegebenen Themen sortiert werden. Die Algebra der Mengen wirkt sich dann wie folgt auf die Dokumente selbst aus. Ein Dokument wird als themenrelevant angesehen, wenn sein semantischer Vektor näher am Vektor von Wikipedia-Artikeln eines bestimmten Themas liegt als der Durchschnitt der Datenbank. Schnittpunkt - wenn gleichzeitig der semantische Vektor des Dokuments näher an beiden Themen liegt als der Durchschnitt für die Datenbank. Andere Operationen sind ähnlich.

Wir finden eine Reihe von Hunderten oder zwei Dokumenten, die allen positiven Themen am nächsten kommen und gleichzeitig allen negativen Themen am nächsten kommen (wenn wir uns nicht für finanzielle Fragen in der von uns gesuchten Forschung interessieren, werden wir den Artikel aus der Kategorie „Finanzen“ als negatives Beispiel setzen). ) Wir werden diese Dokumente den Prüfern geben, sie werden mehrere positive Beispiele darin finden, basierend auf diesen Beispielen werden wir nach anderen Dokumenten mit engen semantischen Vektoren suchen, sie markieren und am Ausgang genug Dokumente für die positive Klasse erhalten, um einen geeigneten Klassifikator zu erstellen. Es kann mehrere Iterationen dauern.

Zusammenfassung


Der beschriebene Ansatz ermöglicht automatisch ohne manuelle Analyse die Auswahl aus Wikipedia oder anderen Quellensätzen von Texten, die zur Lösung des Klassifizierungsproblems beitragen. Durch einfaches Verbinden der Cluster von Wikipedia mit einem funktionierenden Klassifikator kann eine signifikante Qualitätssteigerung erwartet werden, ohne dass eine Anpassung des Klassifikators selbst erforderlich ist.

Nun, adaptive Suche ist interessant.

Source: https://habr.com/ru/post/de446228/


All Articles