Heim > Backend-Entwicklung > PHP-Tutorial > So analysieren Sie Tweet -Gefühle mit maschinellem PHP -Lernen

So analysieren Sie Tweet -Gefühle mit maschinellem PHP -Lernen

Lisa Kudrow
Freigeben: 2025-02-09 10:09:10
Original
934 Leute haben es durchsucht

How to Analyze Tweet Sentiments with PHP Machine Learning

Dieser Artikel wurde von Wern Ancheta überprüft. Vielen Dank an alle Peer -Rezensenten bei SitePoint für die Erhöhung der Inhalte von SitePoint -Inhalten!


In letzter Zeit scheint jeder über maschinelles Lernen zu sprechen. Ihr Social -Media -Stream ist mit Posts über ML, Python, Tensorflow, Spark, Scala, Go und mehr gefüllt.

Ja, was ist mit maschinellem Lernen und PHP? Glücklicherweise war jemand verrückt, diese Frage nicht nur zu stellen, sondern auch eine allgemeine Bibliothek für maschinelles Lernen zu entwickeln, die wir in unserem nächsten Projekt verwenden können. In diesem Beitrag werden wir einen Blick auf PHP-ML-eine maschinelle Lernbibliothek für PHP-werfen, werden wir eine Sentiment-Analyse-Klasse schreiben, die später für unsere eigenen Chatbots oder Twitterbots wiederverwendet werden kann. Die Hauptziele dieses Artikels sind:

  • allgemeine Konzepte in Bezug auf maschinelles Lernen und Stimmungsanalyse
  • erforschen
  • Überprüfen Sie die Funktionen und Nachteile von PHP-ML
  • Definieren Sie das Problem, mit dem wir mit
  • umgehen werden
  • beweisen, dass der Versuch, maschinelles Lernen in PHP zu machen
Lesen Sie bessere PHP -Entwicklungstools und -Technologien, um Sie zu einem besseren Entwickler zu machen!

Lesen Sie dieses Buch lesen Sie dieses Buch! How to Analyze Tweet Sentiments with PHP Machine Learning How to Analyze Tweet Sentiments with PHP Machine Learning

Schlüsselpunkte

    PHP-ML ist eine universelle Bibliothek für maschinelles Lernen für maschinelle Lernen, die für kleine Anwendungen wie die Stimmungsanalyse geeignet sind.
  • Dieses Tutorial zeigt, wie PHP-ML verwendet wird, um ein Stimmungsanalyse-Tool zu erstellen, das der Analyse von Tweets widmet, wobei sie sich auf überwachte Lerntechniken konzentrieren.
  • Der Schlüsselschritt in der Stimmungsanalyse besteht darin, die Daten zu erstellen, bei der relevante Funktionen und Beschriftungen aus dem Datensatz ausgewählt werden.
  • Textdaten erfordern eine spezifische Vorverarbeitung, z. B. Tokenisierung und Vektorisierung, um Tweets in Formate umzuwandeln, die für maschinelle Lernmodelle geeignet sind.
  • Der naive Bayes -Klassifizierer wird im Beispiel verwendet, weil er einfach und effizient klassifizierte Daten behandelt.
  • Dieser Artikel betont die Bedeutung eines sauberen und relevanten Datensatzes für Schulungsmodelle, um eine genaue emotionale Klassifizierung sicherzustellen.
Was ist maschinelles Lernen?

maschinelles Lernen ist eine Untergruppe künstlicher Intelligenz, die sich darauf konzentriert, "die Fähigkeit von Computern zu geben, ohne explizite Programmierung zu lernen". Dies wird durch die Verwendung eines allgemeinen Algorithmus erreicht, der aus einem bestimmten Datensatz "gelernt" werden kann.

Eine gemeinsame Verwendung von maschinellem Lernen ist beispielsweise die Klassifizierung. Klassifizierungsalgorithmen werden verwendet, um Daten in verschiedene Gruppen oder Kategorien zu unterteilen. Einige Beispiele für Klassifizierungsanwendungen umfassen:

  • E -Mail -Spam -Filter
  • Marktsegment
  • Betrugserkennung

maschinelles Lernen ist ein allgemeiner Begriff für allgemeine Algorithmen, die viele verschiedene Aufgaben abdecken, und ist hauptsächlich in zwei Arten von Algorithmen unterteilt, je nach Lernmethode - überwachtes Lernen und unbeaufsichtigtes Lernen.

beaufsichtigtes Lernen

Im überwachten Lernen verwenden wir beschriftete Daten, um unseren Algorithmus zu trainieren, der das Format von Eingabefiele (Vektoren) annimmt, und die erforderlichen Ausgabewerte analysiert. der neue nicht markierte Datensatz.

Für den Rest dieses Beitrags werden wir uns auf das überwachte Lernen konzentrieren, weil es einfacher ist, Beziehungen zu erkennen und zu überprüfen. Daten markieren.

unbeaufsichtigtes Lernen

Diese Art des Lernens verwendet andererseits von Anfang an unbezeichnete Daten. Wir kennen den erforderlichen Ausgangswert des Datensatzes nicht, sodass der Algorithmus Schlussfolgerungen aus dem Datensatz ziehen kann.

php-ml

Kennen Sie PHP-ML, eine Bibliothek, die behauptet, eine neue Methode des maschinellen Lernens von PHP zu sein. Die Bibliothek implementiert Algorithmen, neuronale Netzwerke und Tools zur Datenvorverarbeitung, Kreuzvalidierung und Merkmalextraktion.

Ich gebe zuerst zu, dass PHP eine ungewöhnliche Wahl für maschinelles Lernen ist, da die Vorteile der Sprache für Anwendungen für maschinelles Lernen nicht sehr geeignet sind. Das heißt, nicht jede Anwendung für maschinelles Lernen muss Daten auf PEB-Ebene verarbeiten und viele Berechnungen durchführen-für einfache Anwendungen sollten wir in der Lage sein, PHP und PHP-ML zu verwenden.

Der beste Anwendungsfall für diese Bibliothek, das ich jetzt sehen kann, ist die Implementierung von Klassifikatoren, unabhängig davon, ob es sich um Spam -Filter oder Stimmungsanalyse handelt. Wir werden ein Klassifizierungsproblem definieren und Schritt für Schritt eine Lösung erstellen, um zu verstehen, wie PHP-ML in unserem Projekt verwendet wird.

Frage

Um ein Beispiel für den Prozess der Implementierung von PHP-ML und dem Hinzufügen von maschinellem Lernen zu unserer Anwendung zu geben, wollte ich ein interessantes Problem finden, und was gibt es Schöneres, als dies zu tun, als eine Twitter-Sentiment-Analyse-Klasse zu erstellen. Was ist mit Zeigen Sie den Klassifikator?

Eine der wichtigsten Anforderungen, die zum Erstellen eines erfolgreichen Projekts für maschinelles Lernen erforderlich sind, ist ein guter Startdatensatz. Datensätze sind von entscheidender Bedeutung, da sie es uns ermöglichen, unseren Klassifikator an klassifizierten Beispielen auszubilden. Welchen besseren Datensatz mit den jüngsten massiven Geräuschen um Fluggesellschaften gibt es besser, als Kunden -Tweets für Fluggesellschaften zu verwenden?

Zum Glück können wir dank Kaggle.io den Tweet -Datensatz bereits verwenden. Sie können diesen Link verwenden, um Twitter US Airlines Sentiment -Datenbank von ihrer Website

herunterzuladen

Lösung

Schauen wir uns zunächst den Datensatz an, an dem wir arbeiten werden. Der ursprüngliche Datensatz enthält die folgenden Spalten:

  • tweet_id
  • airline_sentiment
  • airline_sentiment_confidence
  • negativerseason
  • negativer Season_Confidence
  • Airline
  • airline_sentiment_gold
  • Name
  • negativer Season_gold
  • retweet_count
  • text
  • tweet_coord
  • tweet_created
  • tweet_location
  • user_timezone

und sieht aus wie das folgende Beispiel (eine Tabelle, die seitwärts scrolliert werden kann):

tweet_id airline_sentiment airline_sentiment_confidence negativereason negativereason_confidencenegativereason_confidenceairline airline_sentiment_gold Name negativerseason_gold retweet_count text tweet_coord tweet_creat ed tweet_location user_timezone 570306133677760513 Neutral 1.0 Virgin America Cairdin 0 @virginamerica Was @Dhepburn sagte. (US & Canada) 570301130888122368 Positiv 0,3486 0.0 Virgin America Jnardino 0 @virginamerica plus Sie haben Werbespots für die Erfahrung hinzugefügt… klebrig. Amerika YVonnalynn 0 @virginamerica Ich muss heute nicht bedeuten, dass ich eine weitere Reise machen muss! Jnardino 0 "@virginamerica Es ist wirklich aggressiv, widerwärtige" "Unterhaltung" in den Gesichtern Ihrer Gäste zu sprengen und sie haben wenig Rückgriff "2015-02-24 11:15:36 -0800 P ACIFIC TIME (US & CANADA) 570300817074462722 Negativ 1.0 Ich kann 1.0 Virgin America Jnardino 0 @virginamerica erzählen und es ist eine wirklich große schlechte Sache, 2015-02-24 11:14:45 -0800 Pacific Time (US & Canada) 570300767074181121 Negativ 1.0 NICHT 0,6842 VIRGIN America Jnardino zu sagen 0 “@virginamerica würde ernsthaft 30 US-Dollar für Sitze zahlen, die dieses Spiel nicht hatten. Positiv 0,6745 0.0 Virgin America cjmcGinnis 0 “@virginamerica Ja Fast jedes Mal, wenn ich vx fliege, wird dieser„ Ohrwurm “nicht verschwinden :)” 2015-02-24 11:13:57 -0800 San Francisco Ca Pacific Time (US & U & Kanada) 570300248553349120 Neutral 0,634 Virgin America Pilot 0 “@virginamerica hat dort eine Hauptmöglichkeit für Männer ohne Hüte verpasst 11:12:29 -0800 Los Angeles Pacific Time (US & Canada) Diese Datei enthält 14.640 Tweets, daher ist sie ein gutes Arbeitsdatensatz für uns. Mit der Anzahl der Spalten, die wir derzeit haben, haben wir mehr Daten als die Beispiele für praktische Zwecke.

  • text
  • airline_sentiment

Wo Text zu unserem Merkmal und unserer Fluggesellschaft wird, wird unser Ziel. Die verbleibenden Spalten können verworfen werden, da sie in unseren Übungen nicht verwendet werden. Beginnen wir mit der Erstellung des Projekts und initialisieren Sie den Komponisten mit der folgenden Datei:

<code>{
    "name": "amacgregor/phpml-exercise",
    "description": "Example implementation of a Tweet sentiment analysis with PHP-ML",
    "type": "project",
    "require": {
        "php-ai/php-ml": "^0.4.1"
    },
    "license": "Apache License 2.0",
    "authors": [
        {
            "name": "Allan MacGregor",
            "email": "amacgregor@allanmacgregor.com"
        }
    ],
    "autoload": {
        "psr-4": {"PhpmlExercise\": "src/"}
    },
    "minimum-stability": "dev"
}</code>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
<code>composer install
</code>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Wenn Sie eine Einführung in Komponisten benötigen, siehe hier.

Um sicherzustellen, dass wir es korrekt einrichten, erstellen wir ein schnelles Skript, mit dem unsere Datendatei tweets.csv geladen wird, und stellen Sie sicher, dass sie über die benötigten Daten verfügen. Kopieren Sie den folgenden Code als ReviewDataset.php im Projektroot -Verzeichnis:

<?php namespace PhpmlExercise;

require __DIR__ . '/vendor/autoload.php';

use Phpml\Dataset\CsvDataset;

$dataset = new CsvDataset('datasets/raw/Tweets.csv',1);

foreach ($dataset->getSamples() as $sample) {
    print_r($sample);
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Führen Sie nun das Skript mit PHP ReviewDataset.php aus. Sehen wir uns die Ausgabe an:

<code>Array( [0] => 569587371693355008 )
Array( [0] => 569587242672398336 )
Array( [0] => 569587188687634433 )
Array( [0] => 569587140490866689 )
</code>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Das sieht jetzt nutzlos aus, nicht wahr? Schauen wir uns die CSVDataset -Klasse an, um besser zu verstehen, was im Inneren passiert:

<?php 
    public function __construct(string $filepath, int $features, bool $headingRow = true)
    {
        if (!file_exists($filepath)) {
            throw FileException::missingFile(basename($filepath));
        }

        if (false === $handle = fopen($filepath, 'rb')) {
            throw FileException::cantOpenFile(basename($filepath));
        }

        if ($headingRow) {
            $data = fgetcsv($handle, 1000, ',');
            $this->columnNames = array_slice($data, 0, $features);
        } else {
            $this->columnNames = range(0, $features - 1);
        }

        while (($data = fgetcsv($handle, 1000, ',')) !== false) {
            $this->samples[] = array_slice($data, 0, $features);
            $this->targets[] = $data[$features];
        }
        fclose($handle);
    }
Nach dem Login kopieren
Nach dem Login kopieren

csvdataset Constructor nimmt 3 Parameter:

  • Dateipfad zur Quelle CSV
  • Geben Sie die Zahlen der Anzahl der Funktionen in der Datei
  • an
  • boolescher Wert, der angibt, ob die erste Zeile der Titel
  • ist

Wenn wir genau hinschauen, können wir sehen, dass die Klasse die CSV -Datei auf zwei interne Arrays abbildt: Samples und Ziele. Beispiele enthält alle von der Datei bereitgestellten Eigenschaften, während Ziele bekannte Werte (negativ, positiv oder neutral) enthält.

Basierend auf dem obigen Inhalt können wir sehen, dass das Format, das unsere CSV -Datei folgen muss, wie folgt lautet:

<code>| feature_1 | feature_2 | feature_n | target | </code>
Nach dem Login kopieren

Wir müssen einen sauberen Datensatz generieren, der nur die Spalten enthält, die wir benötigen, um weiter zu arbeiten. Nennen wir dieses Skript generateCleandataset.php:

<?php namespace PhpmlExercise;

require __DIR__ . '/vendor/autoload.php';

use Phpml\Exception\FileException;

$sourceFilepath         = __DIR__ . '/datasets/raw/Tweets.csv';
$destinationFilepath    = __DIR__ . '/datasets/clean_tweets.csv';

$rows =[];

$rows = getRows($sourceFilepath, $rows);
writeRows($destinationFilepath, $rows);


/**
 * @param $filepath
 * @param $rows
 * @return array
 */
function getRows($filepath, $rows)
{
    $handle = checkFilePermissions($filepath);

    while (($data = fgetcsv($handle, 1000, ',')) !== false) {
        $rows[] = [$data[10], $data[1]];
    }
    fclose($handle);
    return $rows;
}

/**
 * @param $filepath
 * @param string $mode
 * @return bool|resource
 * @throws FileException
 */
function checkFilePermissions($filepath, $mode = 'rb')
{
    if (!file_exists($filepath)) {
        throw FileException::missingFile(basename($filepath));
    }

    if (false === $handle = fopen($filepath, $mode)) {
        throw FileException::cantOpenFile(basename($filepath));
    }
    return $handle;
}

/**
 * @param $filepath
 * @param $rows
 * @internal param $list
 */
function writeRows($filepath, $rows)
{
    $handle = checkFilePermissions($filepath, 'wb');

    foreach ($rows as $row) {
        fputcsv($handle, $row);
    }

    fclose($handle);
}
Nach dem Login kopieren

Nichts ist zu kompliziert, es ist gerade genug, um den Job zu erledigen. Lassen Sie es uns mit PHP GenerateCleandaSet.php ausführen.

Zeigen wir nun das Skript reviewDataset.php auf einen sauberen Datensatz:

<code>Array
(
    [0] => @AmericanAir That will be the third time I have been called by 800-433-7300 an hung on before anyone speaks. What do I do now???
)
Array
(
    [0] => @AmericanAir How clueless is AA. Been waiting to hear for 2.5 weeks about a refund from a Cancelled Flightled flight & been on hold now for 1hr 49min
)</code>
Nach dem Login kopieren

BAM! Dies sind die Daten, die wir verwenden können! Bisher haben wir einfache Skripte zum Manipulieren von Daten erstellt. Als nächstes werden wir anfangen, eine neue Klasse unter SRC/Klassifizierung/sentimentanalysis.php zu erstellen.

<?php namespace PhpmlExercise\Classification;

/**
 * Class SentimentAnalysis
 * @package PhpmlExercise\Classification
 */
class SentimentAnalysis { 
    public function train() {}
    public function predict() {}
}
Nach dem Login kopieren

Unsere Emotionsklasse muss zwei Funktionen in unserer Emotionsanalyse -Klasse verwenden:

  • Eine Trainingsfunktion, die unseren Datensatz verwendet, um Proben und Etiketten und einige optionale Parameter zu trainieren.
  • Eine Vorhersagefunktion, die einen unbezeichneten Datensatz aufnimmt und eine Reihe von Beschriftungen basierend auf den Trainingsdaten zuweist.

Erstellen Sie im Stammverzeichnis des Projekts ein Skript mit dem Namen klassifyTweets.php. Wir werden dieses Skript verwenden, um unsere Sentiment -Analyse -Klasse zu instanziieren und zu testen. Hier ist die Vorlage, die wir verwenden werden:

<?php 
namespace PhpmlExercise;
use PhpmlExercise\Classification\SentimentAnalysis;

require __DIR__ . '/vendor/autoload.php';

// 步骤 1:加载数据集

// 步骤 2:准备数据集

// 步骤 3:生成训练/测试数据集

// 步骤 4:训练分类器

// 步骤 5:测试分类器的准确性
Nach dem Login kopieren

Schritt 1: Laden Sie den Datensatz

Wir haben bereits Code, mit dem CSV in unseren früheren Beispielen in das Dataset -Objekt geladen werden kann. Wir werden den gleichen Code verwenden und einige Verbesserungen vornehmen:

<?php ...
use Phpml\Dataset\CsvDataset;
...
$dataset = new CsvDataset('datasets/clean_tweets.csv',1);

$samples = [];
foreach ($dataset->getSamples() as $sample) {
    $samples[] = $sample[0];
}
Nach dem Login kopieren

Dies erzeugt ein flaches Array, das nur Funktionen enthält (in diesem Fall den Tweet -Text), mit dem wir unseren Klassifikator trainieren werden.

Schritt 2: Bereiten Sie den Datensatz

vor

Nun ist es nicht nützlich oder genau, den Originaltext zu haben und diesen Text an den Klassifikator zu übergeben, da jeder Tweet im Wesentlichen unterschiedlich ist. Glücklicherweise gibt es Möglichkeiten, Text zu verarbeiten, wenn Sie versuchen, Klassifizierungs- oder maschinelles Lernalgorithmen anzuwenden. In diesem Beispiel werden wir die folgenden zwei Klassen verwenden:

  • Token Count Vectorizer: Dies konvertiert das Textbeispiel in einen Token Count -Vektor. Im Wesentlichen wird jedes Wort in unserem Tweet zu einer eindeutigen Nummer und verfolgt die Anzahl der in einem bestimmten Textspiel angezeigten Häufigkeit, mit der ein Wort angezeigt wird.
  • TF-IDF-Konverter: Term Frequenz-inverse-Dokumentfrequenz ist eine Abkürzung der Frequenz, eine numerische Statistik, die die Bedeutung eines Wortes für Dokumente in einer Sammlung oder Korpus widerspiegelt.

Beginnen wir mit dem Text Vectorizer:

<code>{
    "name": "amacgregor/phpml-exercise",
    "description": "Example implementation of a Tweet sentiment analysis with PHP-ML",
    "type": "project",
    "require": {
        "php-ai/php-ml": "^0.4.1"
    },
    "license": "Apache License 2.0",
    "authors": [
        {
            "name": "Allan MacGregor",
            "email": "amacgregor@allanmacgregor.com"
        }
    ],
    "autoload": {
        "psr-4": {"PhpmlExercise\": "src/"}
    },
    "minimum-stability": "dev"
}</code>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Wenden Sie als nächstes den TF-IDF-Konverter an:

<code>composer install
</code>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Unser Musterarray verwendet jetzt ein Format, das von unserem Klassifikator leicht verstanden werden kann. Wir sind noch nicht fertig, wir müssen jede Probe mit seinen entsprechenden Emotionen markieren.

Schritt 3: Generieren Sie den Trainingsdatensatz

Zum Glück deckt PHP-ML diese Anforderung bereits ab, und der Code ist sehr einfach:

<?php namespace PhpmlExercise;

require __DIR__ . '/vendor/autoload.php';

use Phpml\Dataset\CsvDataset;

$dataset = new CsvDataset('datasets/raw/Tweets.csv',1);

foreach ($dataset->getSamples() as $sample) {
    print_r($sample);
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Wir können diesen Datensatz weiterhin verwenden und unseren Klassifikator trainieren. Es fehlt uns jedoch der als Validierung verwendete Testdatensatz. Wir werden also ein wenig betrügen und unseren ursprünglichen Datensatz in zwei Teile aufteilt: einen Trainingsdatensatz und viel kleinere Daten zum Testen des Genauigkeitssatzes des Modells.

<code>Array( [0] => 569587371693355008 )
Array( [0] => 569587242672398336 )
Array( [0] => 569587188687634433 )
Array( [0] => 569587140490866689 )
</code>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Diese Methode wird als Kreuzvalidierung bezeichnet. Dieser Begriff stammt aus Statistiken und kann wie folgt definiert werden:

Kreuzvalidierung, manchmal als Rotationsschätzung bezeichnet, ist eine Modellüberprüfungstechnik, mit der die Ergebnisse der statistischen Analyse auf unabhängige Datensätze verallgemeinert werden. Es wird hauptsächlich für die Zielsetzung von Vorhersagen verwendet und möchte die Genauigkeit des Vorhersagemodells in der Praxis abschätzen. - Wikipedia.com

Schritt 4: Training des Klassifizierers

Schließlich sind wir bereit, die Sentimentanalyse -Klasse zurückzugeben und umzusetzen. Wenn Sie es noch nicht bemerkt haben, besteht ein großer Teil des maschinellen Lernens darin, Daten zu sammeln und zu manipulieren.

Um unsere Stimmungsanalyseklasse zu implementieren, haben wir drei verfügbare Klassifizierungsalgorithmen:

  • Support Vector Classification
  • Knalestes Nachbar
  • Natural Bayes

Für diese Übung werden wir den einfachsten verwenden, den naiven Bayes -Klassifizierer. Lassen Sie uns also weiterhin unsere Klasse aktualisieren, um die Zugmethode zu implementieren:

<?php 
    public function __construct(string $filepath, int $features, bool $headingRow = true)
    {
        if (!file_exists($filepath)) {
            throw FileException::missingFile(basename($filepath));
        }

        if (false === $handle = fopen($filepath, 'rb')) {
            throw FileException::cantOpenFile(basename($filepath));
        }

        if ($headingRow) {
            $data = fgetcsv($handle, 1000, ',');
            $this->columnNames = array_slice($data, 0, $features);
        } else {
            $this->columnNames = range(0, $features - 1);
        }

        while (($data = fgetcsv($handle, 1000, ',')) !== false) {
            $this->samples[] = array_slice($data, 0, $features);
            $this->targets[] = $data[$features];
        }
        fclose($handle);
    }
Nach dem Login kopieren
Nach dem Login kopieren

Wie Sie sehen, lassen wir PHP-ML das ganze schwere Heben für uns durchführen. Wir haben gerade eine schöne Abstraktion für unser Projekt erstellt. Aber woher wissen wir, ob unsere Klassifikatoren wirklich trainieren und arbeiten? Es ist Zeit, unsere Testsampuls und Testlabels zu verwenden.

Schritt 5: Testen Sie die Genauigkeit des Klassifikators

Wir müssen die Vorhersagemethode implementieren, bevor wir unseren Klassifikator weiter testen:

<code>{
    "name": "amacgregor/phpml-exercise",
    "description": "Example implementation of a Tweet sentiment analysis with PHP-ML",
    "type": "project",
    "require": {
        "php-ai/php-ml": "^0.4.1"
    },
    "license": "Apache License 2.0",
    "authors": [
        {
            "name": "Allan MacGregor",
            "email": "amacgregor@allanmacgregor.com"
        }
    ],
    "autoload": {
        "psr-4": {"PhpmlExercise\": "src/"}
    },
    "minimum-stability": "dev"
}</code>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

In ähnlicher Weise hat PHP-ML uns geholfen und all das schwere Heben für uns gemacht. Lassen Sie uns die Klasse ClassifyTweets entsprechend aktualisieren:

<code>composer install
</code>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Schließlich brauchen wir eine Möglichkeit, die Genauigkeit unseres Trainingsmodells zu testen. In unserem Fall interessieren wir uns für die Genauigkeit des Modells. Schauen wir uns den Code an:

<?php namespace PhpmlExercise;

require __DIR__ . '/vendor/autoload.php';

use Phpml\Dataset\CsvDataset;

$dataset = new CsvDataset('datasets/raw/Tweets.csv',1);

foreach ($dataset->getSamples() as $sample) {
    print_r($sample);
}
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

wir sollten etwas Ähnliches wie folgt sehen:

<code>Array( [0] => 569587371693355008 )
Array( [0] => 569587242672398336 )
Array( [0] => 569587188687634433 )
Array( [0] => 569587140490866689 )
</code>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Schlussfolgerung

Dieser Beitrag ist ein bisschen lang. Lassen Sie uns also überprüfen, was wir bisher gelernt haben:

  • von Anfang an einen guten Datensatz haben, ist für die Implementierung von Algorithmen für maschinelles Lernen unerlässlich.
  • Der Unterschied zwischen überwachtem Lernen und unbeaufsichtigtem Lernen.
  • Die Bedeutung und Verwendung von Kreuzvalidierung im maschinellen Lernen.
  • Vektorisierung und Transformation sind für die Vorbereitung von Textdatensätzen für maschinelles Lernen von wesentlicher Bedeutung.
  • So implementieren Sie die Twitter-Stimmungsanalyse mithilfe von Naive Bayes-Klassifikator von PHP-ML.

Dieser Artikel dient auch als Einführung in die PHP-ML-Bibliothek und hofft, Ihnen ein gutes Verständnis für die Funktionen der Bibliothek zu vermitteln und wie Sie sie in Ihre eigenen Projekte einbetten.

Schließlich ist dieser Artikel keineswegs umfassend, und es gibt immer noch viele Dinge zu lernen, zu verbessern und zu experimentieren;

    Ersetzen Sie den naiven Bayes -Algorithmus durch den Stützvektormaschinenalgorithmus.
  • Wenn Sie versuchen, gegen einen vollständigen Datensatz (14.000 Zeilen) auszuführen, können Sie die Speicherintensivität des Prozesses feststellen. Versuchen Sie, das Modell Persistenz zu implementieren, damit Sie nicht jedes Mal trainieren müssen, wenn Sie es betreiben.
  • Verschieben Sie die Datensatzgeneration in eine eigene Helferklasse.
Ich hoffe, Sie finden diesen Artikel nützlich. Wenn Sie einige Bewerbungsideen oder Fragen zu PHP-ML haben, können Sie sie im Kommentarbereich unten erwähnen!

FAQs zum maschinellen Lernen von PHP für Tweet Sentiment Analysis (FAQ)

Wie verbessert man die Genauigkeit der Stimmungsanalyse?

Verbesserung der Genauigkeit der Stimmungsanalyse beinhaltet eine Vielzahl von Strategien. Stellen Sie zunächst sicher, dass Ihre Schulungsdaten so sauber und relevant wie möglich sind. Dies bedeutet, dass nicht verwandte Daten wie Stoppwörter, Interpunktionsmarken und URLs gelöscht werden. Zweitens sollten Sie komplexere Algorithmen verwenden. Während naive Bayes -Klassifizierer ein guter Ausgangspunkt sind, können andere Algorithmen wie Support Vector Machines (SVMs) oder Deep -Learning -Modelle bessere Ergebnisse liefern. Erwägen Sie schließlich, einen größeren Datensatz für das Training zu verwenden. Je mehr Daten Ihr Modell lernen kann, desto genauer wird es.

Kann ich andere Sprachen als PHP für die Stimmungsanalyse verwenden?

Ja, Sie können andere Programmiersprachen für die Stimmungsanalyse verwenden. Python zum Beispiel ist zu einer beliebten Wahl für seine umfangreiche Bibliothek für maschinelles Lernen wie NLTK, TextBlob und Scikit-Learn geworden. PHP kann jedoch auch für die Stimmungsanalyse effektiv verwendet werden, insbesondere wenn Sie bereits mit der Sprache vertraut sind oder wenn Ihr Projekt auf dem PHP -Framework basiert.

Wie kann man mit Ironie und Antonymen in der emotionalen Analyse umgehen?

Die Fehlerbehebung von Ironie und Antonymen in der Stimmungsanalyse ist eine herausfordernde Aufgabe. Diese Sprachmerkmale beinhalten oft etwas, was das Gegenteil bedeutet, was für maschinelle Lernmodelle schwierig ist, um zu verstehen. Ein Ansatz besteht darin, komplexere Modelle zu verwenden, die den Kontext verstehen können, wie z. B. Deep -Learning -Modelle. Ein weiterer Ansatz besteht darin, ein spezielles satirisches Erkennungsmodell zu verwenden, das mit einem Datensatz satirischer Kommentare trainiert werden kann.

Wie kann ich die Stimmungsanalyse für andere Social -Media -Plattformen verwenden?

Die Prinzipien der Stimmungsanalyse können auf alle Textdaten angewendet werden, einschließlich Beiträgen anderer Social -Media -Plattformen. Der Hauptunterschied ist, wie Sie Daten sammeln. Jede Social -Media -Plattform verfügt über eine eigene API für den Zugriff auf Benutzerbeiträge. Sie müssen daher mit der API der Plattform vertraut sein, an der Sie interessiert sind.

Kann ich die Sentiment -Analyse für andere Sprachen als Englisch verwenden?

Ja, die Analyse der Stimmungsanalyse kann in jeder Sprache verwendet werden. Die Wirksamkeit der Analyse hängt jedoch von der Qualität Ihrer Trainingsdaten ab. Wenn Sie eine andere Sprache als Englisch verwenden, müssen Sie den Datensatz dieser Sprache verwenden, um Ihr Modell zu trainieren. Einige Bibliotheken für maschinelles Lernen unterstützen auch mehrere Sprachen direkt.

Wie visualisieren Sie die Ergebnisse der Stimmungsanalyse?

Es gibt viele Möglichkeiten, Ergebnisse der Stimmungsanalyse zu visualisieren. Ein häufiger Ansatz besteht darin, Balkendiagramme zu verwenden, um die Anzahl der positiven, negativen und neutralen Tweets anzuzeigen. Ein anderer Ansatz ist die Verwendung von Word Cloud, um die am häufigsten verwendeten Wörter in den Daten zu visualisieren. PHP verfügt über mehrere Bibliotheken zum Erstellen dieser Visualisierungen wie PCHART und GD.

Wie kann ich die Stimmungsanalyse in praktischen Anwendungen verwenden?

emotionale Analyse hat viele praktische Anwendungen. Unternehmen können es nutzen, um die Meinungen der Kunden zu ihren Produkten oder Dienstleistungen zu überwachen, Politiker können es nutzen, um öffentliche Meinungen zu politischen Fragen zu messen, und Forscher können sie nutzen, um soziale Trends zu untersuchen. Die Möglichkeiten sind endlos.

Wie kann man mit Emojis in der Stimmungsanalyse umgehen?

Emojis können wichtige emotionale Informationen übertragen. Daher ist es wichtig, sie in Ihre Analyse aufzunehmen. Eine Möglichkeit besteht darin, jedes Emoji durch seine Textbeschreibung zu ersetzen, bevor die Daten in das Modell eingeben. Es gibt Bibliotheken, die Ihnen dabei helfen können, dies zu tun, wie zum Beispiel von PHPs Emojione.

Wie kann man mit Rechtschreibfehlern in der Stimmungsanalyse umgehen?

Spurenfehler können eine Herausforderung bei der Stimmungsanalyse sein. Eine Möglichkeit besteht darin, einen Zauberspurprüfer zu verwenden, um den Fehler zu korrigieren, bevor die Daten in das Modell eingegeben werden. Ein anderer Ansatz besteht darin, Modelle zu verwenden, die Rechtschreibfehler wie Deep -Learning -Modelle umgehen können.

Wie kann ich mein Stimmungsanalysemodell auf dem neuesten Stand halten?

Auf dem neuesten Stand Ihres Stimmungsanalysemodells beinhaltet die Umschaffung des IT regelmäßig mit neuen Daten. Dies stellt sicher, dass Ihr Modell mit Sprachgebrauch und emotionalen Veränderungen synchronisiert ist. Sie können diesen Vorgang automatisieren, indem Sie einen Plan zum Wiederholen des Modells einrichten.

Das obige ist der detaillierte Inhalt vonSo analysieren Sie Tweet -Gefühle mit maschinellem PHP -Lernen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage