{"id":170298,"date":"2026-06-23T14:38:51","date_gmt":"2026-06-23T12:38:51","guid":{"rendered":"https:\/\/liora.io\/de\/?p=170298"},"modified":"2026-06-23T14:38:54","modified_gmt":"2026-06-23T12:38:54","slug":"nlp-twitter-stimmungsanalyse","status":"publish","type":"post","link":"https:\/\/liora.io\/de\/nlp-twitter-stimmungsanalyse","title":{"rendered":"NLP Twitter &#8211; Stimmungsanalyse"},"content":{"rendered":"<p><strong>Twitter wird von Hunderten Millionen Menschen auf der ganzen Welt genutzt. Genauer gesagt, bel\u00e4uft sich die aktuelle Sch\u00e4tzung auf etwa 330 Millionen monatlich aktive Nutzer und 145 Millionen t\u00e4glich aktive Twitterer. Eine weitere interessante Zahl: 63 % der weltweiten Twitter-Nutzer sind zwischen 35 und 65 Jahre alt.<\/strong><\/p>\n<p>Das Ziel dieses Artikels ist es, eine explorative und visuelle Analyse der in unserem Datensatz vorhandenen Tweets durchzuf\u00fchren. In einem zweiten Schritt soll mithilfe verschiedener Modelle in Python die Stimmung in den Tweets als positiv, neutral oder negativ klassifiziert werden. Mit anderen Worten: Sentiment Analysis und NLP zusammenzubringen.<\/p>\n<h3>Inhalt<\/h3>\n<ol>\n<li>Einf\u00fchrung in NLP<\/li>\n<li>Word embedding &#8211; Word2vec<\/li>\n<li>NLP &#8211; Wort\u00fcbersetzung<\/li>\n<li>NLP Twitter -Stimmungsanalyse\n<ol>\n<li><a href=\"#Visuelle\">Visuelle Analyse der Daten<\/a><\/li>\n<li><a href=\"#Erstellung von Metadaten und Klassifizierung\">Erstellung von Metadaten und Klassifizierung<\/a><\/li>\n<li><a href=\"#Alternative\">Alternative L\u00f6sungen: AFINN<\/a><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p>\/*! elementor &#8211; v3.10.1 &#8211; 17-01-2023 *\/<br \/>\nbody.elementor-page .elementor-widget-menu-anchor{margin-bottom:0}<\/p>\n<h3>ERSTE VISUELLE ANALYSE DER DATEN<\/h3>\n<p>Zun\u00e4chst ein erster Blick auf den Datensatz, der uns zur Verf\u00fcgung steht: Lade <a href=\"https:\/\/dst-train-datasets.s3-eu-west-1.amazonaws.com\/masterclass_tm\/twitter_comment.csv\">den Datensatz<\/a> <b>herunter<\/b><b>, <\/b>den du mit dem Befehl <b><i>df.head() <\/i><\/b>erhalten hast.<\/p>\n<p>\/*! elementor &#8211; v3.10.1 &#8211; 17-01-2023 *\/<br \/>\n.elementor-widget-image{text-align:center}.elementor-widget-image a{display:inline-block}.elementor-widget-image a img[src$=&#8220;.svg&#8220;]{width:48px}.elementor-widget-image img{vertical-align:middle;display:inline-block} <img decoding=\"async\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/02\/unnamed-3-1.webp\" alt=\"\" width=\"512\" height=\"102\" \/><\/p>\n<p>Wie wir sehen k\u00f6nnen, enth\u00e4lt dieser Datensatz, der insgesamt 1,6 Millionen Tweets enth\u00e4lt, eine Spalte mit dem Titel <i>Label, <\/i>die eine 1 vergibt, wenn die Stimmung des Tweets positiv ist, und eine -1, wenn nicht.<\/p>\n<p>In einem ersten Schritt werden wir versuchen, den Monat zu bestimmen, in dem die Twittosph\u00e4re am aktivsten ist.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/02\/unnamed-1-1.webp\" alt=\"\" width=\"512\" height=\"222\" \/><\/p>\n<p>Hier l\u00e4sst sich ein erster Trend erkennen:<\/p>\n<ul>\n<li style=\"font-weight: 400;\">Die <b>Monate Mai (5) und Juni (6) scheinen die Monate zu sein, in denen am meisten getwittert wird<\/b>. Dies k\u00f6nnte verschiedene Gr\u00fcnde haben, z. B. dass Twitter besonders f\u00fcr junge Leute gedacht ist und dass die Monate Mai und Juni das Ende ihres Schul- oder Studienjahres sind, sodass sie mehr Zeit haben, sich auf Twitter zu \u00e4u\u00dfern.<\/li>\n<\/ul>\n<ul>\n<li style=\"font-weight: 400;\">Es f\u00e4llt auch auf, dass im Juni die Gef\u00fchle der Tweets eher negativ sind (mit -1 gekennzeichnet), was die vorgefasste Meinung best\u00e4tigt, dass Twitter manchmal ein <b>Ort sein <\/b>kann, an dem <b>Gewalt ausbricht<\/b>.<\/li>\n<\/ul>\n<p>Wir k\u00f6nnten uns nun fragen, an welchem Wochentag die meisten Tweets geschrieben werden:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/02\/unnamed-1-1-1.webp\" alt=\"\" width=\"512\" height=\"222\" \/><\/p>\n<p>Hier stellen wir wenig \u00fcberraschend fest, dass Twitterer am Wochenende viel mehr Twitter nutzen als unter der Woche.<\/p>\n<p>Man kann sich auch ansehen, zu welcher Tageszeit die meisten Tweets abgesetzt werden, und ebenfalls wenig \u00fcberraschend feststellen, dass die Zahl der Tweets vor allem vor und nach Beginn und Ende des Arbeits-\/Schultags explodiert:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/02\/data.webp\" alt=\"\" width=\"768\" height=\"261\" \/><\/p>\n<p>Hier ist eine Wortwolke, in der du sehen kannst, <b>welche W\u00f6rter in den Tweets der Nutzer am h\u00e4ufigsten verwendet werden <\/b>(je gr\u00f6\u00dfer die Schriftgr\u00f6\u00dfe eines Wortes ist, desto h\u00e4ufiger kommt es vor).<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/02\/nuage-de-mot.webp\" alt=\"\" width=\"512\" height=\"288\" \/><\/p>\n<p>Von nun an werden wir unsere <b>Arbeit <\/b>beginnen, indem wir die Gef\u00fchle der Tweets mithilfe einer <b>logistischen Regression klassifizieren<\/b>.<\/p>\n<p>Dazu ist die Idee wie \u00fcblich, unseren Datensatz in eine Trainingsstichprobe (80%), in der wir die Parameter des Modells lernen, und eine Teststichprobe (20%), in der wir sie testen, aufzuteilen.<\/p>\n<p>Da die erkl\u00e4renden Variablen jedoch Textdaten (die Tweets) sind, werden wir vorher neue numerische erkl\u00e4rende Variablen in Verbindung mit den Tweets (Metadaten) erstellen, um dann die Labels vorhersagen zu k\u00f6nnen.<\/p>\n<h3>ERSTELLUNG VON METADATEN UND KLASSIFIZIERUNG<\/h3>\n<p>Um die Stimmung eines Tweets zu analysieren, k\u00f6nnen wir dann das herausfiltern, was uns wichtig erscheint, wie z. B. :<\/p>\n<ul>\n<li style=\"font-weight: 400;\">Die Anzahl der <b>E-Mail-Adressen<\/b>. (Die Anzahl der E-Mail-Adressen, die im Tweet genannt werden, k\u00f6nnte f\u00fcr die Seriosit\u00e4t des Tweets von Bedeutung sein).<\/li>\n<li style=\"font-weight: 400;\">Die Anzahl der <b>Hashtags<\/b>.<\/li>\n<li style=\"font-weight: 400;\">Die Anzahl der <b>Nutzerzitate<\/b>.<\/li>\n<li style=\"font-weight: 400;\">Die Anzahl der <b>Gro\u00dfbuchstaben<\/b><\/li>\n<li style=\"font-weight: 400;\">Die Anzahl der <b>Kettenbriefe in Gro\u00dfbuchstaben<\/b>.<\/li>\n<li style=\"font-weight: 400;\">Die Anzahl der <b>Ausrufezeichen<\/b>.<\/li>\n<li style=\"font-weight: 400;\">Die Anzahl der <b>Ausrufezeichenketten<\/b>.<\/li>\n<li style=\"font-weight: 400;\">Die Anzahl der <b>Fragezeichen<\/b>.<\/li>\n<li style=\"font-weight: 400;\">Die Anzahl der <b>Fragezeichenketten<\/b>.<\/li>\n<li style=\"font-weight: 400;\">Die Anzahl der <b>Punkte ect (&#8230;)<\/b>.<\/li>\n<\/ul>\n<p>Hier ist eine neue Vorschau unseres Datensatzes nach der Erstellung der Metadaten :<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/02\/methadonnees.webp\" alt=\"\" width=\"512\" height=\"155\" \/><\/p>\n<p>Durch Gruppieren und Summieren jeder Spalte in diesem neuen Datensatz nach dem Label.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/02\/jeu-de-fonction.webp\" alt=\"\" width=\"512\" height=\"85\" \/><\/p>\n<p>Wir stellen fest, dass ein Tweet, wenn er aus Links oder E-Mail-Adressen besteht, dazu neigt, viel positiver zu sein.<\/p>\n<p>Da die erkl\u00e4renden Variablen nun bereit sind, verwendet zu werden, m\u00fcssen wir nur noch unser logistisches Regressionsmodell laufen lassen, um <b>die positiven und negativen Gef\u00fchle der Tweets zu klassifizieren.<\/b><\/p>\n<p>Hier ist der Vorhersagewert, den das Modell erzielt hat:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/02\/unnamed-2-1.webp\" alt=\"\" width=\"128\" height=\"26\" \/><\/p>\n<p>Das Ergebnis ist ein Vorhersagewert von ca. 60 %, was nicht besonders gut ist. Um diesen Wert zu verbessern, k\u00f6nnte man eine <b>Bag-of-Words-Darstellung <\/b>jedes Wortes in den Tweets verwenden, die <a href=\"https:\/\/liora.io\/le-word-embedding\">den Text<\/a> einfach als <a href=\"https:\/\/liora.io\/le-word-embedding\">Vektor<\/a> darstellt, der von einem Machine-Learning-Algorithmus verarbeitet werden kann.<\/p>\n<h3>ALTERNATIVE L\u00d6SUNG: AFINN<\/h3>\n<p>Eine andere M\u00f6glichkeit, die Stimmung eines Tweets zu klassifizieren, ist die Verwendung von in Python verf\u00fcgbaren Bibliotheken wie <b>Afinn.<\/b><\/p>\n<p>Das AFINN-Lexikon ist eine Liste englischer Begriffe, deren aktuelle Version \u00fcber 3.300 W\u00f6rter enth\u00e4lt. Jedes Wort ist mit einem Sentiment-Score verkn\u00fcpft, den wir mit der Methode <i>score der <\/i>Klasse <b>Afinn <\/b>erhalten k\u00f6nnen.<\/p>\n<p>Der Afinn-Score ist eine kategoriale Variable mit folgender Interpretationsregel:<\/p>\n<ul>\n<li style=\"font-weight: 400;\">Negative Gef\u00fchle: Punktzahl afinn &lt; 0<\/li>\n<li style=\"font-weight: 400;\">Neutrale Stimmung: Punktzahl afinn == 0<\/li>\n<li style=\"font-weight: 400;\">Positive Stimmung: Punktzahl afinn &gt; 0<\/li>\n<\/ul>\n<p>Wenden wir nun die Funktion Afinn auf unseren Datensatz an:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/02\/afinn.webp\" alt=\"\" width=\"454\" height=\"199\" \/><\/p>\n<p>Nun schauen wir uns an, ob Afinn effektiv ist:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/8\/2023\/02\/afinn-2.webp\" alt=\"\" width=\"422\" height=\"111\" \/><\/p>\n<p>Wie du sehen kannst, ist Afinn besonders leistungsstark und hat die beiden oben genannten Tweets kategorisch als negativ eingestuft.<\/p>\n<h3>SCHLUSSFOLGERUNG:<\/h3>\n<p>In diesem Artikel haben wir wieder einmal gesehen, wie m\u00e4chtig NLP ist, wenn es darum geht, die Stimmung in Tweets zuverl\u00e4ssig zu klassifizieren.<\/p>\n<p><iframe title=\"\ud83d\udca1Qu&#039;est ce que le NLP - Natural Language Processing ? Comment s&#039;y former ?\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/P_bYAOdUQHY?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n<p>Diese Twitter-Stimmungsanalyse k\u00f6nnte mehrere Anwendungsbereiche haben, von denen hier einige spezifische Beispiele genannt werden:<\/p>\n<ul>\n<li style=\"font-weight: 400;\"><b>Social Media Monitoring: Das Aufsp\u00fcren von <\/b>Tweets mit negativen Gef\u00fchlen k\u00f6nnte helfen, die Bel\u00e4stigung und den Gewaltausbruch auf Twitter zu reduzieren.<\/li>\n<\/ul>\n<ul>\n<li style=\"font-weight: 400;\"><b>Politische Kampagnen: <\/b>Die Stimmungsanalyse auf Twitter k\u00f6nnte die Beliebtheit eines politischen Kandidaten analysieren und so z. B. den Sieger einer Pr\u00e4sidentschaftswahl vorhersagen.<\/li>\n<\/ul>\n<p><b>Kundenbindung eines Unternehmens: <\/b>Die Stimmungsanalyse auf Twitter verfolgt, was \u00fcber ein von einem Unternehmen verkauftes Produkt oder eine Dienstleistung gesagt wird, und kann so helfen, ver\u00e4rgerte Kunden zu erkennen. Das Unternehmen kann so<\/p>\n<p><b>Wenn dir dieser Artikel gefallen hat, melde dich f\u00fcr unseren Newsletter an und werde \u00fcber neue Artikel sofort benachrichtigt.<\/b><\/p>\n<p><a role=\"button\" href=\"https:\/\/liora.io\/de\/blog-de#formnewsletter\"><br \/>\nNewsletter abonnieren<br \/>\n<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Twitter wird von Hunderten Millionen Menschen auf der ganzen Welt genutzt. Genauer gesagt, bel\u00e4uft sich die aktuelle Sch\u00e4tzung auf etwa 330 Millionen monatlich aktive Nutzer und 145 Millionen t\u00e4glich aktive Twitterer. Eine weitere interessante Zahl: 63 % der weltweiten Twitter-Nutzer sind zwischen 35 und 65 Jahre alt. Das Ziel dieses Artikels ist es, eine explorative [&hellip;]<\/p>\n","protected":false},"author":47,"featured_media":170299,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"editor_notices":[],"footnotes":""},"categories":[2420],"class_list":["post-170298","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-machine-learning"],"acf":[],"_links":{"self":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts\/170298","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/users\/47"}],"replies":[{"embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/comments?post=170298"}],"version-history":[{"count":1,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts\/170298\/revisions"}],"predecessor-version":[{"id":220321,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/posts\/170298\/revisions\/220321"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/media\/170299"}],"wp:attachment":[{"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/media?parent=170298"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/liora.io\/de\/wp-json\/wp\/v2\/categories?post=170298"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}