Buch "Angewandte Textdatenanalyse in Python"

Bild Die Textanalysetechnologie ändert sich unter dem Einfluss des maschinellen Lernens rasant. Neuronale Netze aus der theoretischen wissenschaftlichen Forschung sind in die Realität übergegangen, und die Textanalyse wird aktiv in Softwarelösungen integriert. Neuronale Netze sind in der Lage, die komplexesten Aufgaben der Verarbeitung natürlicher Sprache zu lösen. Niemand ist überrascht von maschineller Übersetzung, „Konversation“ mit einem Roboter in einem Online-Shop, Umformulierung, Beantwortung von Fragen und Aufrechterhaltung eines Dialogs. Warum wollen Siri, Alexa und Alice uns nicht verstehen, Google findet nicht, wonach wir suchen, und Maschinenübersetzer amüsieren uns mit Beispielen für „Übersetzungsschwierigkeiten“ vom Chinesischen ins Albanische? Die Antwort liegt im Detail - in Algorithmen, die theoretisch korrekt funktionieren, aber in der Praxis schwer zu implementieren sind. Erfahren Sie, wie Sie mithilfe von Techniken des maschinellen Lernens Text in realen Aufgaben mithilfe von Python-Funktionen und -Bibliotheken analysieren. Von der Modellsuche bis zur Datenvorverarbeitung gehen Sie zu den Methoden zum Klassifizieren und Clustering von Texten über, fahren dann mit der visuellen Interpretation und der Diagrammanalyse fort und lernen, nachdem Sie sich mit Skalierungstechniken vertraut gemacht haben, Deep Learning zum Analysieren von Text zu verwenden.


Was ist in diesem Buch beschrieben?


In diesem Buch wird die Verwendung von Methoden des maschinellen Lernens zum Analysieren von Text mithilfe der gerade aufgelisteten Python-Bibliotheken beschrieben. Der angewandte Charakter des Buches legt nahe, dass wir uns nicht auf akademische Linguistik oder statistische Modelle konzentrieren, sondern auf den effektiven Einsatz von textgeschulten Modellen innerhalb der Anwendung.

Unser vorgeschlagenes Modell der Textanalyse steht in direktem Zusammenhang mit dem Prozess des maschinellen Lernens - der Suche nach einem Modell, das aus Merkmalen, einem Algorithmus und Hyperparametern besteht und die besten Ergebnisse für Trainingsdaten liefert, um unbekannte Daten auszuwerten. Dieser Prozess beginnt mit der Erstellung eines Trainingsdatensatzes, der im Bereich der Textanalyse als Korpus bezeichnet wird. Anschließend untersuchen wir die Methoden zum Extrahieren von Attributen und zur Vorverarbeitung, um den Text in Form von numerischen Daten darzustellen, die für Methoden des maschinellen Lernens verständlich sind. Nachdem wir uns mit einigen Grundlagen vertraut gemacht haben, werden wir uns mit den Methoden der Klassifizierung und Gruppierung von Texten befassen, deren Geschichte die ersten Kapitel des Buches vervollständigt.

In den folgenden Kapiteln liegt der Schwerpunkt auf der Erweiterung von Modellen mit umfangreicheren Attributen und der Erstellung von Textanalyseanwendungen. Zuerst werden wir untersuchen, wie es möglich ist, einen Kontext in Form von Zeichen darzustellen und zu implementieren, und dann werden wir zu einer visuellen Interpretation übergehen, um den Prozess der Modellauswahl zu steuern. Anschließend werden wir untersuchen, wie komplexe Beziehungen, die aus Text extrahiert wurden, mithilfe von Diagrammanalysetechniken analysiert werden. Danach wenden wir uns interaktiven Agenten zu und vertiefen unser Verständnis der syntaktischen und semantischen Analyse des Textes. Abschließend wird das Buch eine praktische Diskussion der Skalierungstechniken für die Textanalyse in Multiprozessorsystemen mit Spark präsentieren, und schließlich werden wir die nächste Stufe der Textanalyse betrachten: Deep Learning.

Für wen ist dieses Buch?


Dieses Buch richtet sich an Python-Programmierer, die an der Verwendung von Methoden zur Verarbeitung natürlicher Sprache und zum maschinellen Lernen in ihren Softwareprodukten interessiert sind. Wir gehen nicht davon aus, dass unsere Leser über spezielle akademische oder mathematische Kenntnisse verfügen, sondern konzentrieren sich eher auf Werkzeuge und Techniken als auf langwierige Erklärungen. In diesem Buch wird zunächst die Analyse von Texten auf Englisch behandelt, sodass die Leser mindestens Grundkenntnisse über grammatikalische Entitäten wie Substantive, Verben, Adverbien und Adjektive sowie deren Beziehung benötigen. Leser ohne Erfahrung in maschinellem Lernen und Linguistik, aber mit Programmierkenntnissen in Python, werden sich nicht verloren fühlen, wenn sie die Konzepte lernen, die wir vorstellen werden.

Auszug. Extrahieren Sie Grafiken aus dem Text


Das Extrahieren eines Diagramms aus Text ist eine schwierige Aufgabe. Die Lösung hängt normalerweise vom Themenbereich ab, und im Allgemeinen wird die Suche nach strukturierten Elementen in unstrukturierten oder halbstrukturierten Daten durch kontextsensitive analytische Fragen bestimmt.

Wir schlagen vor, diese Aufgabe in kleinere Schritte zu unterteilen, indem wir einen einfachen Graphanalyseprozess organisieren, wie in Abb. 9.3.

Bild

In diesem Prozess bestimmen wir zunächst die Entitäten und Beziehungen zwischen ihnen basierend auf der Beschreibung der Aufgabe. Auf der Grundlage dieses Schemas bestimmen wir außerdem die Methode zur Auswahl eines Diagramms aus dem Korpus unter Verwendung von Metadaten, Dokumenten im Korpus und Phrasen oder Token in Dokumenten, um Daten und die Beziehungen zwischen ihnen zu extrahieren. Die Technik zur Auswahl eines Diagramms ist ein zyklischer Prozess, der auf den Körper angewendet, ein Diagramm generiert und dieses Diagramm zur weiteren analytischen Verarbeitung auf der Festplatte oder im Speicher gespeichert werden kann.

In der Analysephase werden Berechnungen für das extrahierte Diagramm durchgeführt, z. B. Clustering, Strukturanalyse, Filterung oder Bewertung, und es wird ein neues Diagramm erstellt, das in Anwendungen verwendet wird. Basierend auf den Ergebnissen der Analysephase können wir zum Beginn des Zyklus zurückkehren, die Methodik und das Schema verfeinern, Gruppen von Knoten oder Kanten extrahieren oder reduzieren, um genauere Ergebnisse zu erzielen.

Erstellen eines sozialen Diagramms


Betrachten Sie unsere zahlreichen Nachrichtenartikel und die Aufgabe, die Beziehungen zwischen verschiedenen Entitäten im Text zu modellieren. Wenn wir das Problem der unterschiedlichen Berichterstattung zwischen verschiedenen Nachrichtenagenturen berücksichtigen, können Sie aus den Elementen, die die Namen von Veröffentlichungen, Namen von Autoren und Informationsquellen darstellen, ein Diagramm erstellen. Und wenn das Ziel darin besteht, in vielen Artikeln zusätzlich zu demografischen Details Verweise auf eine Entität zu kombinieren, können unsere Netzwerke die Form der Berufung (respektvoll und andere) festlegen. Für uns interessante Stellen können sich in der Struktur der Dokumente selbst befinden oder direkt im Text enthalten sein.

Nehmen wir an, unser Ziel ist es, in unseren Dokumenten Menschen, Orte und alles andere herauszufinden, was miteinander zu tun hat. Mit anderen Worten, wir müssen ein soziales Netzwerk aufbauen, indem wir eine Reihe von Transformationen durchführen, wie in Abb. 2 gezeigt. 9.4. Wir beginnen mit der Erstellung des Diagramms mithilfe der in Kapitel 7 erstellten EntityExtractor-Klasse. Anschließend fügen wir die Transformatoren hinzu, von denen einer nach Paaren verwandter Entitäten sucht, und der zweite konvertiert diese Paare in ein Diagramm.

Bild

Suchen Sie nach Entitätspaaren

Unser nächster Schritt ist das Erstellen der EntityPairs-Klasse, die Dokumente in Form von Entitätslisten empfängt (erstellt von der EntityExtractor-Klasse aus Kapitel 7). Diese Klasse sollte als Konverter in der Pipeline-Pipeline von Scikit-Learn fungieren und daher die Klassen BaseEstimator und TransformerMixin erben, wie in Kapitel 4 beschrieben. Es wird davon ausgegangen, dass die Entitäten im selben Dokument unbedingt miteinander verbunden sind. Daher fügen wir die Pair-Methode mithilfe der Funktion itertools hinzu .permutationen zum Erstellen aller möglichen Entitätspaare in einem Dokument. Unsere Transformationsmethode ruft Paare für jedes Dokument im Hauptteil auf:

import itertools from sklearn.base import BaseEstimator, TransformerMixin class EntityPairs(BaseEstimator, TransformerMixin): def __init__(self): super(EntityPairs, self).__init__() def pairs(self, document): return list(itertools.permutations(set(document), 2)) def fit(self, documents, labels = None): return self def transform(self, documents): return [self.pairs(document) for document in documents] 

Jetzt können Sie Entitäten nacheinander aus Dokumenten extrahieren und koppeln. Wir können jedoch noch keine häufig vorkommenden Entitätspaare von nur einmal vorkommenden Paaren unterscheiden. Wir müssen irgendwie das Gewicht der Beziehung zwischen den Entitäten in jedem Paar kodieren, worauf wir im nächsten Abschnitt eingehen werden.

Eigenschaftsdiagramme


Das mathematische Modell des Graphen definiert nur Sätze von Knoten und Kanten und kann als Adjazenzmatrix dargestellt werden, die in einer Vielzahl von Berechnungen verwendet werden kann. Es wird jedoch kein Mechanismus zum Modellieren von Stärke oder Arten von Beziehungen unterstützt. Werden zwei Entitäten nur in einem Dokument oder in vielen angezeigt? Treffen sie sich in Artikeln eines bestimmten Genres? Um diese Überlegungen zu unterstützen, benötigen wir eine Möglichkeit, sinnvolle Eigenschaften in den Knoten und Kanten des Diagramms zu speichern.

Mit dem Eigenschaftsdiagrammmodell können Sie weitere Informationen in das Diagramm einbetten und so unsere Funktionen erweitern. Im Eigenschaftsdiagramm sind Knoten Objekte mit eingehenden und ausgehenden Kanten, die in der Regel ein Typfeld enthalten, das einer Tabelle in einer relationalen Datenbank ähnelt. Rippen sind Objekte, die den Start- und Endpunkt definieren. Diese Objekte enthalten normalerweise ein Beschriftungsfeld, das den Verbindungstyp angibt, und ein Gewichtsfeld, das die Stärke der Verbindung definiert. Bei der Verwendung von Diagrammen für die Textanalyse verwenden wir häufig Substantive als Knoten und Verben als Kanten. Nachdem Sie mit dem Modellierungsschritt fortgefahren sind, können Sie die Knotentypen, Verknüpfungsbezeichnungen und die vorgeschlagene Diagrammstruktur beschreiben.

Über Autoren


Benjamin Bengfort ist ein in Washington, DC, ansässiger Spezialist für Datenwissenschaft, der die Politik (eine für den District of Columbia übliche Sache) völlig ignoriert und Technologie bevorzugt. Derzeit arbeitet er an seiner Doktorarbeit an der University of Maryland, wo er maschinelles Lernen und verteiltes Rechnen studiert. In seinem Labor gibt es Roboter (obwohl dies nicht sein Lieblingsgebiet ist), und zu seinem Leidwesen statten seine Assistenten diese Roboter ständig mit Messern und Werkzeugen aus, wahrscheinlich mit dem Ziel, einen kulinarischen Wettbewerb zu gewinnen. Benjamin beobachtet einen Roboter, der versucht, eine Tomate zu hacken, und bevorzugt es, die Küche selbst zu hosten, in der er französische und hawaiianische Gerichte sowie Grillgerichte und Grillgerichte aller Art kocht. Benjamin ist ein professioneller Ausbildungsprogrammierer und Berufungsdatenforscher. Er schreibt häufig Artikel zu einer Vielzahl von Themen, von der Verarbeitung natürlicher Sprache über die Datenanalyse in Python bis hin zur Verwendung von Hadoop und Spark in der Analytik.

Dr. Rebecca Bilbro - Spezialistin für Datenwissenschaft, Python-Programmiererin, Lehrerin, Dozentin und Autorin von Artikeln; lebt in Washington, DC. Es ist spezialisiert auf die visuelle Bewertung von Ergebnissen des maschinellen Lernens: von der Merkmalsanalyse über die Modellauswahl bis hin zu Hyperparametereinstellungen. Er forscht auf dem Gebiet der Verarbeitung natürlicher Sprache, baut semantische Netzwerke auf, löst Entitäten auf und verarbeitet Informationen mit einer Vielzahl von Dimensionen. Als aktive Teilnehmerin in der Community von Benutzern und Entwicklern von Open Source-Software freut sich Rebecca, mit anderen Entwicklern an Projekten wie Yellowbrick (einem Python-Paket zur Vorhersage der Black-Box-Modellierung) zu arbeiten. In seiner Freizeit fährt er oft mit seiner Familie Fahrrad oder übt Ukulele. Sie promovierte an der University of Illinois in Urbana-Champaign, wo sie praktische Kommunikations- und Visualisierungstechniken studierte.

»Weitere Informationen zum Buch finden Sie auf der Website des Herausgebers
» Inhalt
» Auszug

20% Rabatt-Gutschein für Straßenhändler - Python

Nach Zahlung der Papierversion des Buches wird eine elektronische Version des Buches per E-Mail verschickt.

PS: 7% der Kosten des Buches fließen in die Übersetzung neuer Computerbücher. Die Liste der Bücher, die der Druckerei übergeben wurden, finden Sie hier .

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


All Articles