Erstellen einer Twitter-Stimmungsvisualisierung in Echtzeit mit Emojis

Einführung

Es war ein Donnerstag und die Oscar-Verleihung fand am Sonntag statt. Eine Idee kam auf: Könnten wir die Emotionen der Menschen auf Twitter während der Oscar-Verleihung mit Emojis herausfinden, damit Coca-Cola benutzerdefinierte Tweets erstellen könnte? Ich hatte vier Tage Zeit, um es zu erledigen, und ich tat es. So wurde es bewerkstelligt, ohne eine Nacht Schlaf zu verlieren.

Ich habe auch viel aus dieser Erfahrung gelernt, weshalb ich darüber schreiben wollte. Die wichtigsten Lektionen waren:

  • Die Wahl der richtigen Schritte ist entscheidend für eine pünktliche Lieferung.
  • Der Entwicklungsprozess ist wichtiger als der Code.
  • Nehmen Sie niemals Dinge an, bevor Sie mit einer Aufgabe beginnen.
  • Kleine Schritte. Es ist viel einfacher, früher im Spiel einen kleinen Schritt zurückzugehen, als nach dem Ausgeben
    eine ganze Woche an einer Aufgabe.

Was war die Herausforderung

Die Herausforderung bestand darin, in einer winzigen Zeitspanne eine Datenvisualisierung von Tweets zu erstellen
Emotionen basierend auf Emojis – und das in Echtzeit. Das Team bestand aus mir, der sich um das Backend kümmerte, und einem Frontend-Entwickler, der Pair Programming durchführte.

Wir mussten uns mit dem Twitter-Stream verbinden, jeden Tweet in PT-BR über die Oscars abrufen, ihn parsen, die Emotion erkennen und auf einer Visualisierung anzeigen. Das Projekt würde in einem Coca-Cola War Room Dashboard für alle sichtbar sein.

Die richtigen Schritte zum Erfolg

Wir haben dort angefangen, wo wir mehr Angst und Zweifel hatten: Emotionen aus Tweets basierend auf Emojis zu analysieren. Danach können wir sehen, was der nächste Schritt ist.

Wir beginnen eine Aufgabe nie auf der Grundlage von Annahmen, und das war sehr wichtig für
eine kleine Frist. Annahmen könnten uns aus der Bahn werfen und dazu führen, dass wir uns stark weiterentwickeln
von unwichtigem Zeug.

Eine ausgezeichnete Wahl, die wir getroffen haben, war nur das Design
Serverstruktur, nachdem Sie genau verstanden haben, wie sich die Twitter-API verhält und wie
groß kann es werden. Am Ende war es nicht so groß, wie wir es uns vorgestellt hatten und ein einziges
Die Heroku-Instanz könnte den Stream verarbeiten.

Ich weiß, es ist beängstigend, Zeit mit dem Testen und Überprüfen von Dingen zu “verschwenden”, wenn Sie Zeit haben
eine kurze Frist, aber es ist nie eine Verschwendung. Also Tests schreiben, lesen
Dokumentation, und probieren Sie Dinge aus, bevor Sie mit der Aufgabe beginnen.

Unser Stack

Wir haben verwendet, was wir regelmäßig verwenden. Wir hatten keine Zeit zum Experimentieren und
Aus diesem Grund haben wir verwendet Python und Django.

Python ist großartig mit NLP und hat Bibliotheken bereit, Ihnen zu helfen. Auch viele Data Scientists verwenden es. Außerdem habe ich sogar einige Code-Snippets online gefunden, die sehr geholfen haben!

Wie ich bereits sagte, ist der erste Schritt immer, Sie zu verstehen
Problem besser. Wir begannen mit der Suche, ob jemand es bereits getan hat, und zum Glück haben wir einen gefunden Implementierung in Python, das verwendet wird Pandas.

Wir haben diese Bibliothek verwendet, um das Gesamtvorkommen jedes Emojis in einem Text zu zählen. Damit könnten wir die Emojis in Emotionen umwandeln, indem wir ein „Emoji to
Wörterbuch der Emotionen.”

Die Daten-nämlich

Nachdem Text mithilfe von Emojis in Emotionen umgewandelt wurde, bestand der nächste Schritt darin, eine Datenvisualisierung dafür zu erstellen. Wir wussten, dass viele Grafiken für diese Aufgabe leistungsfähig sein könnten, aber wir hatten keine Zeit zum Experimentieren. Also wählen wir die vielseitigste Grafik der Welt: Balkendiagramme!

Es war wichtig, das Diagramm im Voraus zu planen, damit wir sehen konnten, welche Art von Daten
Struktur wäre besser zu verwenden. Auf diese Weise könnten wir Python die
Verantwortung dafür, die Daten mit der richtigen Struktur zu speichern, anstatt dies tun zu müssen
es in JavaScript. D3.js würde die Diagramme genau richtig bauen.

Die Web-App

Wir wissen bereits, wie wir die Tweets parsen und wie wir sie anzeigen werden, also konnten wir endlich unser Django-Projekt starten.

Ich beschloss, die Datenbank als Mittelsmann zwischen dem Front-End und dem Twitter-Stream zu verwenden, damit wir die Tweets erhalten, analysieren, in der Datenbank speichern und unsere API die Tweets von dort abrufen kann.

Da wir am Ende begonnen haben, haben wir eine Datenstruktur aufgebaut, sodass wir eine Abfrage in der Datenbank verwenden konnten, um die Daten zu aggregieren. Das schwere Heben würde in der Datenbank erledigt, was viel schneller ist als die Verwendung von Python.

Die Datenstruktur

Da wir uns für ein Balkendiagramm entschieden haben, mussten unsere Daten in erster Linie eine Zusammenfassung sein
die Gesamtzahl der Emoticons zu einem bestimmten Zeitpunkt. Es war so etwas wie
Dies:

{
  'ANGRY': 4,
  'LOVE': 10,
  'HAPPY': 2,
  ...
}

Um dies zu erreichen, haben wir eine Zählung der gesamten Emotionen jedes Tweets gespeichert, um sie später mit Django abzufragen annotate und bekomme genau das. Es ist wichtig, dies zu beachten, da wir dies in einer relativ großen Datenbank tun müssen db_index hat uns sehr geholfen!

Tweets abrufen

Wir verwendeten Tweepy um sich mit Twitter zu verbinden. Es ist sehr hilfreich, Bibliotheken zu haben, die Ihnen dienen, insbesondere bei bekannten APIs, da sie einige komplexe Probleme und Vorbehalte behandeln.

In unserem Fall, wo wir die verwenden mussten Twitter-Streaming-APIwar die Bibliothek sehr praktisch, weil wir uns keine Gedanken darüber machen mussten, eine Verbindung aufrechtzuerhalten, zu wissen, was die beste Strategie für den asynchronen Umgang mit Tweets ist, oder die beste herauszufinden
Weg, es in Python und Django zu tun.

Alles war schon da. Wir mussten nur einen Django-Befehl einrichten, um das zu starten, was sie a nannten
Stream und wir waren fertig.

Einsetzen

Wir haben Heroku für dieses Projekt verwendet, hauptsächlich weil alle anderen Projekte dort waren und weil wir kein DevOps-Team hatten.

Die Verwendung von Heroku ist großartig, da es einfacher ist, die App oder Postgres bei Bedarf zu skalieren.

Die Bereitstellung dort ist schnell und das Verfolgen von Metriken ist einfacher.
Unser Setup dort bestand aus einem Worker, der den Django-Befehl ausführte, und einem anderen
Ausführen der Web-App. Leicht luftig.

Der große Tag

Am Tag der Oscar-Verleihung waren wir entspannt, weil wir es bereits mit getestet hatten
verschiedene heiße Trendthemen und die App lief reibungslos.

Die Ergebnisse waren beeindruckend – das Team hatte Echtzeit-Feedback darüber, was
Die Stimmung war während der Veranstaltung.

Ein besonderer Fall war faszinierend: Lady Gaga war es
sangen, und zuerst war das Lied traurig, also waren auch alle traurig. Später, es
drehte, und die Emotionen im Armaturenbrett änderten sich sofort in fröhlich. Es
Es war sehr schön zu sehen, dass die App in Echtzeit funktioniert.

Vom POC bis zum Vertrieb

Nach diesem erfolgreichen Experiment wusste das Unternehmen, dass es einen Wert hatte
Produkt an seinen Händen und fing an, es anderen potenziellen Kunden zu zeigen. Ich musste eine App, die für die Arbeit mit einer einzelnen Heroku-Instanz ohne Anmeldung konzipiert war, mit bestimmten Markenfarben und Logos in ein SaaS-Produkt umwandeln.

Um die aktuelle Begeisterung aufrechtzuerhalten, bestand unser erster Schritt darin, das Produkt zu transformieren
ein White-Label-Projekt. Für jeden neuen Kunden haben wir ein völlig neues Git erstellt
Verzweigung und Heroku-Instanz mit benutzerdefinierten ENV-Variablen. Aus diesem Grund haben wir
es geschafft, benutzerdefinierte Instanzen dieses Produkts vielen Kunden vorzuführen und
sogar einen verkauft.

Übrigens können ENV-Variablen in Heroku sehr hilfreich sein. Sie können sich schnell ändern
sie über die Benutzeroberfläche, die wesentliche Dinge in Ihrer App ändern kann – in
unser Fall, das Farbschema, der Markenname und das Logo.

Danach haben wir das Projekt in zwei Teile geteilt. Einer ist
der Admin, wo sich der Benutzer angemeldet und eine neue Suche erstellt hat, und der andere ist der
Front-End und dem Worker, der mit der API verbunden ist.

Der herausfordernde Teil bestand darin, einen Weg zu finden, die Konfigurationen und die Worker zu trennen, da jetzt alles in Heroku ENV „fest codiert“ ist.

Der Verwaltungsteil wurde in ein neues Projekt in Django umgewandelt, das mit unserem SSO verbunden ist. Es war ein einfaches CRUD, bei dem der Benutzer nur eine Suche erstellen kann.

Diese Einschränkung bestand darin, dass wir früher starten und den Instanzteil manuell ausführen konnten, was bedeutete, dass wir jedes Mal, wenn ein Client eine neue Suche erstellte, eine E-Mail mit den Einstellungen zum Einrichten und Bereitstellen einer neuen Heroku-App für das Front-End und den Worker erhielten .

Davon abgesehen wussten wir, dass Heroku eine API hatte, die wir später implementieren konnten, um bei Bedarf alles automatisch zu machen.

Der Worker und das Front-End waren das ursprüngliche Projekt, aber statt zu bekommen
die Konfiguration aus einem ENV, es hat die Konfiguration aus dem anderen Projekt über API erhalten. Die einzige Einstellung im ENV war die SearchID, die der Client gerade erstellt hat.

Dies
Die Verbindung erfolgte über SSL und HTTP Basic. Während der Entwicklung haben wir
herausgefunden, dass die Entwicklung einer App mit einem anderen Projekt als Abhängigkeit war
besonders kritisch.

Verwendung mehrerer Back-Ends

Eine Alternative zum Lösen der Abhängigkeit zwischen dem Front-End und der Admin-App war die Verwendung einer Lösung, um die gesamte Entwicklungsumgebung insgesamt zu booten, aber ich
mochte die Idee nicht, diesem Projekt weitere Dinge hinzuzufügen.

Die Lösung bestand darin, zwei Back-Ends zu erstellen, eines, das mit der API verbunden war und das
default für die Produktion und eine andere, die die Konfiguration von ENV erhalten hat. Es ist ein
gute Lösung, weil Django so etwas bereits verwendet, um beispielsweise E-Mails zu versenden.

Diese Art von Entscheidung muss hervorgehoben werden, weil sie das Projekt gemacht hat
auf Dauer einfacher zu pflegen.

Fazit

Später hatte das Produkt weniger Anfragen und wir stoppten die Entwicklung bei
diese Phase. Wenn ich die Dinge einfach halte, fühle ich mich sogar wohler, wenn ich das weiß
Wenn das Produkt als SaaS nicht erfolgreich war, haben wir nie mehr Zeit und Geld ausgegeben als
notwendig.

Ich hoffe, meine Erfahrung kann Ihnen bei Ihren Projekten helfen.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *