Erstellung eines Themenklassifizierers mit automatisch entdeckten Schlüsselwort-Clustern, Teil I

Im Laufe der Jahre wurde viel über die relativen Vorteile automatischer oder maschineller Klassifizierung und von Menschen erstellter Ontologien und…

Im Laufe der Jahre wurde viel über die relativen Vorteile automatischer oder maschineller Klassifizierung und von Menschen erstellter Ontologien und Taxonomien geschrieben und diskutiert. Es ist allgemein anerkannt, dass von Menschen erstellte Taxonomien präziser sein können, aber sie sind schwer zu skalieren und erfordern viel Pflege, um eine gute Wiedererkennung zu erreichen. Techniken des maschinellen Lernens haben den Vorteil, dass sie mit einigem Aufwand recht gut skaliert werden können, aber es ist schwierig, eine 100%ige Genauigkeit zu erreichen. Die anfänglichen Kosten für die Erstellung von Modellen des maschinellen Lernens können akzeptabel sein, aber wie bei jedem 80/20-Problem erfordert die Perfektionierung dieser Modelle viel mehr Aufwand. Erschwert wird dies durch Probleme wie die „Überanpassung“, bei der das Modell in der Trainingsmenge sehr gut, in den „echten“ Daten aber sehr schlecht abschneidet. Hinzu kommt, dass fast alle diese Techniken eine numerische „Vektorisierung“ der Textdaten erfordern, mit denen die Lernalgorithmen arbeiten. Daher sind die Modelle, die sie erstellen, oft nicht intuitiv und können nicht von menschlichen Fachleuten bearbeitet werden – sie sind praktisch eine „Black Box“. (Sie können erfahren, welche Wörter als Schlüsselwörter ausgewählt wurden, indem Sie ihre numerischen IDs zuordnen, aber es ist sehr schwierig, das „Modell“ zu bearbeiten). Der Word2Vec-Algorithmus von Google stellt hier eine Ausnahme dar, da er Wort-zu-Wort-Vektoren erstellt, die für lineare Algebra-ähnliche Operationen auf konzeptionelle Beziehungen wie „Mann ist Frau“, „Junge ist Mädchen“, „Bruder ist Schwester“ oder „König ist Königin“ verwendet werden können. Mehr zu diesem faszinierenden ‚Pivot‘ und zu Word2Vec später.

Mein Ziel ist es, einen Themenklassifikator zu entwickeln, der automatisch entdeckte „Cluster“ von Schlüsselbegriffen verwendet, die dann zur Klassifizierung von Dokumenten verwendet werden können. Es ähnelt Methoden wie Latent Dirichlet Allocation (LDA) oder Latent Semantic Indexing (LSI), die Schlüsselwörter statistisch ermitteln und diese dann zur Klassifizierung von Dokumenten verwenden. Im Gegensatz dazu werden bei anderen unüberwachten Lernmethoden wie K-Means die Dokumente zunächst auf rein statistische Weise geclustert und dann gemeinsame Wörter identifiziert, die dann zur Kennzeichnung der Cluster verwendet werden. Die Methode, die ich hier beschreibe, unterscheidet sich auch insofern von der traditionellen ML, als sie keinen Vektoransatz verwendet, um die Schlüsselwort-‚Cluster‘ zu finden, sondern Solr-Facetten verwendet, um das gemeinsame Vorkommen von Schlüsselwörtern in Dokumenten zu bestimmen. Wie bei vektorbasierten, überwachten Lerntechniken gibt es auch bei dieser Methode einige Aspekte, die automatisiert sind, und einige, die menschliches Fachwissen erfordern. Das Ziel ist es jedoch, das Verhältnis von menschlicher zu maschineller Zeit zu minimieren – d.h. die Arbeitsbelastung des Menschen auf Kosten der Maschine zu verringern.

Schlüsselwörter haben die grundlegende Eigenschaft, dass sie häufig in Dokumenten über ein bestimmtes Thema vorkommen, aber selten oder gar nicht in Dokumenten, die dieses Thema nicht behandeln. Eine wichtige Eigenschaft von Schlüsselwörtern, die wir ‚automatisch‘ entdecken wollen, ist, dass sie nicht nur statistisch, sondern auch semantisch mit dem Thema des Dokuments zusammenhängen – das heißt, sie sind aus einem bestimmten Grund da, nicht nur zufällig! Akronyme, Fachausdrücke und andere spezialisierte Begriffe oder Phrasen eignen sich in der Regel gut als Schlüsselwörter. Schlüsselwörter, die mit demselben Thema verbunden sind, kommen in den Dokumenten, die wir klassifizieren möchten, häufig gemeinsam vor. Die Begriffe ‚kerberos‘ und ‚ldap‘ kommen beispielsweise nur in Dokumenten vor, in denen es um Sicherheit oder verwandte Konzepte geht. Eine Möglichkeit, ein Schlüsselwort von einem Nicht-Schlüsselwort zu unterscheiden, besteht also darin, dass sie dazu neigen, sich zu häufen, und dass sie dies nur in den Dokumenten tun, die wir kennzeichnen möchten. Allgemeinsprachliche Wörter oder Stoppwörter weisen diese Eigenschaft nicht auf, auch nicht seltene Wörter.

Kurz gesagt, die Methode, die ich beschreiben werde, sucht zunächst mit einer einfachen Facettierungstechnik nach so genannten „Schlüsselwort-Clustern“ und verwendet dann diese Schlüsselwort-Cluster, um Dokumente zu clustern (und möglicherweise auch für andere interessante Dinge). Auf das letztgenannte Thema werde ich in Teil II dieses Beitrags eingehen.

Wenn sie erfolgreich sind, können Methoden wie diese die Lücke zwischen rein menschlich kuratierten Taxonomien und maschinell erstellten Taxonomien schließen – Maschinen und Menschen können beide das tun, was sie gut können. Der Nachteil von taxonomiebasierten Ansätzen ist, dass sie ständig gepflegt werden müssen, insbesondere wenn sich Konzepte und Terminologie weiterentwickeln. Dieser Ansatz hilft, dieses Problem zu lösen, indem er die Maschine die neuen Schlüsselwortbeziehungen finden lässt, entweder weil ein neues Wort geprägt wurde oder weil ein bestehender Begriff auf neue Weise verwendet wird. Ein Beispiel für Letzteres wäre das Wort „Spark“ – ein bereits vorhandenes Wort, das nun in den Bereichen verteiltes Rechnen und maschinelles Lernen eine neue Bedeutung erhalten hat. Ein weiteres Beispiel wäre der Begriff ‚Apfel‘. Ein Beispiel für die erste Art wäre ‚Hadoop‘ – ein Wort, das in unserem Lexikon nicht vorkam, bis Doug Cutting es uns vorstellte. (Übrigens, Doug, was ist ein ’nutch‘?) Die Apache Foundation ist eine Quelle für viele dieser Begriffe – ob neu oder alt. Ein weiteres Beispiel ist ‚zookeeper‘, der eine andere Art von ‚Zoo‘ als den in San Diego verwaltet (aber immer noch das Problem der Müllbeseitigung hat, aber natürlich in einem anderen Sinne).

Wie alle Ansätze des maschinellen Lernens ist auch der automatische Algorithmus zum Clustering von Schlüsselwörtern, den ich beschreiben werde, nicht perfekt – er macht Fehler. Aber im Gegensatz zu den traditionellen mathematischen Vektorisierungsansätzen können die Fehler durch menschliche Korrekturen korrigiert werden. Die Technik erkennt zum Beispiel keine Phrasen. Sie erkennt, dass die Begriffe ‚Zertifizierung‘ und ‚Behörde‘ mit dem Thema ‚Sicherheit‘ zusammenhängen, aber sie weiß nicht, dass ‚Zertifizierungsbehörde‘ eine Schlüsselphrase in diesem Bereich ist. Ich habe dieses Problem mit dem Autophrasing TokenFilter angegangen, den ich der Solr-Gemeinschaft vor einigen Jahren vorgestellt habe(1). Damit können Fachexperten den Prozess mit bekannten Schlüsselwörtern wie „Big Data“ vorbereiten, die sonst als zwei Rauschwörter behandelt werden würden (so ziemlich). Ein anderes Beispiel wäre der Begriff „Abfrage“, der in dem Inhaltsbereich, mit dem ich arbeite (Lucidworks-Blogs), so gut wie allgegenwärtig ist – aber „Abfrage-Parser“ oder „Abfrage-Antwortzeit“ sind spezifische Konzepte, die sich sehr gut als Schlüsselbegriffe eignen. Wie die Taxonomieverwaltung profitiert also auch der Ansatz des Keyword-Clustering von der Kuratierung des Vokabulars, z.B. durch Stoppwörter, Autophrasen und Synonyme. Es funktioniert ziemlich gut, aber noch viel besser, wenn Sie es mit etwas semantischem Wissen anreichern. Einige dieser Dinge können mit anderen Techniken des maschinellen Lernens gefüttert werden, z. B. mit NLP-Parsern zur Erkennung von Substantivphrasen.

Automatisierte Generierung von Schlüsselwörtern aus einer Solr-Sammlung:

Wie funktioniert nun das Clustering von Schlüsselwörtern? Der erste Schritt besteht darin, eine Solr-Sammlung aus einer Reihe von Dokumenten zu erstellen. Ich habe unsere Website Lucidworks.com verwendet und einige Verarbeitungen in einer Lucidworks Fusion Index Pipeline vorgenommen, um mich auf Blog-Artikel zu konzentrieren (während ich dies schreibe, erstelle ich weitere Daten für eine zukünftige Ausführung dieser Methode – und schaffe auch einige Probleme dafür – wie unten beschrieben). Mit der HTMLTransformStage der Fusion Index Pipeline (die in Fusion 3.0 in die Datenquellenebene verschoben wurde) habe ich nur die Artikeltextabschnitte von Blogartikeln und den Artikeltitel herausgezogen und einige Boilerplate entfernt. Es hat sich herausgestellt, dass es sehr wichtig ist, saubere Daten für dieses Verfahren zu erhalten. Die Indizierung der rohen HTML-Seite bringt eine Menge Rauschen mit sich, das Sie aus dem Konzept bringen kann. Sobald ich diese Sammlung automatisch verschlagwortet und indiziert habe, kann ich den /terms request handler verwenden, um eine Liste aller eindeutigen Begriffe und Phrasen in dieser Gruppe von Blogartikeln zu erhalten, aus der ich versuchen werde, die Schlüsselbegriffe auszuwählen. Zunächst filtere ich die rohe /terms-Liste vor und wähle Begriffe aus, die nicht zu häufig (doc Frequency < 25%), aber auch nicht zu selten sind (doc Frequency > 1%).

Da ich in Solr auf jedes Feld facettieren kann, egal ob es tokenisiert ist (Text) oder nicht, führe ich für jeden Begriff in der Begriffsliste zwei Abfragen durch: eine positive Abfrage, bei der ich nach allen Dokumenten frage, die einen bestimmten Begriff (aus der Begriffsliste) im Feld article_text enthalten, und eine negative Abfrage, bei der ich nach allen Dokumenten frage, die diesen Begriff nicht enthalten. Für jede dieser Abfragen führe ich eine Facettierung auf das Feld article_text durch – und sammle eine Menge Facettenwerte (50.000). (Beachten Sie, dass die Facettierung eines tokenisierten Feldes bei Begriffsmengen von mehr als 16 Millionen nicht funktioniert. Ich musste also bei der Indexierung ein wenig herumprobieren, um die Begriffsmenge in ein mehrwertiges String-Feld mit aktivierten Doc Values zu verwandeln.) Die Abfragen, die ich für jedes Kandidaten-Schlüsselwort an Solr gesendet habe, sehen wie folgt aus:

Positive Abfrage:

q=article_text_auto:<query>&facet.field=article_terms&facet.mincount=2&rows=0&facet.limit=50000&fq=article_text_auto:*

Negative Abfrage:

q=-article_text_auto:<query>&facet.field=article_terms&facet.mincount=2&rows=0&facet.limit=50000&fq=article_text_auto:*

Der Unterschied ist also das Minuszeichen bei der negativen Abfrage. Ich füge fq=article_text_auto:* ein, um sicherzustellen, dass ich nur mit Dokumenten arbeite, die einen Wert für dieses Feld haben (etwa die Hälfte der Dokumente aus dem Crawl hatte keinen). Für jeden Facettenwert (der ein anderer Begriff oder eine andere Phrase im Dokumentensatz in Bezug auf das Testwort ist) berechne ich dann ein Verhältnis der Anzahl der Facettenwerte geteilt durch die Gesamtzahl der Treffer für die positive Abfrage und ein weiteres Verhältnis für den negativen Abfragefall. Ich berechne dann das Verhältnis für die positive Abfrage geteilt durch das Verhältnis für die negative Abfrage – dies ist tendenziell eine hohe Zahl (bis zu 1000 oder mehr) für Begriffe, die sich in denselben Dokumenten wie der ursprüngliche Begriff konzentrieren, und eine niedrige Zahl für Wörter, die mit etwa derselben Häufigkeit in den positiven und negativen Ergebnismengen vorkommen. Ich verwende auch eine Umkreissuche, um Begriffe herauszufiltern, die nicht innerhalb von 10 Wörtern des getesteten Begriffs vorkommen. Dann wende ich einen Schwellenwert an, um Nicht-Schlüsselwörter zu entfernen. Ich habe mich für einen Schwellenwert von 5,0 entschieden, was bedeutet, dass ein Wort in der positiven Gruppe mehr als 5 Mal häufiger vorkommt als in der negativen Gruppe.

 

    Facet count (positive Q)
   ---------------------------
    Total counts (positive Q)
-------------------------------------------
    Facet count (negative Q)
   ---------------------------
    Total counts (negative Q)

 

Diese Technik funktioniert insofern recht gut, als sie verwandte Schlüsselwörter herausfindet, aber auch einige Rauschwörter einbringt, die die Eigenschaft haben, relativ selten zu sein und aufgrund der Stichprobengröße (etwa 950+ Blogartikel) zufällig mit dem Ausgangsbegriff in Verbindung gebracht werden. Hier sehen Sie ein Beispiel für die Ausgabe für das Sicherheitsstichwort „Autorisierung“ (die Zahlen auf der linken Seite sind das Verhältnis der Verhältnisse, die aus den Facetten- und Trefferzahlen für die positiven und negativen Suchanfragen berechnet wurden):

178.312 Transport
92.458 Authentifizierung
84.911 kerberos
75.648 Erlaubnis
74.297 Anmeldung
47.550 sicher
39.625 ldap
39.625 spezifiziert
39.625 genehmigt
39.625 Identität
22.763 Mechanismus
16.982 Protokoll
14.859 Regel
14.265 nachträglich
12.608 Sicherheit
12.297 Status
11.598 Schicht
10.489 Browser
9.510 Plugin
8.741 log
8.491 richtig
7.925 Domäne
7.034 Antrag
6.426 Betrieb
6.202 api
5.683 benötigen
5.487 Verzeichnis
5.283 einzigartig
5.283 vollständig
5.105 Server

Wie Sie sehen können, wurden bei dem Ausgangsbegriff ‚Autorisierung‘ verwandte Begriffe wie ‚Authentifizierung‘, ‚Kerberos‘, ‚Erlaubnis‘, ‚Login‘, ’sicher‘ usw. gefunden, aber auch Begriffe wie ‚Transport‘, ’nachträglich‘, ‚ordnungsgemäß‘, ‚vollständig‘ usw. Der wahrscheinliche Grund dafür ist, dass die Nicht-Schlüsselwörter selten sind und daher zufälligerweise in diesen Dokumenten stärker konzentriert waren. Sie könnten auch den Stil der Autoren widerspiegeln, da die Blogartikel über Sicherheit von einigen wenigen Autoren verfasst wurden. Bei einer größeren Stichprobengröße wäre es möglich, dass diese Art von Rauschen weniger auftritt. Die kontinuierliche Pflege der Stoppwörterliste ist ebenfalls hilfreich.

Das ist also schon ziemlich gut, aber wie können wir die Situation noch verbessern? Denken Sie daran, dass ich diese Cluster für jedes Wort im Dokumentensatz berechnet habe, von denen nur einige auf der Grundlage der Schwellenwerte der Verhältnisse als Schlüsselwörter bestimmt wurden (etwa ein Drittel). Das bedeutet, dass ich auch Cluster für die meisten verwandten Wörter für jeden Begriff habe. Ich habe also diese anderen Cluster gefragt, mit welchen Begriffen in der Ausgangsmenge sie ebenfalls assoziiert sind, und die „Stimmen“ sozusagen gezählt. Diese Analyse wird als Kreuzkorrelation bezeichnet. Mit anderen Worten, ich verstärke die Fälle, in denen die assoziierten Begriffe wechselseitig sind. Anschließend habe ich diese Zählung verwendet, um die Punktzahlen zu erhöhen und einen weiteren Schwellenwert anzuwenden. Dadurch wurden die Cluster für den Schlüsselbegriff „Autorisierung“ etwas klarer.

1849.166 Beglaubigung
1443.482 kerberos
983.420 Erlaubnis
742.968 Anmeldung
594.375 ldap
570.600 sicher
317.000 spezifiziert
250.396 Mechanismus
203.786 Protokoll
198.125 Identität
133.734 Regel
100.863 Sicherheit
94.401 Browser
86.082 Status
85.590 nachträglich
61.185 log
55.475 Domäne
49.238 Anfrage
46.390 Ebene
43.892 Verzeichnis
25.525 Server

Was hier also passiert, ist, dass Schlüsselbegriffe dazu neigen, füreinander zu stimmen, weil sie semantisch und nicht nur statistisch im Dokumentensatz verwandt sind, aber nicht verwandte Begriffe (in Bezug auf das untersuchte Schlüsselwort) nicht, so dass sie tendenziell aus dem Bild fallen. Es bleiben zwar einige Störwörter übrig, aber insgesamt ist das Ergebnis sauberer.

Hier ist ein weiteres Beispiel für die Phrase „Machine Learning“ – extrahiert als Token mit dem AutophrasingTokenFilter:

296.237 Klassifizierung
193.387 Verarbeitung natürlicher Sprache
192.554 kollaborative Filterung
148.542 Semantische Suche
137.538 Vektor
123.785 Text zähmen
116.379 Informatik
114.432 Apachen-Mahut
113.782 semantisch
110.031 zeitlich
102.079 Algorithmus
82.523 Regression
74.271 Ontologie
68.769 Künstliche Intelligenz
61.892 Clustering
60.806 Technik
60.173 Apache Spark
59.600 Wissenschaftlerin
58.189 Muster
55.015 mathematisch
55.015 Bergbau
50.431 Informationsabfrage
50.014 phd
34.385 Timothy
33.009 Technik
27.508 akademisch
23.578 Datenanalytik
22.506 entdecken
20.269 Karte reduzieren

Hier gibt es nicht viel zu meckern. timothy‘ bezieht sich zweifellos auf unseren eigenen Tim Potter, der viel mit Apache Spark und anderen Tools für maschinelles Lernen gearbeitet hat. Namen sind für die Bestimmung des Fachgebiets unbedeutend, aber sie können später nützlich sein, um Experten für diese Themen zu identifizieren. Einige Begriffe wie ‚engineering‘, ‚academic‘ und ‚phd‘ sind etwas unspezifisch, aber insgesamt zeichnet das Cluster ein ziemlich gutes Bild des Fachgebiets.

Mit zwei relativ einfachen Techniken habe ich nun also eine Reihe von Schlüsselwort-Clustern, die für einen Fachexperten durchaus Sinn ergeben würden. Ich sollte an dieser Stelle auch erwähnen, dass einige echte Störwörter übrig geblieben sind (die meisten wurden im ersten Schritt herausgefiltert), so dass ich eine zusätzliche Bereinigung vorgenommen habe, indem ich eine Liste mit Stoppwörtern erstellt habe, die für die Neuberechnung der ersten Phase verwendet wurde. Die Stoppwörter, die bei meinen ersten Versuchen durchkamen, hatten in der Regel lange Listen von assoziierten Begriffen mit relativ niedrigen Ratio-Werten, die aber über dem von mir festgelegten Schwellenwert lagen. Bei den meisten handelte es sich um offensichtliche Stoppwörter wie ’sie‘ und ’sein‘ – dies zeigt also, dass diese Technik mit menschlichem Schweiß zu tun hat. Abgesehen davon sind die obigen Cluster vollständig maschinell erzeugt. Beachten Sie, dass die Stoppwörter für beliebige Themenbereiche wiederverwendbar sein sollten, so dass dieser Aufwand auch für das Clustern anderer Dokumentensätze genutzt werden kann.

Nomenphrasen, Termnähe und traditionelle Ansätze des maschinellen Lernens

Zwei der wichtigsten Verbesserungen wurden durch das Hinzufügen eines Proximity-Filters und das Isolieren von Substantivphrasen oder Autophrasen erreicht – Sequenzen von zwei oder mehr Token, die eine Sache bedeuten. In dem Datensatz, den ich für diese Arbeit verwendet habe (Lucidworks-Blogs), sind Wörter wie ‚Suche‘, ‚Abfrage‘, ‚Daten‘ und ‚Solr‘ allgegenwärtig. Für sich genommen können sie viele Kontexte haben, aber ein ‚Query Parser‘ ist etwas ganz anderes als ein ‚Query Log‘, ‚Query Analytics‘ oder eine ‚Query Request‘. Die Formulierung ‚kritisches Problem‘ bedeutet etwas ganz anderes als ‚kein Problem‘. Genauso ist ‚Datenwissenschaft‘ nicht dasselbe wie ein ‚Datenmodell‘, ein ‚Datenzentrum‘ oder sogar ein ‚Datenwissenschaftler‘. Eine ‚Solr-Sammlung‘ ist etwas anderes als eine ‚Solr-Abfrage‘, ein ‚Solr-Kern‘, ein ‚Solr-Cluster‘ und so weiter. Im Übrigen ist eine ‚Solr-Sammlung‘ nicht dasselbe wie eine ‚Garbage Collection‘. Mit anderen Worten: Wenn es um die Semantik geht, sind Ausdrücke wichtig – und zwar sehr viel. Das Hinzufügen dieser Autophrasen führte zu einer erheblichen Verbesserung der Clusterqualität, sowohl durch das Hinzufügen präziserer Begriffe als auch durch die Verringerung der Häufigkeit mehrdeutiger Einzelbegriffe, die von den Substantivphrasen absorbiert wurden. Eine gute Synonymliste kann ebenfalls zur Qualität des Clusters beitragen. Indem sie eine Reihe von synonymen Begriffen sozusagen unter einem Dach sammeln, leisten Synonyme zweierlei für uns. Erstens können sie die Prävalenz eines Schlüsselworts oder einer Phrase erhöhen, indem sie seine Häufigkeit so weit steigern, dass es durch die Addition der Beiträge seiner synonymen Alternativen signifikant wird. Zweitens können Synonyme bei Rauschwörtern die Häufigkeit der bevorzugten Variante so weit erhöhen, dass diese aus dem Bild verschwindet. Der Nettoeffekt ist eine allgemeine Verbesserung des Signal-Rausch-Verhältnisses. Die gleichen Best Practices, die für Suchanwendungen gelten, gelten also auch für die Textanalyse (dies ist übrigens eine wichtige Erkenntnis). Je mehr semantisches Wissen der Algorithmus im Vorfeld verarbeiten kann, desto besser ist er. Das ist keine Raketenwissenschaft, sondern die harte Realität und etwas, worauf ich in diesem und den letzten Blogbeiträgen immer wieder hingewiesen habe: Bei der Textsuche kommt es auf die Semantik an.

Eine weitere deutliche Qualitätssteigerung wurde durch das Hinzufügen von Proximity-Suchen zum Filtern der Cluster erreicht. Die aktuelle Implementierung verwendet einen Proximity-Radius von 10 Begriffen. Da Dokumente mehr als ein Thema behandeln können, bietet das gemeinsame Auftreten von Schlüsselwörtern innerhalb von Sätzen oder Absätzen einen engeren semantischen Fokus und liefert bessere Statistiken für das Clustering. Im Vergleich zu traditionellen ML-Ansätzen wie LDA ist dies eine Metrik, die nicht mit vollständigen Dokumenten verwendet werden kann. Der Grund dafür ist, dass die Positionsinformationen, die für die Proximity-Analyse benötigt werden, in einer Bag-of-Words-Messung wie TF-IDF, auf die sich die traditionellen Vektoransätze verlassen, verloren gehen. Einmal verlorene Informationen können nicht wiederhergestellt werden. Termvektoren können nur auf Dokumentenebene berechnet werden und haben daher nur eine Granularität auf Dokumentenebene. Das ist an und für sich schon eine große Störquelle, insbesondere bei Dokumenten, die eine Reihe von Themen behandeln. Meiner Meinung nach sind Clustering-Techniken, die auf einer feineren Ebene oder Granularität arbeiten können, schon aus diesem Grund überlegen. Es ist jedoch noch nicht alles verloren. Das Pre-Chunking oder Snippeting von Dokumenten in themenbezogene Snippets oder die einfache Aufteilung des Dokuments in Absätze kann mit Standard-ML-Methoden verwendet werden. Autophrasing kann auch verwendet werden, um die Genauigkeit vektorbasierter ML-Methoden wie LDA und Word2Vec zu verbessern. Alles, was wir tun können, um das Signal-Rausch-Verhältnis zu verbessern, ist von Vorteil, und eine Übereinstimmung zwischen verschiedenen Methoden gibt uns mehr Vertrauen in die Ergebnisse.

Vergleich mit Word2Vec

Die Ausgabe des Algorithmus für maschinelles Lernen, die dem Ergebnis des Algorithmus für das Clustering von Schlüsselwörtern am ähnlichsten ist, ist Word2Vec. Beide erzeugen etwas, das man als „Begriffsassoziationsvektoren“ bezeichnen kann. Es gibt jedoch einige wichtige Unterschiede. Zum einen eignet sich der Keyword-Clustering-Ansatz gut für kleine Dokumentensätze, während Word2Vec in der Regel viel mehr Daten benötigt, um vernünftige Termassoziationsvektoren zu erstellen. Sie gehen auch einen anderen Weg. Das Keyword Clustering erfolgt von oben nach unten. Es beginnt auf der Ebene der Dokumente und des Korpus und arbeitet sich bis zu den einzelnen Schlüsselbegriffen vor, wobei Störwörter herausgefiltert werden. Word2Vec geht dagegen von unten nach oben vor – es betrachtet einzelne Wörter und nahe gelegene Wörter, die statistisch mit ihnen verbunden sind. Es findet Synonyme, passende Begriffe in Substantiv-Nomen-, Adjektiv-Nomen- und Substantiv-Verb-Phrasen. Interessanterweise wird Word2Vec durch die Verwendung von Autophrasen eher zu einem „Thing2Vec“. Bei einzelnen Wörtern, wie z.B. „Netzwerk“, findet Word2Vec Assoziationen wie „Karte“, „Adapter“ und „Verkehr“, aber wenn ich ihm Phrasen wie „Netzwerkkarte“, „Netzwerkadapter“ und „Netzwerkverkehr“ als Eingabe gebe, findet es auch übergeordnete Konzepte wie „Verbindungsfehler“. Es wird Stoppwörter oder seltene Begriffe mit gleicher Affinität verwenden, solange eine statistisch signifikante Assoziation mit dem Hauptbegriff des Vektors besteht. Der Dokumentenkorpus ist nur insofern von Bedeutung, als er die Isolierung von Wörtern ermöglicht, die in einem breiteren Kontext andere Bedeutungen haben könnten, und genügend Daten liefert, um stabile Korrelationen zu erhalten.

Der berühmte Wortvektor-Mathematik-Trick, den Word2Vec mit „Mann ist für Frau wie König für Königin“ durchführt, wird zweifellos beschleunigt, wenn man Stoppwörter drin lässt, insbesondere geschlechtsspezifische Subjekt-, Objekt- und Possessivpronomen wie „er, er, sein“ und „sie, sie, ihre“. Mit genügend Daten sollte es schließlich lernen, diesen Pivot ohne diese Pronomen durchzuführen, indem es Namen, die oft mit dem Königshaus assoziiert werden, wie „Elizabeth“, „Victoria“, „Henry“ oder „George“ als Assoziationsbegriffe verwendet, aber es sollte schneller konvergieren, wenn wir die Stoppwörter drin lassen. Stoppwörter sind hier jedoch ein zweischneidiges Schwert – mehr dazu finden Sie in Lasya Marlas kürzlich erschienenem Lucidworks-Blogbeitrag über Word2Vec. Im Gegensatz dazu versucht die Schlüsselwort-Clustering-Technik, Störwörter zu vermeiden, indem sie eine Vorauswahl anhand der Dokumenthäufigkeit, mit Hilfe von Stoppwortlisten und durch ihre eigene Filterlogik trifft.

Bemerkenswert ist, dass beide automatisch Termassoziationsvektoren erzeugen, die „Sinn machen“. Sie unterscheiden sich im Detail und das ist an sich schon nützlich, denn es ist möglich, sie zu kombinieren, um eine bessere Abdeckung der Konzepte zu erhalten. Ich werde Ihnen die Word2Vec-Ausgabe für die Lucidworks-Blogs nicht zeigen, denn damit würde ich ihr keinen Dienst erweisen – es gibt in diesem Datensatz einfach nicht genug Daten, mit denen Word2Vec arbeiten könnte. Ich habe diesen Vergleich jedoch mit viel größeren proprietären Kundendaten durchgeführt, die ich hier nicht zeigen kann. Ich werde diesen Vergleich in einem zukünftigen Beitrag anstellen, in dem ich einige öffentliche Daten mit mehr Gewicht wie Wikipedia oder den Enron-E-Mail-Datensatz mit beiden Techniken analysiere.

Für kleine Datensätze ist der Ansatz des Keyword-Clustering also hervorragend geeignet. Einer seiner Nachteile ist die Skalierbarkeit – da es sich um einen N-Quadrat-Algorithmus handelt, der viele Zugriffe auf Solr erfordert, wird er bei großen Datensätzen sehr langsam. Da er jedoch nicht viele Daten benötigt, um gute Ergebnisse zu erzielen, ist das zufällige Ziehen von Stichproben aus einer großen Sammlung eine effektive Technik, wenn es um größere Dokumentensätze geht. Dies funktioniert gut, weil die Assoziationsgewichte auf einem Verhältnis basieren. Solange Ihre Technik des Downsamplings gleichmäßig ist, können daher mit einem Bruchteil der Daten die gleichen oder sehr ähnliche Cluster erzeugt werden. Ich habe dies an einem großen Datensatz überprüft – die Cluster für 10 % der Daten waren fast identisch mit den Clustern für 100 %, aber die Berechnung hat nur einen Bruchteil der Zeit in Anspruch genommen. Sie können das Programm auch einfach in Ruhe gegen eine Backup-Solr-Instanz laufen lassen, denn Vokabular-Assoziationen ändern sich nicht annähernd so schnell wie Inhalte – bei den meisten Assoziationen sind die Änderungsraten sogar eisig. Nur wenn neues Vokabular oder neue Verwendungen für altes Vokabular (z.B. ’spark‘) eingeführt werden, müssen wir die Vektoren aktualisieren. Langsam ist also vielleicht gar nicht so schlecht, solange wir am Ende die Qualität sicherstellen können. Nichtsdestotrotz ist es konkurrenzfähig mit Word2Vec – bei einem proprietären Datensatz von etwa 0,5 Millionen Dokumenten waren beide Techniken in etwa 5-10 Stunden fertig.

Wie geht es jetzt weiter?

Der nächste Schritt besteht darin, diese Schlüsselwort-Cluster zu verwenden, um das Clustering / die Klassifizierung von Dokumenten zu verbessern. Ich werde das in Teil II dieser Serie behandeln. Der Schlüssel zu diesem Ansatz ist die Berechnung eines Merkmalsvektors, der den kumulativen Keyword-Score für die 20 wichtigsten Keywords eines Dokuments enthält, und die anschließende Verwendung des standardmäßigen K-Means-Clustering, um die schwere Arbeit zu erledigen. Ich erhalte einige sehr interessante Ergebnisse, also bleiben Sie dran. (Bis dahin werde ich auch den Github-Code für die Serie haben).

Die Schlüsselwort-Cluster sind auch in anderer Hinsicht nützlich – die Erweiterung von Suchanfragen fällt einem sofort ein. Die assoziierten Begriffe in den einzelnen Clustern sind nicht per se Synonyme (auch wenn einige von ihnen es sein können) und können zur Abfragezeit leicht nach assoziierten Begriffen für einen bestimmten Abfragebegriff durchsucht werden, indem sie in einer Solr „Sidecar“-Sammlung gespeichert werden. Sie verfügen sogar über integrierte Boost-Faktoren! Kinderleicht! An dieser Stelle sind die einzelnen Schlüsselwort-Cluster jedoch nicht umfassend. Sie bilden ein lose gekoppeltes Netzwerk von miteinander verknüpften Clustern. Die Begriffe ’saml‘, ’sso‘ und ‚authentication‘ befinden sich beispielsweise nicht im selben Cluster, aber sie sind nur ein oder zwei ‚Hops‘ voneinander entfernt. Das Clustering von Dokumenten hilft bei der Zusammenführung dieser Cluster und bietet einen besseren Rahmen für die Klassifizierung oder die Erweiterung von Abfragen, wie ich in meinem nächsten Beitrag zeigen werde. Die Cluster können auch für eine bessere „More Like This“-Implementierung oder eine Taxonomie verwandter Begriffe verwendet werden, die ähnlich wie eine facettierte Navigation genutzt werden kann. Im Moment basieren diese Techniken auf TF-IDF, das, wie die Arbeit zum Clustering von Dokumenten zeigt, ein viel geringeres Signal-Rausch-Verhältnis aufweist als die Methode zum Clustering von Schlüsselwörtern. Wie ich bereits erwähnt habe, sollten Sie den Müll beseitigen , bevor er in die ML-Mühle kommt.

Ich sollte auch erwähnen, dass die oben gezeigten Cluster als „Modelle“ betrachtet werden können, genauso wie ein K-Means-Cluster oder ein logistisches Regressionsmodell. Der Hauptunterschied besteht darin, dass die Schlüsselwort-Cluster-Modelle textuell sind und daher von Menschen bearbeitet werden können. Dies bietet eine neue Möglichkeit, das 80-20-Problem zu lösen. Die von mir beschriebene Technik ist zwar völlig „unbeaufsichtigt“ oder automatisch, aber ich habe an verschiedenen Stellen des Prozesses, von der Erstellung von Listen mit Autophrasen, Stoppwörtern und Synonymen bis hin zur Bearbeitung der endgültigen Ergebnisse, Fachwissen „eingebacken“. Das bedeutet, dass Sie, wenn Ihre ersten Versuche nicht so beeindruckend sind, diese schrittweise verbessern können, und zwar auf der Grundlage von Fachwissen und nicht auf der Basis von Zufallsergebnissen (innerhalb der ML Black Box). Hybride Methoden wie diese sind die einzige Möglichkeit, maschinelles Lernen mit menschlichem Wissen zu verbinden, um über das hinauszugehen, was eine der beiden Methoden allein leisten kann.

You Might Also Like

Analytics Studio: Verwandeln Sie Ihre E-Commerce-Daten in verwertbare Einblicke

Entdecken Sie, wie Analytics Studio Teams in die Lage versetzt, datengestützte Entscheidungen...

Read More

Commerce Studio: Personalisieren Sie Ihr E-Commerce-Erlebnis in Echtzeit

Erfahren Sie, wie Commerce Studio maßgeschneiderte Einkaufserlebnisse liefert, die zu mehr Umsatz...

Read More

Urlaubsvorbereitung: Wie Sie sich auf die kritischste Zeit des Jahres vorbereiten

Nach Monaten der Ungewissheit, Achterbahnverkäufen und seismischen Verschiebungen der geschäftlichen Prioritäten ist...

Read More

Quick Links

Diese Site ist auf wpml.org als Entwicklungssite registriert. Wechseln Sie zu einer Produktionssite mit dem Schlüssel remove this banner.