20. März 2020
Teilen über

#gettingstartedwith

Natural Language Processing (NLP) ist ein Zweig des maschinellen Lernens, der sich mit der Verarbeitung und Analyse menschlicher Sprache, sowohl Sprache als auch Text, befasst. Datenvisualisierung bezieht sich auf eine Reihe von Techniken, die verwendet werden, um Daten in einem visuellen Format darzustellen, das für das menschliche Gehirn leichter zu verdauen und Muster zu erkennen ist. Mit der wachsenden Menge an Daten, einschließlich Text, entwickeln sich auch die Tools für die Textverarbeitung, -analyse und -visualisierung weiter.

Lassen Sie uns Stand-up-Comedy, TV-Specials, Transkripte und NLP-Techniken verwenden, um Comedians zu vergleichen. In diesem Artikel zeige ich, dass Textanalyse und -visualisierung einfach sein und Spaß machen kann und dass es mit modernen, öffentlich zugänglichen Tools jeder tun kann, auch ohne viel Programmiererfahrung.

Um diesen Artikel ein wenig unterhaltsam zu gestalten, habe ich mich für Open-Source-Daten entschieden, die amüsant zu analysieren sind. Die Idee, Stand-up-Comedy-TV-Specials, Transkripte und NLP-Techniken zu verwenden, um verschiedene Comedians zu vergleichen, wurde durch dieses Tutorial inspiriert.

Zum Zeitpunkt der Erstellung dieses Artikels (03/2020) gehörten die folgenden Stand-up-Comedy-TV-Specials zu den beliebtesten in der IMDB:

  • Dave Chappelle: Stöcke & Steine
  • Hannah Gadsby: Nanette
  • John Mulaney: Neu in der Stadt

Vorverarbeitung

Ich scrape die Drehbücher für die oben genannten Programme von Scraps From The Loft, einem digitalen Magazin mit Filmkritiken, Stand-up-Comedy-Transkripten, Interviews usw., um sie für gemeinnützige und pädagogische Zwecke zur Verfügung zu stellen. Mit öffentlich zugänglichen Tools versuche ich zunächst, Bühnenpersönlichkeiten, Wörter, die für jeden Comedian am charakteristischsten sind, und Unterschiede in der Wortverwendung zwischen Comedians zu verstehen.

Im Vorverarbeitungsschritt lösche ich Text in Klammern, der auf Unterbrechungen durch das Publikum hinweist (z. B. "[Publikum lacht]").

				
					data_df['transcript'] =  [re.sub(r'([\(\[]).*?([\)\]])','', str(x)) for x in data_df['transcript']]
				
			
Dann verwende ich Scattertext (Kessler, 2017), ein öffentlich verfügbares Tool, das auf Scatterplot basiert, eine Alternative zu traditionellen Techniken wie dem Ranking der häufigsten Wörter und Wortwolken.
				
					!pip install scattertext
import scattertext as st
				
			

Korporaunterschiede mit Scattertext visualisieren

Um unsere erste Visualisierung zu generieren, führe ich die Schritte aus dem ursprünglichen Tutorial aus.

				
					# chose the comedians to compare
pair1 = 'Hannah Gadsby', 'John Mulaney'
df_pair1 = data_df[data_df['comedian'].isin(pair1)]

# parse speech text using spaCy
nlp = spacy.load('en')
df_pair1['parsed'] = df_pair1.transcript.apply(nlp)

# convert dataframe into Scattertext corpus
corpus_pair1 = st.CorpusFromParsedDocuments(df_pair1, category_col='comedian', parsed_col='parsed').build()

# visualize term associations
html = produce_scattertext_explorer(corpus_pair1,
                                    category='Hannah Gadsby',
                                    category_name='Hannah Gadsby',
                                    not_category_name='John Mulaney',
                                    width_in_pixels=1000,
                                    minimum_term_frequency=5
                                    )
file_name = 'terms_pair1.html'
open(file_name, 'wb').write(html.encode('utf-8'))
IPython.display.HTML(filename=file_name)
				
			
Mit diesen wenigen Codezeilen erhalte ich eine ziemlich ordentliche Textvisualisierung.
Abbildung 1 zeigt ein Beispiel für ein Scattertext-Diagramm, in dem Transkripte von Hannah Gadsby und John Mulaney verglichen werden. Die Koordinaten eines Punktes geben an, wie häufig das Wort entweder von Gadsby oder von Mulaney verwendet wird. Je höher ein Punkt auf der y-Achse liegt, desto mehr wurde er von Gadsby verwendet, und je weiter rechts ein Punkt auf der x-Achse liegt, desto häufiger wurde er von Mulaney verwendet. Begriffe, die stark mit einem der Comedians in Verbindung gebracht werden, erscheinen in der oberen linken oder unteren rechten Ecke des Diagramms, und Stoppwörter (die häufigsten Wörter in einer Sprache wie "der", "und" usw.) erscheinen in der oberen rechten Ecke. Wörter, die sowohl in Gadsbys als auch in Mulaneys Transkripten selten vorkommen, erscheinen in der unteren linken Ecke. Blau gefärbte Punkte sind mit Gadsby und rot gefärbte Punkte mit Mulaney verknüpft. Wenn ich auf einen Punkt klicke, erhalte ich Statistiken über die relative Verwendung eines Begriffs in den Transkripten von Gadsby und Mulaney und sehe Auszüge aus den Transkripten, in denen dieser Begriff vorkommt (Abbildung 2).
Schauen wir uns ein paar schnelle Erkenntnisse an, die ich daraus gewinnen kann.Mulanney verwendet die Worte "be like" (und "like") oft... Ich dachte nie: "Oh, wie wird es sein, wenn Verwandte darum bitten, sich Geld zu leihen? Und Gadsby verwendet "weil" fast dreimal häufiger als Mulaney (199 pro 25.000 Begriffe VS. Mulanneys 69 pro 25k Begriffe)... Sehr clever, weil es lustig ist... Weil es wahr ist.Mulaney ist ein nervöser Typ... Ich bin einfach zu ängstlich für viele Dinge, ich werde die ganze Zeit nervös, nicht einmal in Bezug auf wichtige Dinge im Leben, sondern nur auf alltägliche Situationen. Während Gadsby Kunstgeschichte studierte... Sie werden nicht allzu viele ausgedehnte Sets über Kunstgeschichte in einer Comedy-Show hören, also... Bitte. Diese zeigen Beispielthemen, die zwei Comedians in ihren Materialien verwenden.Übrigens, warum habe ich nicht Chappelles Transkript verwendet, um Begriffsassoziationen zu visualisieren? Nun, es gab einfach zu viele "Begriffe", um sie zu verwischen...
David Chapelle in Saturday Night Live, 2016 (https://gph.is/2ePdMRF)

Visualisieren von Themen mit Empath

Im nächsten Beispiel verwende ich Chappelles Transkript, um Empath-Themen zu visualisieren. Empath (Fast et al., 2016) ist ein Werkzeug zur Analyse von Text über lexikalische Kategorien (oder Themen) hinweg, das auch neue Kategorien aus Text generieren kann (z. B. "bleed"- und "punch"-Begriffe erzeugen die Kategorie Gewalt). Um Empath-Themen mit Scattertext zu visualisieren, installiere ich Empath, eine Open-Source-Python-Bibliothek, und erstelle einen Korpus extrahierter Themen. Ich verwende den Quellcode, um ihn für unsere Daten anzupassen. Das Ergebnis ist in Abbildung 3 dargestellt.

				
					!pip install empath
				
			
				
					# chose the comedians to compare
pair2 = 'Dave Chappelle', 'Hannah Gadsby'
df_pair2 = data_df[data_df['comedian'].isin(pair2)]

# parse speech text using spaCy
nlp = spacy.load('en')
df_pair2['parsed'] = df_pair2.transcript.apply(nlp)

# create a corpus of extracted topics
feat_builder = st.FeatsFromOnlyEmpath()
empath_corpus_pair2 = st.CorpusFromParsedDocuments(df_pair2,
                                             category_col='comedian',
                                             feats_from_spacy_doc=feat_builder,
                                             parsed_col='parsed').build()

# visualize Empath topics
html = produce_scattertext_explorer(empath_corpus_pair2,
                                    category='Dave Chappelle',                                       
                                    category_name='Dave Chappelle',
                                    not_category_name='Hannah Gadsby',
                                    width_in_pixels=1000,
                                    use_non_text_features=True,
                                    use_full_doc=True,                              topic_model_term_lists=feat_builder.get_top_model_term_lists())
file_name = 'empath_pair2.html'
open(file_name, 'wb').write(html.encode('utf-8'))
IPython.display.HTML(filename=file_name)
				
			
Abbildung 3 zeigt einen Vergleich von Empath-Themen, die aus Chappelles und Gadsbys Materialien extrahiert wurden. Die Koordinaten eines Punktes geben an, wie häufig die Themen in den Transkripten von Chappelle oder Gadsby vorkommen. Chappelles häufigstes Thema (d.h. die lexikalische Kategorie, die vom Empath-Tool generiert wird) ist "swearing_terms" und Gadsbys ist "Kunst". Ganz oben rechts sehe ich Themen, die stark mit beiden Comedians in Verbindung gebracht werden. Dazu gehören "negative_emotions" und, was damit verwandt zu sein scheint, "Gewalt", "Schmerz" und "Hass". "Waffe" und "Verbrechen" befinden sich in der oberen linken Ecke und werden mit Chappelle in Verbindung gebracht, während "Wut" und "Traurigkeit" rot gefärbt sind, was eine stärkere Assoziation mit Gadsby zeigt. Davon abgesehen scheinen beide TV-Specials eine Vielzahl schwieriger Themen abzudecken...
Abbildung 3
Wenn ich eine ähnliche Textvisualisierung für Chappelle und Mulaney erstelle (Abbildung 4), sehe ich immer noch "negative_emotions" in der oberen rechten Ecke, obwohl andere Kategorien wie "Gewalt", "Schmerz", "Hass" jetzt auf der linken Seite sind. Das bedeutet, dass diese Kategorien jetzt in erster Linie nur mit einem Komiker (Chappelle) in Verbindung gebracht werden. Wenn ich mir die Themen auf der rechten Seite anschaue oder die Themen, die rot eingefärbt sind, sehe ich eigentlich nichts, was intuitiv als "negative_emotions" kategorisiert werden könnte.
Abbildung 4
Ähnlich wie zuvor kann ich auf die Kategorie klicken (z.B. 'negative_emotions'), um Ausschnitte aus den Transkripten zu sehen und welche Wörter die Kategorie für jeden Comedian generieren.
 Zugehörige BegriffeBeispiel
Chappelles Korpora'meinen', 'sterben', 'kümmern', 'töten', 'schlecht', 'falsch', f-ing, 'schlimm', 'tot', 'schlagen', 'allein', 'hart', 'vernunft', 'schuldig', 'verrückt' usw.... Wenn du arm warst, weißt du, wie sich das anfühlt. Du hast dich die ganze Zeit geschämt . Es fühlt sich an, als wäre es deine Schuld...
Gatsbys Korpora'reason', 'schlecht', 'falsch', 'enttäuscht', 'geschlagen', 'gemein', 'stop', f-ing, 'hit', 'verwirrt' usw.... Und ich bin wütend, und ich glaube, ich habe jedes Recht, wütend zu sein ! Aber wozu ich kein Recht habe, ist, Wut zu verbreiten...
Mulaneys Korpora'verrückt', 'wert', 'schrecklich', 'gewollt', 'lüge', 'schuld', 'getötet', 'gesucht', 'allein', 'verloren', 'dumm', 'gemein', 'schlecht', 'verwirrt', 'schuld', 'schrecklich' usw.... Wenn die Leute jetzt wütend auf mich sind, ist es meine Schuld, wenn die Leute auf der Autobahn wütend auf mich werden, ist das alles mein Schlechtes, ich bin ein schrecklicher Fahrer, ich habe keine Ahnung von Autos.  Ich wollte etwas über Autos lernen, und dann vergaß ich es...
John Mulaney: Kid Gorgeous, 2018 (https://tenor.com/3bVP.gif))

Hat Ihnen diese schnelle Analyse der Textvisualisierung bei der Entscheidung geholfen, welche Stand-up-Comedy-TV-Specials Sie sich heute Abend auf Netflix ansehen sollten?

#gettingstartedwith ist unsere neue Blog-Serie für diejenigen unter Ihnen, die sich mit Daten und KI vertraut machen möchten.
Neugier ist unser Kern, und viele DAINianer experimentieren ständig mit Dingen. Wir sind es unseren Kunden schuldig, über neue Technologien auf dem Laufenden zu bleiben, und um ehrlich zu sein, da wir ein bisschen auf der nerdigen Seite sind, ist das ganz natürlich! Sich Zeit zum Lernen zu nehmen, ist auch etwas, das wir als Arbeitgeber fördern wollen, und stellen sicher, dass jede Woche etwas Zeit für den Wissensaustausch mit Kollegen reserviert ist.
Die Blogs und Beiträge, die wir mit dem #gettingstartedwith-Tag veröffentlichen, sind eher eine Einführungsebene für diejenigen unter Ihnen, die sich mit der Welt der Daten und der KI vertraut machen möchten. Dabei kann es sich um Tipps und Tricks handeln, die zeigen, wie man eine API in 60 Minuten erstellt, oder um ein lustiges Projekt zum Experimentieren mit Textanalyse. Oder wir teilen Links zu gutem Lesen oder Ansehen, verfügbarem E-Learning oder Leuten, denen man folgen kann.

Referenzen & mehr

Kessler, J. S. (2017). Scattertext: ein browserbasiertes Werkzeug zur Visualisierung, wie sich Korpora unterscheiden. arXiv-Vorabdruck arXiv:1703.00565.

Fast, E., Chen, B., & Bernstein, M. S. (2016, Mai). Empath: Themensignale in großformatigem Text verstehen. In Proceedings of the 2016 CHI Conference on Human Factors in Computing Systems (S. 4647-4657).  https://arxiv.org/pdf/1602.06979.pdf

Fotos von Bogomil Mihaylov & Frederick Tubiermont 

Aktualisiert am 31.3.2020, um einen Tippfehler zu korrigieren und GIF-Quellen hinzuzufügen.

Geschrieben von Ekaterina Diachkova. Sie arbeitet als BI-Entwicklerin (Werkstudentin) bei DAIN Studios (Unternehmensberatung). Sie verfügt über 3+ Jahre Erfahrung in BI und Datenvisualisierung und hat Interesse an KI und Natural Language Processing.

Einzelheiten

Titel: Textvisualisierung von Stand-up-Comedy mit Streutext
Autor:
DAIN StudiosDaten & KI Strategieberatung
Veröffentlicht in ,
Aktualisiert am 21. April 2021