Stimmungsanalyse mit Node.js

Blog

In diesem Tutorial werden wir untersuchen, was Sentiment-Analyse ist, warum sie nützlich ist und ein einfaches Programm in Node.js erstellen, das die Sentiment-Analyse von Reddit-Kommentaren analysiert.




Was es ist

Die Stimmungsanalyse ist der Prozess des Extrahierens von Schlüsselsätzen und Wörtern aus einem Text, um die Einstellung und Emotionen des Autors zu verstehen. Warum ist es also nützlich? Unternehmen können damit fundiertere Marketingentscheidungen treffen. Sie können beispielsweise Produktbewertungen, Feedback und soziale Medien analysieren, um ihren Ruf zu verfolgen. Darüber hinaus können soziale Netzwerke die Stimmungsanalyse verwenden, um Inhalte von schlechter Qualität auszusortieren.




Wie es funktioniert

Es gibt zwei Hauptansätze zur Sentiment-Erkennung: wissensbasiert und statistisch.



Wissensbasiert Ansätze vergleichen normalerweise Wörter im Text mit einer definierten Liste von negativen und positiven Wörtern. Finn Årup Nielsen von der Universität Dänemark veröffentlicht AFINN , eine Liste positiver und negativer Wörter und jeweils eine Größenbewertung auf einer Skala zwischen -5 und 5. Zum Beispiel hat Düsternis eine Punktzahl von -1, während schrecklich eine Punktzahl von -3 hat. Die Punktzahl aller bekannten Wörter wird addiert, um die Gesamtstimmung des Textes zu bestimmen.

Ist Barnbridge Crypto eine gute Investition?

Statistisch Ansätze nutzen maschinelles Lernen, indem sie bekannte Stimmungen analysieren und das Unbekannte basierend auf den Bekannten bestimmen. Amazon könnte beispielsweise ein Machine-Learning-Modell erstellen, das den Text und die 1- bis 5-Sterne-Bewertung jeder Produktbewertung analysiert. Dann könnten sie eine Annahme über die Sternebewertung einer neuen Rezension treffen, die noch keine Sternebewertung hat.

Bei jedem Ansatz wird in der Regel jedem analysierten Textkörper eine Punktzahl zugewiesen. Eine negative Punktzahl bedeutet, dass der Text eine überwiegend negative Einstellung hat, und eine positive Punktzahl bedeutet, dass der Text eine überwiegend positive Einstellung hat.


Potenzielle Probleme

Bei der Textanalyse können einige Herausforderungen auftreten. Aus diesem Grund wird die Sentiment-Analyse nie ganz genau sein. Hier ist eine kurze Liste möglicher Szenarien, deren Analyse schwierig sein kann:

  • Doppelte Negative : Ich mag das Laufen nicht
  • Invertierte doppelte Negative : Nicht trainieren zu gehen ist nicht so mein Ding
  • Adverb modifizierendes Adjektiv : ICH Ja wirklich hasse es, wenn mich Leute unterbrechen
  • Möglicher Sarkasmus : Ich liebe das Laufen mit einer Knieverletzung
  • Slang-Begriffe : Er lief ein krankes Rennen!

Unser Projekt

Wir werden eine Node.js-App erstellen, die die Stimmung von Kommentaren aus a . berechnet Reddit-Beitrag fragt, wie die Tage der Leute verlaufen, und zeigt die Ergebnisse dann auf einer Webseite an.

Wir erstellen a Node.js app, also stellen Sie sicher, dass Sie sie installiert haben. Dann:

  • Erstellen Sie einen leeren Ordner
  • cd in dieses Verzeichnis (mit |_+_| zum Beispiel)
  • laufen |_+_| um den Erstellungsassistenten zu durchlaufen
  • Installieren Sie die Abhängigkeiten, die wir von npm benötigen, indem Sie |_+_| . ausführen
  • Laden Sie die . herunter Kommentare.json Datei und legen Sie sie in den Ordner, den Sie erstellt haben

Dateistruktur

Nachdem unsere Abhängigkeiten installiert sind, erstellen und öffnen wir ein |_+_| Datei in dem von Ihnen erstellten Ordner.

cd ~/Desktop/folder

Was macht diese Datei gerade? Der erste Block richtet Express ein, eine Webserver-Bibliothek. Der zweite Block weist das Programm an, unsere Sentiment-Analyse-Bibliothek und die JSON-Datendatei der Reddit-Kommentare zu importieren. Der letzte Block startet unseren Server und sagt uns, auf welchem ​​Port er lauscht. Der Server kann jedoch nichts anzeigen, da wir noch keine Routen für Express definiert haben.

Die Node-Bibliothek, die wir für die Sentimentanalyse verwenden, |_+_|, hat Dokumentation das sagt uns, wie wir es verwenden können:

npm init

Diese Bibliothek verwendet AFINN-111, das die Bewertungen von 2477 Wörtern und Phrasen hat. Die Bibliothek betrachtet einfach die Wörter im Parameter des |_+_| Funktion und vergleicht jede mit AFINN-111. Wenn ein Wort wie nicht oder nicht vor dem Wort steht, wird der absolute Wert der Punktzahl verwendet. Zum Beispiel hat ängstlich eine Punktzahl von -2, während nicht ängstlich eine Punktzahl von 2 hat.

Dabei handelt es sich keineswegs um eine umfassende Bibliothek, aber sie ist schnell zu implementieren, läuft schnell und arbeitet zuverlässig an einfachen Beispielen.

Lassen Sie uns eine Funktion erstellen, die alle Reddit-Kommentare durchläuft und die |_+_| . verwendet Funktion, um einen Stimmungswert zu erhalten, und speichert diesen Wert im |_+_| Array.

npm install express ml-sentiment

Nun, unser |_+_| Variable ist ein Array von Objekten mit den |_+_|, |_+_|, |_+_|, |_+_| und |_+_| Schlüssel. So sieht beispielsweise ein Objekt im Array aus:

server.js

Als Nächstes definieren wir zwei Routen in Express, die unsere |_+_| . senden Daten auf einer Webseite. Routen müssen nach |_+_| . definiert werden definiert ist, aber vor |_+_| wird genannt.

Schriftgröße der Chrome-Lesezeichenleiste
ml-sentiment

Diese erste Route besagt, dass, wenn die |_+_| Verzeichnis eine GET-Anfrage erhält, sollte Express die |_+_| . senden Datei. Die zweite Route besagt, dass, wenn die |_+_| Verzeichnis eine GET-Anfrage erhält, sollte Express eine JSON-Antwort des |_+_| . senden Variable.

So funktioniert das |_+_| Datei sieht jetzt aus:

.classify

Es funktioniert noch nicht! Wir haben die |_+_| . nicht erstellt Datei noch. Erstellen Sie eine neue Datei namens |_+_|. Codieren Sie dies in die Datei:

ml.classify







Demo zur Stimmungsanalyse

















Gefühl Punktzahl Autor Kommentar



var-Anfrage = new XMLHttpRequest();
request.open(‘GET’, ‘/data’, true);

redditComments



Wie funktioniert das? Auf der HTML-Seite ist ein Skript definiert, das eine Webanfrage an |_+_| sendet und für jede von uns analysierte Stimmung eine neue Zeile in einer Tabelle erstellt.

Alles ist gut zu gehen! Um Ihr Programm auszuführen, gehen Sie zurück zum Terminal und führen Sie |_+_| aus. Stellen Sie sicher, dass Sie sich noch im Verzeichnis Ihres Projekts befinden. Gehen Sie nun zu Ihrem Browser und öffnen Sie |_+_|. Sie sollten unsere neue Webseite mit der Stimmung jedes Reddit-Kommentars sehen!

Beachten Sie, wie einige Kommentare Negationen enthalten, z. B. nicht schlecht, und die Stimmung einen positiven Wert hat. Dies liegt daran, dass die von uns verwendete Sentimentbibliothek grundlegende Unterstützung für die Negation bietet.

Danke fürs Lesen

Wenn dir dieser Beitrag gefallen hat, teile ihn mit all deinen Programmierfreunden!

Folge uns auf Facebook | Twitter

Erfahren Sie mehr

Der komplette Node.js-Entwicklerkurs (3. Auflage)

Angular & NodeJS - Der MEAN Stack Guide

NodeJS - The Complete Guide (inkl. MVC, REST APIs, GraphQL)

Node.js: Der vollständige Leitfaden zum Erstellen von RESTful-APIs (2018)

Lernen und verstehen Sie NodeJS

MERN Stack von vorne nach hinten: Full Stack React, Redux & Node.js

Frontend-Entwicklerhandbuch 2019

Best Practices für die Verwendung von TypeScript mit Node.js

Einführung in Node.js 12

Erstellen einer RESTful Web API mit Node.js und Express.js von Grund auf neu

Node, Express, React.js, Graphql und MongoDB CRUD-Webanwendung

Restful API mit NodeJS, Express, PostgreSQL, Sequelize, Travis, Mocha, Overalls und Code Climate

Ein Anfängerleitfaden zu npm – dem Node Package Manager

Erstellen einer REST-API mit Nodejs / MongoDB /Passport /JWT

reagieren native numerische Eingabe

Ursprünglich veröffentlicht am https://enlight.nyc

#node-js

enlight.nyc

Stimmungsanalyse mit Node.js

In diesem Tutorial werden wir untersuchen, was Sentiment-Analyse ist, warum sie nützlich ist und ein einfaches Programm in Node.js erstellen, das die Sentiment-Analyse von Reddit-Kommentaren analysiert.