Vorwort
Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com
Wir leben in einer Welt, in der es immer mehr digitale Assistenten gibt, die es uns ermöglichen, mit anderen Menschen und riesigen Informationsressourcen in Kontakt zu treten. Ein Teil des Reizes dieser intelligenten Geräte besteht darin, dass sie nicht nur Informationen übermitteln, sondern sie in begrenztem Maße auch verstehen - sie erleichtern die menschliche Interaktion auf hohem Niveau, indem sie Unmengen von Daten sammeln, filtern und in einer leicht verdaulichen Form zusammenfassen. Anwendungen wie maschinelle Übersetzung, Frage-und-Antwort-Systeme, Sprachtranskription, Textzusammenfassung und Chatbots werden zu einem festen Bestandteil unseres Computerlebens.
Wenn du dieses Buch in die Hand nimmst, bist du wahrscheinlich genauso begeistert wie wir von den Möglichkeiten, Komponenten zum Verstehen natürlicher Sprache in ein breiteres Spektrum von Anwendungen und Software einzubinden. Sprachverstehenskomponenten bauen auf einem modernen Rahmenwerk der Textanalyse auf: einem Werkzeugkasten von Techniken und Methoden, die Zeichenkettenmanipulation, lexikalische Ressourcen, Computerlinguistik und Algorithmen des maschinellen Lernens kombinieren, die Sprachdaten in eine maschinenverständliche Form umwandeln und wieder zurück. Bevor wir mit der Diskussion dieser Methoden und Techniken beginnen, ist es jedoch wichtig, die Herausforderungen und Chancen dieses Rahmens zu identifizieren und die Frage zu beantworten, warum dies jetzt geschieht.
Ein typischer amerikanischer Highschool-Absolvent hat etwa 60.000 Wörter und Tausende von grammatikalischen Begriffen auswendig gelernt - genug, um im beruflichen Kontext zu kommunizieren. Das mag viel erscheinen, aber bedenke, wie trivial es wäre, ein kurzes Python-Skript zu schreiben, um schnell die Definition, Etymologie und Verwendung eines beliebigen Begriffs in einem Online-Wörterbuch abzurufen. Tatsächlich entspricht die Vielfalt der sprachlichen Begriffe, die ein durchschnittlicher Amerikaner in der täglichen Praxis verwendet, nur einem Zehntel der Anzahl, die im Oxford-Wörterbuch erfasst ist, und nur 5 % der Begriffe, die derzeit von Google erkannt werden.
Und doch ist der sofortige Zugriff auf Regeln und Definitionen für die Textanalyse eindeutig nicht ausreichend. Wenn es so wäre, würden Siri und Alexa uns perfekt verstehen, Google würde nur eine Handvoll Suchergebnisse liefern und wir könnten sofort mit jedem auf der Welt in jeder Sprache chatten. Warum gibt es eine solche Diskrepanz zwischen den computergestützten Versionen von Aufgaben, die Menschen von klein auf flüssig erledigen können - lange bevor sie einen Bruchteil des Wortschatzes haben, den sie als Erwachsene besitzen werden? Natürliche Sprache erfordert eindeutig mehr als bloßes Auswendiglernen; deshalb reichen deterministische Rechentechniken nicht aus.
Computertechnische Herausforderungen der natürlichen Sprache
Natürliche Sprachen werden nicht durch Regeln definiert, sondern durch ihre Verwendung und müssen zurückentwickelt werden, um sie zu berechnen. Zu einem großen Teil können wir entscheiden, was die Wörter, die wir verwenden, bedeuten, obwohl diese Bedeutungsfindung notwendigerweise kollaborativ ist. Wenn wir den Begriff "Krabbe" von einem Meerestier auf eine Person mit einem mürrischen Gemüt oder einer bestimmten seitlichen Bewegung ausdehnen, müssen sich sowohl der Sprecher/Autor als auch der Hörer/Leser über die Bedeutung einig sein, damit die Kommunikation stattfinden kann. Die Sprache ist daher in der Regel durch die Gemeinschaft und die Region eingeschränkt - eine Verständigung über die Bedeutung ist oft viel einfacher mit Menschen, die ähnliche Lebenserfahrungen haben wie wir.
Im Gegensatz zu formalen Sprachen, die notwendigerweise bereichsspezifisch sind, sind natürliche Sprachen universell einsetzbar und universell. Wir verwenden dasselbe Wort, um Meeresfrüchte zum Mittagessen zu bestellen, ein Gedicht über einen Unzufriedenen zu schreiben und astronomische Nebel zu diskutieren. Um das Ausmaß des Ausdrucks in einer Vielzahl von Diskursen zu erfassen, muss die Sprache redundant sein. Redundanz stellt eine Herausforderung dar - da wir nicht für jede Assoziation ein wörtliches Symbol angeben können (und dies auch nicht tun), ist jedes Symbol standardmäßig mehrdeutig. Lexikalische und strukturelle Mehrdeutigkeit ist die wichtigste Errungenschaft der menschlichen Sprache. Sie gibt uns nicht nur die Möglichkeit, neue Ideen zu entwickeln, sondern ermöglicht es Menschen mit unterschiedlichen Erfahrungen, sich über Grenzen und Kulturen hinweg zu verständigen, auch wenn es mit an Sicherheit grenzender Wahrscheinlichkeit zu gelegentlichen Missverständnissen kommt.
Linguistische Daten: Token und Wörter
Um die in der Sprache kodierten Daten vollständig nutzen zu können, müssen wir uns darauf einstellen, Sprache nicht als intuitiv und natürlich, sondern als willkürlich und mehrdeutig zu betrachten. Die Einheit der Textanalyse ist das Token, eine Kette von kodierten Bytes, die den Text darstellen. Im Gegensatz dazu sind Wörter Symbole, die für eine Bedeutung stehen und die ein textliches oder verbales Konstrukt auf eine akustische und visuelle Komponente abbilden. Token sind keine Wörter (obwohl es uns schwerfällt, Token zu betrachten und keine Wörter zu sehen). Betrachte das Token "crab"
, das in Abbildung P-1 dargestellt ist. Dieses Token steht für den Wortsinn Krabbe-n1 - dieerste Definition des Substantivs, das für das Token verwendet wird: ein Krustentier, das gegessen werden kann, in der Nähe eines Ozeans lebt und Krallen hat, die kneifen können.
All diese anderen Ideen sind irgendwie mit diesem Symbol verbunden, und doch ist das Symbol völlig willkürlich; eine ähnliche Abbildung hat für einen griechischen Leser eine etwas andere Konnotation, behält aber die gleiche Bedeutung. Das liegt daran, dass Wörter keine feste, universelle Bedeutung haben, die von Kontexten wie Kultur und Sprache unabhängig ist. Leser/innen der englischen Sprache sind an anpassungsfähige Wortformen gewöhnt, die mit Präfixen und Suffixen versehen werden können, um Zeitform, Geschlecht usw. zu ändern. Chinesische Leserinnen und Leser hingegen kennen viele piktografische Zeichen, deren Reihenfolge über die Bedeutung entscheidet.
Redundanz, Mehrdeutigkeit und Perspektive bedeuten, dass natürliche Sprachen dynamisch sind und sich schnell weiterentwickeln, um die aktuellen menschlichen Erfahrungen zu erfassen. Heute zucken wir nicht mit der Wimper, wenn wir uns vorstellen, dass eine linguistische Studie über Emoticons so vollständig sein könnte, dass wir Moby Dick übersetzen könnten!1 Selbst wenn wir systematisch eine Grammatik entwickeln könnten, die definiert, wie Emoticons funktionieren, wird sich die Sprache weiterentwickelt haben - sogar die Sprache der Emoticons! Seit wir mit dem Schreiben dieses Buches begonnen haben, hat sich zum Beispiel das Emoji-Symbol für eine Pistole(🔫) von einer Waffe zu einem Spielzeug entwickelt (zumindest, wenn es auf einem Smartphone dargestellt wird), was einen kulturellen Wandel in der Wahrnehmung dieses Symbols widerspiegelt.
Nicht nur die Aufnahme neuer Symbole und Strukturen passt die Sprache an, sondern auch die Aufnahme neuer Definitionen, Kontexte und Verwendungen. Die Bedeutung des Begriffs "Batterie" hat sich durch das elektronische Zeitalter verändert und bedeutet nun einen Speicher, der chemische Energie in Elektrizität umwandelt. Laut dem Google Books Ngram Viewer2 wurde der Begriff "Batterie" jedoch weitaus häufiger verwendet und bezeichnete in der letzten Hälfte des19. und zu Beginn des20. Jahrhunderts auch eine zusammenhängende Reihe von Maschinen oder eine befestigte Stellung für schwere Geschütze. Sprache wird im Kontext verstanden, der über den umgebenden Text hinausgeht und auch die Zeitspanne einschließt. Die Bedeutung von Wörtern eindeutig zu identifizieren und zu erkennen, erfordert mehr Rechenarbeit als das einfache Nachschlagen eines Eintrags in einem Wörterbuch.
Maschinelles Lernen
Die gleichen Eigenschaften, die die natürliche Sprache zu einem so reichhaltigen Werkzeug für die menschliche Kommunikation machen, machen es auch schwierig, sie mit deterministischen Regeln zu analysieren. Die Flexibilität, die der Mensch bei der Interpretation einsetzt, ist der Grund dafür, dass wir mit mageren 60.000 symbolischen Repräsentationen den Computern weit überlegen sind, wenn es um das sofortige Verstehen von Sprache geht. Deshalb brauchen wir in einer Softwareumgebung Rechentechniken, die ebenso unscharf und flexibel sind. Der aktuelle Stand der Technik bei der Textanalyse sind daher statistische maschinelle Lernverfahren. Anwendungen, die natürliche Sprache verarbeiten, gibt es zwar schon seit mehreren Jahrzehnten, aber die Hinzunahme von maschinellem Lernen ermöglicht ein Maß an Flexibilität und Reaktionsfähigkeit, das sonst nicht möglich wäre.
Das Ziel des maschinellen Lernens ist es, vorhandene Daten an ein Modell anzupassen und so ein Abbild der realen Welt zu schaffen, das in der Lage ist, Entscheidungen zu treffen oder Vorhersagen für neue Daten auf der Grundlage von entdeckten Mustern zu erstellen. In der Praxis geschieht dies durch die Auswahl einer Modellfamilie, die die Beziehung zwischen den Zieldaten und der Eingabe bestimmt, die Festlegung einer Form mit Parametern und Merkmalen und die Anwendung eines Optimierungsverfahrens, um den Fehler des Modells bei den Trainingsdaten zu minimieren. Das angepasste Modell kann nun auf neue Daten angewandt werden, für die es eine Vorhersage macht - es liefert Labels, Wahrscheinlichkeiten, Zugehörigkeiten oder Werte, die auf der Modellform basieren. Die Herausforderung besteht darin, ein Gleichgewicht zwischen dem präzisen Erlernen der Muster in den bekannten Daten und der Generalisierung zu finden, damit das Modell auch bei Beispielen, die es noch nie gesehen hat, gut funktioniert.
Viele sprachbasierte Softwareanwendungen bestehen nicht nur aus einem einzigen maschinell trainierten Modell, sondern aus einer Vielzahl von Modellen, die interagieren und sich gegenseitig beeinflussen. Modelle können auch auf neue Daten trainiert werden, neue Entscheidungsräume anvisieren und sogar an den Nutzer angepasst werden, damit sie sich weiterentwickeln können, wenn sie auf neue Informationen stoßen und sich verschiedene Aspekte der Anwendung im Laufe der Zeit ändern. Unter der Haube der Anwendung können konkurrierende Modelle eingestuft werden, altern und schließlich untergehen. Das bedeutet, dass Anwendungen für maschinelles Lernen Lebenszyklen implementieren, die mit der Dynamik und der Regionalität der Sprache Schritt halten können, und zwar mit einem routinemäßigen Wartungs- und Überwachungsworkflow.
Werkzeuge für die Textanalyse
Da es sich bei Textanalyseverfahren in erster Linie um angewandtes maschinelles Lernen handelt, ist eine Sprache erforderlich, die über umfangreiche Bibliotheken für wissenschaftliche und numerische Berechnungen verfügt. Wenn es um Werkzeuge für maschinelles Lernen auf Text geht, verfügt Python über ein leistungsstarkes Paket, das Scikit-Learn, NLTK, Gensim, spaCy, NetworkX und Yellowbrick umfasst.
-
Scikit-Learn ist eine Erweiterung von SciPy (Scientific Python), die eine API für generalisiertes maschinelles Lernen bietet. Scikit-Learn baut auf Cython auf und enthält leistungsstarke C-Bibliotheken wie LAPACK, LibSVM, Boost und andere. Scikit-Learn kombiniert hohe Leistung mit einfacher Bedienung, um kleine bis mittelgroße Datensätze zu analysieren. Die quelloffene und kommerziell nutzbare Software bietet eine einzige Schnittstelle zu vielen Regressions-, Klassifizierungs-, Clustering- und Dimensionalitätsreduktionsmodellen sowie Dienstprogramme für die Kreuzvalidierung und das Tuning von Hyperparametern.
-
NLTK, das Natural Language Tool-Kit, ist eine von Experten aus dem akademischen Bereich in Python geschriebene Ressource für NLP. Ursprünglich als pädagogisches Werkzeug für den NLP-Unterricht gedacht, enthält es Korpora, lexikalische Ressourcen, Grammatiken, Sprachverarbeitungsalgorithmen und vortrainierte Modelle, die es Python-Programmierern ermöglichen, schnell mit der Verarbeitung von Textdaten in einer Vielzahl von Sprachen zu beginnen.
-
Gensim ist eine robuste, effiziente und unkomplizierte Bibliothek, die sich auf die unüberwachte semantische Modellierung von Texten konzentriert. Ursprünglich wurde sie entwickelt, um Ähnlichkeiten zwischen Dokumenten zu finden (Ähnlichkeit zu generieren). Jetzt bietet sie auch Methoden zur Themenmodellierung für latent-semantische Techniken und umfasst andere unüberwachte Bibliotheken wie word2vec.
-
spaCy bietet Sprachverarbeitung auf Produktionsniveau, indem es den neuesten Stand der Wissenschaft in eine einfache und benutzerfreundliche API implementiert. spaCy konzentriert sich insbesondere auf die Vorverarbeitung von Text für Deep Learning oder die Erstellung von Systemen zur Informationsextraktion oder zum Verstehen natürlicher Sprache bei großen Textmengen.
-
NetworkX ist ein umfassendes Graphenanalyse-Paket zum Erzeugen, Serialisieren, Analysieren und Manipulieren komplexer Netzwerke. Obwohl es sich nicht speziell um eine Bibliothek für maschinelles Lernen oder Textanalyse handelt, können Graphen-Datenstrukturen komplexe Beziehungen kodieren, die Graphen-Algorithmen durchlaufen oder in denen sie Bedeutung finden können.
-
Yellowbrick ist eine Reihe von visuellen Diagnosewerkzeugen für die Analyse und Interpretation von Machine-Learning-Workflows. Durch die Erweiterung der Scikit-Learn-API bietet Yellowbrick intuitive und verständliche Visualisierungen der Merkmalsauswahl, der Modellierung und der Abstimmung der Hyperparameter und steuert den Modellauswahlprozess, um die effektivsten Modelle für Textdaten zu finden.
Was du von diesem Buch erwarten kannst
In diesem Buch konzentrieren wir uns auf angewandtes maschinelles Lernen für die Textanalyse unter Verwendung der gerade beschriebenen Python-Bibliotheken. Der angewandte Charakter des Buches bedeutet, dass wir uns nicht auf die akademische Natur der Linguistik oder statistischer Modelle konzentrieren, sondern darauf, wie man Modelle, die auf Text trainiert wurden, effektiv in einer Softwareanwendung einsetzt.
Das von uns vorgeschlagene Modell für die Textanalyse steht in direktem Zusammenhang mit dem Arbeitsablauf des maschinellen Lernens - einem Suchprozess, bei dem es darum geht, ein Modell aus Merkmalen, einem Algorithmus und Hyperparametern zu finden, das am besten auf Trainingsdaten funktioniert, um Schätzungen für unbekannte Daten zu erstellen. Dieser Arbeitsablauf beginnt mit der Erstellung und Verwaltung eines Trainingsdatensatzes, der in der Textanalyse als Korpus bezeichnet wird. Anschließend werden wir uns mit der Merkmalsextraktion und den Vorverarbeitungsmethoden beschäftigen, um Text als numerische Daten zu erstellen, die maschinelles Lernen verstehen kann. Mit einigen grundlegenden Merkmalen in der Hand erkunden wir Techniken zur Klassifizierung und zum Clustering von Texten und schließen damit die ersten Kapitel des Buches ab.
In den letzten Kapiteln geht es um die Erweiterung von Modellen mit umfangreicheren Merkmalen, um textbasierte Anwendungen zu erstellen. Zunächst untersuchen wir, wie der Kontext als Merkmal eingebettet werden kann, und gehen dann zu einer visuellen Interpretation von Text über, um den Modellauswahlprozess zu steuern. Als Nächstes untersuchen wir, wie komplexe Beziehungen, die aus Texten extrahiert wurden, mit Hilfe von Graphanalyseverfahren analysiert werden können. Dann wechseln wir den Fokus und erforschen Konversationsagenten und vertiefen unser Verständnis der syntaktischen und semantischen Analyse von Texten. Wir schließen das Buch mit einer praktischen Diskussion über die Skalierung der Textanalyse mit Multiprocessing und Spark ab und erkunden schließlich die nächste Phase der Textanalyse: Deep Learning.
Für wen dieses Buch ist
Dieses Buch richtet sich an Python-Programmiererinnen und -Programmierer, die daran interessiert sind, natürliche Sprachverarbeitung und maschinelles Lernen in ihr Softwareentwicklungs-Toolkit einzubauen. Wir setzen bei unseren Lesern keine besonderen akademischen oder mathematischen Kenntnisse voraus und konzentrieren uns stattdessen auf Werkzeuge und Techniken und nicht auf langatmige Erklärungen. Da wir in diesem Buch hauptsächlich die englische Sprache analysieren, sind grundlegende grammatikalische Kenntnisse hilfreich, z. B. wie Substantive, Verben, Adverbien und Adjektive miteinander in Beziehung stehen. Leserinnen und Leser, die völlig neu im Bereich des maschinellen Lernens und der Linguistik sind, aber ein solides Verständnis der Python-Programmierung haben, werden sich von den vorgestellten Konzepten nicht überfordert fühlen.
Codebeispiele und GitHub Repository
Die Codebeispiele in diesem Buch sollen beschreiben, wie man Python-Code zur Ausführung bestimmter Aufgaben implementiert. Da sie sich an Leser/innen richten, sind sie knapp gehalten und lassen oft wichtige Anweisungen weg, die während der Ausführung benötigt werden, z. B. import
Anweisungen aus der Standardbibliothek. Außerdem bauen sie oft auf Code aus anderen Teilen des Buches oder des Kapitels auf und enthalten gelegentlich Codestücke, die leicht verändert werden müssen, damit sie im neuen Kontext funktionieren. Zum Beispiel können wir eine Klasse wie folgt definieren:
class
Thing
(
object
):
def
__init__
(
self
,
arg
):
self
.
property
=
arg
Diese Klassendefinition dient dazu, die grundlegenden Eigenschaften der Klasse zu beschreiben und die Struktur einer größeren Diskussion über Implementierungsdetails festzulegen. Später können wir der Klasse wie folgt Methoden hinzufügen:
...
def
method
(
self
,
*
args
,
**
kwargs
):
return
self
.
property
Beachte die Ellipse oben im Snippet, die anzeigt, dass es sich um eine Fortsetzung der Klassendefinition im vorherigen Snippet handelt. Das bedeutet, dass das einfache Kopieren und Einfügen von Beispielschnipseln möglicherweise nicht funktioniert. Wichtig ist auch, dass der Code so konzipiert ist, dass er mit Daten arbeitet, die auf der Festplatte an einem Ort gespeichert werden müssen, der vom ausführenden Python-Programm gelesen werden kann. Wir haben versucht, so allgemein wie möglich zu sein, können aber nicht alle Betriebssysteme oder Datenquellen berücksichtigen.
Um unsere Leserinnen und Leser dabei zu unterstützen, die Beispiele in diesem Buch auszuführen, haben wir vollständige, ausführbare Beispiele in unserem GitHub-Repository implementiert. Diese Beispiele können leicht vom Text abweichen, sollten aber mit Python 3 auf jedem System leicht ausführbar sein. Beachte auch, dass das Repository auf dem neuesten Stand gehalten wird; sieh in der README nach, ob es Änderungen gibt. Du kannst das Repository natürlich auch forken und den Code für die Ausführung in deiner eigenen Umgebung ändern - was wir dir sehr empfehlen!
In diesem Buch verwendete Konventionen
In diesem Buch werden die folgenden typografischen Konventionen verwendet:
- Kursiv
-
Weist auf neue Begriffe, URLs, E-Mail-Adressen, Dateinamen und Dateierweiterungen hin.
Constant width
-
Wird für Programmlistings sowie innerhalb von Absätzen verwendet, um auf Programmelemente wie Variablen- oder Funktionsnamen, Datenbanken, Datentypen, Umgebungsvariablen, Anweisungen und Schlüsselwörter hinzuweisen.
Constant width bold
-
Zeigt Befehle oder anderen Text an, der vom Benutzer wortwörtlich eingetippt werden sollte.
Constant width italic
-
Zeigt Text an, der durch vom Benutzer eingegebene Werte oder durch kontextabhängige Werte ersetzt werden soll.
Tipp
Dieses Element steht für einen Tipp oder eine Anregung.
Hinweis
Dieses Element steht für einen allgemeinen Hinweis.
Warnung
Dieses Element weist auf eine Warnung oder einen Warnhinweis hin.
Code-Beispiele verwenden
Zusätzliches Material (Code-Beispiele, Übungen usw.) steht unter https://github.com/foxbook/atap zum Download bereit .
Dieses Buch soll dir helfen, deine Arbeit zu erledigen. Wenn in diesem Buch Beispielcode angeboten wird, darfst du ihn in deinen Programmen und deiner Dokumentation verwenden. Du musst uns nicht um Erlaubnis fragen, es sei denn, du reproduzierst einen großen Teil des Codes. Wenn du zum Beispiel ein Programm schreibst, das mehrere Teile des Codes aus diesem Buch verwendet, brauchst du keine Erlaubnis. Wenn du eine CD-ROM mit Beispielen aus den O'Reilly-Büchern verkaufst oder verteilst, ist eine Genehmigung erforderlich. Die Beantwortung einer Frage mit einem Zitat aus diesem Buch und einem Beispielcode erfordert keine Genehmigung. Wenn du einen großen Teil des Beispielcodes aus diesem Buch in die Dokumentation deines Produkts aufnimmst, ist eine Erlaubnis erforderlich.
Wir schätzen die Namensnennung, verlangen sie aber nicht. Eine Quellenangabe umfasst normalerweise den Titel, den Autor, den Verlag und die ISBN. Zum Beispiel: "Applied Text Analysis with Python von Benjamin Bengfort, Rebecca Bilbro und Tony Ojeda (O'Reilly). 978-1-491-96304-3."
Der BibTex für dieses Buch lautet wie folgt:
@book{
title ={
Applied{{
Text Analysis}}
with{{
Python}}}
, subtitle ={
Enabling Language Aware{{
Data Products}}}
, shorttitle ={
Applied{{
Text Analysis}}
with{{
Python}}}
, publisher ={{
O'Reilly Media, Inc.}}
, author ={
Bengfort, Benjamin and Bilbro, Rebecca and Ojeda, Tony}
, month = jun, year ={
2018}
}
Wenn du der Meinung bist, dass die Verwendung von Code-Beispielen nicht unter die Fair-Use-Regelung oder die oben genannte Erlaubnis fällt, kannst du uns gerne unter permissions@oreilly.com kontaktieren .
O'Reilly Safari
Hinweis
Safari (ehemals Safari Books Online) ist eine mitgliedschaftsbasierte Schulungs- und Nachschlageplattform für Unternehmen, Behörden, Lehrkräfte und Privatpersonen.
Mitglieder haben Zugang zu Tausenden von Büchern, Schulungsvideos, Lernpfaden, interaktiven Tutorials und kuratierten Playlists von über 250 Verlagen, darunter O'Reilly Media, Harvard Business Review, Prentice Hall Professional, Addison-Wesley Professional, Microsoft Press, Sams, Que, Peachpit Press, Adobe, Focal Press, Cisco Press, John Wiley & Sons, Syngress, Morgan Kaufmann, IBM Redbooks, Packt, Adobe Press, FT Press, Apress, Manning, New Riders, McGraw-Hill, Jones & Bartlett und Course Technology, um nur einige zu nennen.
Weitere Informationen erhältst du unter http://oreilly.com/safari.
Wie du uns kontaktierst
Bitte richte Kommentare und Fragen zu diesem Buch an den Verlag:
- O'Reilly Media, Inc.
- 1005 Gravenstein Highway Nord
- Sebastopol, CA 95472
- 800-998-9938 (in den Vereinigten Staaten oder Kanada)
- 707-829-0515 (international oder lokal)
- 707-829-0104 (Fax)
Wir haben eine Webseite für dieses Buch, auf der wir Errata, Beispiele und zusätzliche Informationen auflisten. Du kannst diese Seite unter http://bit.ly/applied-text-analysis-with-python aufrufen .
Wenn du Kommentare oder technische Fragen zu diesem Buch stellen möchtest, sende eine E-Mail an bookquestions@oreilly.com.
Weitere Informationen zu unseren Büchern, Kursen, Konferenzen und Neuigkeiten findest du auf unserer Website unter http://www.oreilly.com.
Finde uns auf Facebook: http://facebook.com/oreilly
Folge uns auf Twitter: http://twitter.com/oreillymedia
Schau uns auf YouTube: http://www.youtube.com/oreillymedia
Danksagungen
Wir möchten uns bei unseren technischen Gutachtern für die Zeit und das Engagement bedanken, die sie in unsere ersten Entwürfe investiert haben, und für das Feedback, das sie uns gegeben haben und das das Buch entscheidend geprägt hat. Dan Chudnov und Darren Cook gaben uns hervorragendes technisches Feedback, das uns half, auf dem richtigen Weg zu bleiben, und Nicole Donnelly lieferte eine Perspektive, die es uns ermöglichte, den Inhalt auf unsere Leser/innen zuzuschneiden. Wir möchten uns auch bei Lev Konstantinovskiy und Kostas Xirogiannopoulos bedanken, die mit ihrem akademischen Feedback dafür gesorgt haben, dass unsere Diskussion auf dem neuesten Stand ist.
Unserer immer lächelnden und unermüdlich ermutigenden Redakteurin, Nicole Tache, können wir nicht genug Gutes sagen. Sie hat dieses Projekt von Anfang an begleitet und an uns geglaubt, auch als die Ziellinie in immer weitere Ferne zu rücken schien. Ihr Engagement für uns und unseren Schreibprozess, ihr unschätzbares Feedback und ihre Ratschläge sind der Grund dafür, dass es dieses Buch gibt.
An unsere Freunde und Familien: Ohne eure Unterstützung und Ermutigung könnten wir unsere Arbeit nicht machen. An unsere Eltern Randy und Lily, Carla und Griff und Tony und Teresa: Ihr habt uns den kreativen Verstand, die Arbeitsmoral, die technischen Fähigkeiten und die Liebe zum Lernen vermittelt, die dieses Buch möglich gemacht haben. An unsere Ehepartner Jacquelyn, Jeff und Nikki: Eure unerschütterliche Entschlossenheit, selbst angesichts verpasster Abgabetermine, langer Nächte und Wochenenden, bedeutet uns alles. Und schließlich an unsere Kinder Irena, Henry, Oscar und Baby Ojeda: Wir hoffen, dass ihr eines Tages dieses Buch findet und denkt: "Wow, unsere Eltern haben Bücher darüber geschrieben, als Computer noch nicht wie normale Menschen sprechen konnten... wie alt sind sie?"
1 Fred Benenson, Emoji Dick, (2013) http://bit.ly/2GKft1n
2 Google, Google Books Ngram Viewer, (2013) http://bit.ly/2GNlKtk
Get Angewandte Textanalyse mit Python now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.