Linguistic Epic Fail oder Wie man das gesamte Wörterbuch der russischen Sprache in Power BI stopft

Bild

Als ich das Problem der Sprachanalyse in Power BI löste und gleichzeitig nach Beispielen für meinen vorherigen Artikel suchte, erinnerte ich mich an das Problem, das ich vor einigen Jahren in Excel zu lösen versuchte: Es war notwendig, ein russisches Sprachwörterbuch im Analysesystem für die Sprachanalyse einer großen Anzahl von Abfragen zu implementieren in natürlicher Sprache. Und es war wünschenswert, Standard-Office-Tools zu verwenden. Die überwiegende Mehrheit der Menschen würde diese Aufgabe sofort in Excel übernehmen, und ich bin einmal den gleichen Weg gegangen. Ich habe das offene Korpus der russischen Sprache ( http://opencorpora.org/ ) als Wörterbuch verwendet.

Aber die Enttäuschung erwartete mich - das Wörterbuch bestand aus 300.000 Wortformen, mehr als 5 Millionen Einträgen, und für Excel ist es im Prinzip eine unmögliche Menge. Selbst wenn Sie „nur“ 1 Million Zeilen hineinschieben, kann nur eine sehr geduldige Person, die es nie eilig hat, Manipulationen mit ihnen oder, Gott bewahre, Berechnungen durchführen. Diesmal habe ich mich jedoch entschlossen, ein geeigneteres Tool für die Aufgabe festzulegen - Power BI.

Was ist Power BI?


Ich finde dieses Produkt von der Fachwelt weitgehend unterschätzt. Power BI ist eine Reihe von Geschäftsanalysetools, die für Benutzer erstellt wurden, die Excel auf einer etwas höheren Ebene als "Teilen des Betrags in Spalten" besitzen. Wenn eine Person in der Lage ist, Formeln mittlerer Komplexität in Excel zu schreiben, wird sie Power BI an einigen Abenden beherrschen.

Dies ist kein einzelnes Produkt mit einer Art interner Programmierlogik, sondern ein System aus drei Komponenten:

Bild

  • Power Query Dies ist eine ETL, in der Abfragen mit ihrer eigenen vollwertigen funktionalen Programmiersprache geschrieben werden müssen - M. Fairerweise sollte beachtet werden, dass ein gewöhnlicher Benutzer höchstwahrscheinlich nicht darauf programmieren muss: Die meisten Funktionen sind direkt über das Menü oder den Assistenten in der Komponentenschnittstelle verfügbar. Die M-Sprache unterscheidet sich vollständig von der DAX-Abfragesprache (PowerPivot). Microsoft hat sie jedoch zusammengebracht. Dies ist aus entwicklungspolitischer Sicht sinnvoll: ETL ist für den Empfang und die anfängliche Sättigung von Daten (nicht schnell) und DAX für Berechnungen vorgesehen, mit denen wir diese Daten (schnell) visualisieren können. Das heißt, DAX ist für das Front-End und Power Query für das Back-End für das Extrahieren und Formatieren von Daten.
  • PowerPivot . Ein In-Memory-Verarbeitungsmodul, das auf der xVelocity-Engine basiert. Verwendet die DAX-Abfragesprache, die der Excel-Formelsprache sehr ähnlich ist.
  • Visualisierungskomponente . Dies ist sehr nützlich für Anwendungen in Systemen, in denen Sie Daten visualisieren müssen: auf der Website eines Unternehmens oder auf einem Portal für technischen Support (z. B. einer Anforderungswolke) oder in einer internen Unternehmensressource. Es gibt Tools, die dies ohne Power BI tun können, aber viele von ihnen helfen nicht, wenn die Anzahl der Datensätze in Millionenhöhe liegt und die Daten irgendwie aggregiert werden müssen. Und mit anderen Tools dieser Art konkurriert Power BI aufgrund seiner Einfachheit und kostengünstigen In-Memory-Verarbeitung. Es ist klar, dass ein anderer Ansatz erforderlich sein wird, wenn es sich um Terabyte an Daten handelt. In solchen Fällen hat Microsoft bereits etwas zu bieten, dies ist jedoch ein Thema für einen separaten Artikel.

Die Lernkurve in der ersten Phase nimmt sehr stark zu: Wenn Sie gut mit Excel umgehen können, stehen Ihnen nach einer kurzen Studie 80% der Power BI-Funktionen zur Verfügung. Dies ist ein sehr leistungsfähiges Werkzeug, das recht einfach zu bedienen ist, aber - bis zu einem gewissen Punkt. Um es voll ausnutzen zu können, benötigen Sie bereits Erfahrung und fundierte Kenntnisse der M- und DAX-Sprachen.

Wofür ist Power BI Desktop?


Für wen kann es nützlich sein? Zuallererst alle Geschäftsbenutzer, die ziemlich große Datenmengen verarbeiten und analysieren müssen, wenn Excel nicht mehr in der Lage ist, das Limit zu bewältigen oder zu pusten. Ich betone: Power BI Desktop wurde für eine Vielzahl von Benutzern entwickelt, die eine Vielzahl von Aufgaben lösen . In meinem Fall ging es beispielsweise darum, 5 Millionen Texteinträge für die anschließende Bestimmung der Häufigkeit von Schlüsselwörtern zu normalisieren.

Dies ist bei der Bearbeitung von Fragebögen, Suchmaschinenanfragen, Anzeigen, Diktaten / Aufsätzen, statistischen Arrays usw. oder beim Lösen von Kreuzworträtseln gefragt.

Ein weiterer Fall und eine weitere Implementierungsoption werden in einem Artikel über den „Erkenner“ von Dmitry Tumaikin behandelt. In klassischem Excel implementiert, aber mit Makros ...

Ein weiteres beliebtes Szenario für diese Anwendung von Power BI ist die Berechnung des Indikatorverhältnisses für die aktuelle und die vorherige Periode. Zum Beispiel haben wir voraggregierte Umsatzdaten und müssen diese nach Tagen mit dem vorherigen Quartal, Jahr oder einem ähnlichen Zeitraum vergleichen. Und ich möchte / muss das Ergebnis des Vergleichs in Form von Werten in die nächste Spalte einfügen, nicht in Form von Formeln. Es scheint, dass für Excel die einfachste Aufgabe darin besteht, eine einfache Vergleichsformel zu schreiben und sie über alle Zellen in der Spalte zu strecken. Aber nicht, wenn Sie mehrere Millionen Zeilen in der Tabelle haben. In DAX selbst ist diese Aufgabe noch einfacher als in Excel, aber auch nur mit Hilfe von Nachberechnungen.

Es können viele andere praktische Szenarien für die Verwendung von Power BI angegeben werden, aber Sie haben, glaube ich, das Wesentliche bereits verstanden. Natürlich sind all diese Aufgaben für einen Programmierer, der beispielsweise Python oder R besitzt, kein Problem, aber solche Spezialisten sind a priori um Größenordnungen kleiner als Excel-Experten. Excel bietet nur begrenzte Möglichkeiten, nicht jedoch Power BI, das die DAX-Formelsprache verwendet, die der Excel-Formelsprache sehr ähnlich ist und in der Lage ist, Millionen und Dutzende Millionen Datensätze im laufenden Betrieb zu verarbeiten. Und dann müssen Sie den RAM erhöhen (mindestens bis zu 100, mindestens bis zu 300 GB).

Wir helfen bei technischen Prozessanfragen


Aber zurück zu meiner Aufgabe. Es musste festgelegt werden, wie die Nulllinie des technischen Supports das Thema Benutzeranfragen automatisch bewertet. Zunächst habe ich beschlossen, bestimmte Wortformen zu isolieren und die wichtigsten Themen, die Benutzer am häufigsten ansprechen, anhand der Häufigkeit ihres Auftretens in Nachrichten zu bestimmen.

Das Quellwörterbuch ist eine einfache Textdatei, die eine regelmäßige Struktur hat und folgendermaßen aussieht:

Bild

Für statistische Zwecke war es notwendig, die Anfangsform für jede Wortform zu bestimmen: für Substantive - eine einzelne Zahl des Nominativs, für Verben - eine unbestimmte Form usw. Für Programmierer war diese Aufgabe einfacher als einfach: Suchen Sie für jedes Wort in der linken Spalte die Entsprechung zu dem Formular, das unmittelbar auf die Nummer dieses Wortes im Wörterbuch folgt.

Dies ist nur der durchschnittliche Geschäftsbenutzer, der kein Python, keine speziellen Tools und keine Entwicklungsfähigkeiten besitzt und dieses Problem nicht lösen kann, ohne Self-Analytics BI oder ähnliche benutzerfreundliche Tools zu verwenden. Wenn die Daten für ihre internen Anforderungen verarbeitet werden müssen oder keine vertraulichen Informationen vorhanden sind, die geschützt werden müssen, ist Power BI in diesem Fall ebenfalls kostenlos *.

Versteckter Text
*) Dies bezieht sich auf die Power BI Desktop-Version und die Power BI Services-Version für den persönlichen Gebrauch zum kostenlosen Preis.

Um die Daten zu analysieren, musste ich in Power Query in einer Tabelle mit 5 Millionen Datensätzen eine neue Spalte hinzufügen, die um eine Position verschoben ist. Zuerst habe ich versucht, den klassischen Ansatz mit Power Query anzuwenden, der im Power BI-Community-Portal von Marcel Beug, dem Autor des ursprünglichen Power Query-Online-Referenzhandbuchs (ebenfalls in Power Query geschrieben) beschrieben wird. In dem Artikel werden zwei verschiedene Algorithmen vorgeschlagen: Einer ist von den Ideen von Matt Elington, einem berühmten Guru und Power BI-Trainer, inspiriert, und der zweite Ansatz ist die ursprüngliche Idee von Marcel selbst, der eine zusätzliche Funktion verwendet. Trotz der Tatsache, dass ich zur Steigerung der Produktivität die Quelldaten vollständig zwischengespeichert habe, benötigten beide Ansätze einen gigantischen Zeitaufwand - sie waren bereits am achten Tag vergangen und der Prozess war noch nicht abgeschlossen. Die Größe der Quelldatei betrug 270 MB, und die aktuelle Größe der verarbeiteten Daten lag nahe bei 17 TB. Ich bin sicher, dass nur wenige Power BI-Benutzer solche Nummern im Fenster zum Laden von Daten aus einer Dateiquelle gesehen haben.

Bild

Warum das Volumen so geschwollen ist, ist nicht klar; Selbst das kartesische Produkt aller Aufzeichnungen ist viel weniger als 16 TB. Hier war der interne Optimierer eindeutig nicht auf dem neuesten Stand. In DAX-Studio können beispielsweise keine Power Query-Abfragen verfolgt werden, sondern nur DAX. Vielleicht teilt jemand seine Erfahrungen mit PQ Troubleshipping?

Ohne auf den Abschluss des ersten Prozesses zu warten, entschied ich mich für einen anderen Computer, um das Problem mithilfe von DAX durch eine selbst geschriebene Abfrage zu lösen. Die Anfrage wurde erfüllt ... in ungefähr 180 Sekunden, und der Speicherverbrauch stieg leicht an.

Bild

Quellcode für eine DAX-Anfrage:

KeyWord =
CALCULATE(
TOPN(1;
CALCULATETABLE(
VALUES(ShiftedList[Word])
;ALLEXCEPT(ShiftedList;ShiftedList[Word Nr])
)
)//TOPN
)//CALCULATE



Das heißt, für jede Zeile in der neuen Spalte [KeyWord] wird der allererste Wert der Spalte [Word] durchsucht, der alle Varianten von Wortformen mit derselben grundlegenden Wortformnummer enthält (Spalte [Word Nr]). Solange das Format der Quelldatei unverändert bleibt, sollte die Anforderung bei allen nachfolgenden Versionen des Wörterbuchs fehlerfrei erfüllt werden.

Der Abfragecode in Power Query, der die Quelltabelle im erforderlichen Format bildet, wurde „automatisch“ generiert und in weniger als einer Minute abgeschlossen:

Bild

Nachdem in drei Minuten eine Spalte mit Schlüsselwörtern in der PowerPivot-Benutzeroberfläche erstellt wurde, dauert die Suche nach Wortformen in der Power BI-Benutzeroberfläche nicht länger als 4 Sekunden. Darüber hinaus kann eine Kontrollsuche nach denselben Daten in Ihrem bevorzugten Notepad ++ x64 20 Sekunden oder länger dauern. Dies ist jedoch kein Stein im Garten des KKW - es ist schwieriger (und länger), das gesamte Datenfeld zu durchsuchen, als nach bereits markierten Daten.

Übrigens wurde die obige DAX-Anforderung nicht zum ersten Mal geboren, und die Zwischenoptionen verbrauchten den gesamten verfügbaren Speicher, arbeiteten lange und endeten entweder mit einem Datenfehler oder einem irrelevanten Ergebnis.

Bild

Infolgedessen wurde die Größe der gespeicherten PBIX-Datei 60% (112 MB) kleiner als das ursprüngliche Textwörterbuch, jedoch mehr als viermal so groß wie das ZIP-Archiv mit demselben Wörterbuch.

Zurück zum Kampf zwischen Power Query und DAX: Der Unterschied in der Dauer des gleichen Vorgangs in verschiedenen Komponenten lässt darauf schließen, dass Power BI keine Brechstange ist, gegen die es keinen Empfang gibt. Er hat seinen eigenen Charakter und Merkmale der Anwendung, die bei seiner Arbeit berücksichtigt werden müssen. Eigentlich wie jedes Werkzeug. Und die Empfehlungen selbst anerkannter Gurus sollten mit Vorsicht behandelt werden.

Es scheint, dass der Nobelpreisträger Richard Smalley immer sagte und Clarks erstes Gesetz umschrieb: „Wenn Experten sagen, dass etwas machbar ist, dann haben sie wahrscheinlich Recht (sie wissen nur nicht wann). Wenn sie sagen, dass dies unmöglich ist, dann irren sie sich höchstwahrscheinlich. "

Eigenschaften der Prüfmaschine:
Prozessor: Intel Core i7 4770 bei 3,4 GHz (4 Kerne)
RAM: 16 GB
Betriebssystem: Windows 7 Enterprise SP1 x64

Ein vorgefertigtes Wörterbuch im Power BI-Format kann hier heruntergeladen werden .

Und hier steht eine modifizierte Online-Version des Wörterbuchs zur Verfügung. Sie können damit Kreuzworträtsel nach Belieben lösen :)

Bild

... Übrigens wurde die Aufgabe vor einigen Jahren dennoch in Excel gelöst, wenn auch nicht zu 100%. Nur für die Analyse der Texte wurde nicht das gesamte Korpus der russischen Sprache verwendet, sondern das Frequenzwörterbuch. Für die grundlegende Textbereinigung ist jede der hier verfügbaren Top100- Frequenzlisten für mehrere zehn Kilobyte gut geeignet.

Yuri Kolmakov, Experte, Abteilung für Konsolidierungs- und Datenvisualisierungssysteme, Jet Infosystems ( McCow )

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


All Articles