国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
關(guān)鍵要點(diǎn)
什麼是機(jī)器學(xué)習(xí)?
監(jiān)督學(xué)習(xí)
無(wú)監(jiān)督學(xué)習(xí)
PHP-ML
問(wèn)題
解決方案
步驟 1:加載數(shù)據(jù)集
步驟 2:準(zhǔn)備數(shù)據(jù)集
步驟 3:生成訓(xùn)練數(shù)據(jù)集
步驟 4:訓(xùn)練分類(lèi)器
步驟 5:測(cè)試分類(lèi)器的準(zhǔn)確性
結(jié)論
關(guān)於用於推文情感分析的PHP機(jī)器學(xué)習(xí)的常見(jiàn)問(wèn)題解答 (FAQ)
如何提高情感分析的準(zhǔn)確性?
我是否可以使用PHP以外的其他語(yǔ)言進(jìn)行情感分析?
如何處理情感分析中的諷刺和反語(yǔ)?
如何將情感分析用於其他社交媒體平臺(tái)?
我可以將情感分析用於英語(yǔ)以外的語(yǔ)言嗎?
如何可視化情感分析的結(jié)果?
如何在實(shí)際應(yīng)用中使用情感分析?
如何處理情感分析中的表情符號(hào)?
如何處理情感分析中的拼寫(xiě)錯(cuò)誤?
如何保持我的情感分析模型最新?
首頁(yè) 後端開(kāi)發(fā) php教程 如何分析PHP機(jī)器學(xué)習(xí)的推文觀點(diǎn)

如何分析PHP機(jī)器學(xué)習(xí)的推文觀點(diǎn)

Feb 09, 2025 am 10:09 AM

How to Analyze Tweet Sentiments with PHP Machine Learning

本文經(jīng)Wern Ancheta同行評(píng)審。感謝所有SitePoint的同行評(píng)審員,使SitePoint的內(nèi)容達(dá)到最佳狀態(tài)!


最近,似乎每個(gè)人都在談?wù)摍C(jī)器學(xué)習(xí)。你的社交媒體信息流充斥著關(guān)於ML、Python、TensorFlow、Spark、Scala、Go等等的帖子;如果你像我一樣,你可能會(huì)想知道,PHP呢?

是的,機(jī)器學(xué)習(xí)和PHP呢?幸運(yùn)的是,有人瘋狂地不僅提出了這個(gè)問(wèn)題,而且還開(kāi)發(fā)了一個(gè)通用的機(jī)器學(xué)習(xí)庫(kù),我們可以在下一個(gè)項(xiàng)目中使用它。在這篇文章中,我們將看看PHP-ML——一個(gè)用於PHP的機(jī)器學(xué)習(xí)庫(kù)——我們將編寫(xiě)一個(gè)情感分析類(lèi),稍後可以將其重用於我們自己的聊天機(jī)器人或推特機(jī)器人。這篇文章的主要目標(biāo)是:

  • 探索機(jī)器學(xué)習(xí)和情感分析周?chē)囊话愀拍?/li>
  • 審查PHP-ML的功能和缺點(diǎn)
  • 定義我們將要處理的問(wèn)題
  • 證明嘗試在PHP中進(jìn)行機(jī)器學(xué)習(xí)並非完全瘋狂的目標(biāo)(可選)

閱讀更好的PHP開(kāi)發(fā)工具和技術(shù),使你成為更好的開(kāi)發(fā)者! How to Analyze Tweet Sentiments with PHP Machine Learning 閱讀此書(shū) 閱讀此書(shū)! How to Analyze Tweet Sentiments with PHP Machine Learning

關(guān)鍵要點(diǎn)

  • PHP-ML是一個(gè)通用的PHP機(jī)器學(xué)習(xí)庫(kù),適用於小型應(yīng)用程序,例如情感分析。
  • 本教程演示瞭如何使用PHP-ML構(gòu)建一個(gè)專(zhuān)門(mén)用於分析推文的情感分析工具,重點(diǎn)介紹監(jiān)督學(xué)習(xí)技術(shù)。
  • 情感分析的關(guān)鍵步驟是準(zhǔn)備數(shù)據(jù),這包括從數(shù)據(jù)集中選擇相關(guān)的特徵和標(biāo)籤。
  • 文本數(shù)據(jù)需要特定的預(yù)處理,例如標(biāo)記化和矢量化,才能將推文轉(zhuǎn)換為適合機(jī)器學(xué)習(xí)模型的格式。
  • 例子中使用了樸素貝葉斯分類(lèi)器,因?yàn)樗?jiǎn)單且有效地處理分類(lèi)數(shù)據(jù)。
  • 本文強(qiáng)調(diào)了乾淨(jìng)且相關(guān)的數(shù)據(jù)集對(duì)於訓(xùn)練模型以確保準(zhǔn)確的情感分類(lèi)的重要性。

什麼是機(jī)器學(xué)習(xí)?

機(jī)器學(xué)習(xí)是人工智能的一個(gè)子集,它專(zhuān)注於賦予“計(jì)算機(jī)無(wú)需明確編程即可學(xué)習(xí)的能力”。這是通過(guò)使用可以從特定數(shù)據(jù)集“學(xué)習(xí)”的通用算法來(lái)實(shí)現(xiàn)的。

例如,機(jī)器學(xué)習(xí)的一個(gè)常見(jiàn)用途是分類(lèi)。分類(lèi)算法用於將數(shù)據(jù)分成不同的組或類(lèi)別。分類(lèi)應(yīng)用程序的一些示例包括:

  • 電子郵件垃圾郵件過(guò)濾器
  • 市場(chǎng)細(xì)分
  • 欺詐檢測(cè)

機(jī)器學(xué)習(xí)是一個(gè)涵蓋許多不同任務(wù)的通用算法的總稱(chēng),並且根據(jù)學(xué)習(xí)方式主要分為兩種算法類(lèi)型——監(jiān)督學(xué)習(xí)和無(wú)監(jiān)督學(xué)習(xí)。

監(jiān)督學(xué)習(xí)

在監(jiān)督學(xué)習(xí)中,我們使用標(biāo)記數(shù)據(jù)來(lái)訓(xùn)練我們的算法,標(biāo)記數(shù)據(jù)採(cǎi)用輸入對(duì)象(向量)和所需輸出值的格式;算法分析訓(xùn)練數(shù)據(jù)並產(chǎn)生所謂的推斷函數(shù),我們可以將其應(yīng)用於新的未標(biāo)記數(shù)據(jù)集。

在本帖的其餘部分,我們將重點(diǎn)關(guān)注監(jiān)督學(xué)習(xí),因?yàn)樗菀卓吹胶万?yàn)證關(guān)係;請(qǐng)記住,這兩種算法同樣重要且有趣;有人可能會(huì)認(rèn)為無(wú)監(jiān)督學(xué)習(xí)更有用,因?yàn)樗懦藰?biāo)記數(shù)據(jù)的需求。

無(wú)監(jiān)督學(xué)習(xí)

另一方面,這種類(lèi)型的學(xué)習(xí)從一開(kāi)始就使用未標(biāo)記的數(shù)據(jù)。我們不知道數(shù)據(jù)集的所需輸出值,我們讓算法從數(shù)據(jù)集中得出推論;無(wú)監(jiān)督學(xué)習(xí)在進(jìn)行探索性數(shù)據(jù)分析以查找數(shù)據(jù)中的隱藏模式時(shí)特別方便。

PHP-ML

認(rèn)識(shí)PHP-ML,一個(gè)聲稱(chēng)是PHP機(jī)器學(xué)習(xí)新方法的庫(kù)。該庫(kù)實(shí)現(xiàn)了算法、神經(jīng)網(wǎng)絡(luò)和工具,用於進(jìn)行數(shù)據(jù)預(yù)處理、交叉驗(yàn)證和特徵提取。

我首先承認(rèn),PHP是機(jī)器學(xué)習(xí)的不尋常選擇,因?yàn)樵撜Z(yǔ)言的優(yōu)勢(shì)並不太適合機(jī)器學(xué)習(xí)應(yīng)用程序。也就是說(shuō),並非每個(gè)機(jī)器學(xué)習(xí)應(yīng)用程序都需要處理PB級(jí)數(shù)據(jù)並進(jìn)行大量計(jì)算——對(duì)於簡(jiǎn)單的應(yīng)用程序,我們應(yīng)該能夠使用PHP和PHP-ML。

我現(xiàn)在能看到的這個(gè)庫(kù)最好的用例是分類(lèi)器的實(shí)現(xiàn),無(wú)論是垃圾郵件過(guò)濾器還是情感分析。我們將定義一個(gè)分類(lèi)問(wèn)題,並逐步構(gòu)建解決方案,以了解如何在我們的項(xiàng)目中使用PHP-ML。

問(wèn)題

為了舉例說(shuō)明實(shí)現(xiàn)PHP-ML並將一些機(jī)器學(xué)習(xí)添加到我們的應(yīng)用程序中的過(guò)程,我想找到一個(gè)有趣的問(wèn)題來(lái)解決,還有什麼比構(gòu)建一個(gè)推特情感分析類(lèi)更好的方法來(lái)展示分類(lèi)器呢?

構(gòu)建成功的機(jī)器學(xué)習(xí)項(xiàng)目所需的關(guān)鍵要求之一是良好的起始數(shù)據(jù)集。數(shù)據(jù)集至關(guān)重要,因?yàn)樗鼈儗⒃试S我們針對(duì)已分類(lèi)的示例訓(xùn)練我們的分類(lèi)器。由於媒體最近圍繞航空公司出現(xiàn)了大量噪音,還有什麼比使用客戶(hù)對(duì)航空公司的推文更好的數(shù)據(jù)集呢?

幸運(yùn)的是,由於Kaggle.io,我們已經(jīng)可以使用推文數(shù)據(jù)集??梢允褂么随溄訌钠渚W(wǎng)站下載Twitter美國(guó)航空公司情緒數(shù)據(jù)庫(kù)

解決方案

讓我們首先看看我們將要處理的數(shù)據(jù)集。原始數(shù)據(jù)集包含以下列:

  • tweet_id
  • airline_sentiment
  • airline_sentiment_confidence
  • negativereason
  • negativereason_confidence
  • airline
  • airline_sentiment_gold
  • name
  • negativereason_gold
  • retweet_count
  • text
  • tweet_coord
  • tweet_created
  • tweet_location
  • user_timezone

並且看起來(lái)像下面的例子(可側(cè)向滾動(dòng)的表格):

tweet_id airline_sentiment airline_sentiment_confidence negativereason negativereason_confidence airline airline_sentiment_gold name negativereason_gold retweet_count text tweet_coord tweet_created tweet_location user_timezone 570306133677760513 neutral 1.0 Virgin America cairdin 0 @VirginAmerica What @dhepburn said. 2015-02-24 11:35:52 -0800 Eastern Time (US & Canada) 570301130888122368 positive 0.3486 0.0 Virgin America jnardino 0 @VirginAmerica plus you've added commercials to the experience… tacky. 2015-02-24 11:15:59 -0800 Pacific Time (US & Canada) 570301083672813571 neutral 0.6837 Virgin America yvonnalynn 0 @VirginAmerica I didn't today… Must mean I need to take another trip! 2015-02-24 11:15:48 -0800 Lets Play Central Time (US & Canada) 570301031407624196 negative 1.0 Bad Flight 0.7033 Virgin America jnardino 0 “ @VirginAmerica it's really aggressive to blast obnoxious “”entertainment”” in your guests' faces & they have little recourse” 2015-02-24 11:15:36 -0800 Pacific Time (US & Canada) 570300817074462722 negative 1.0 Can't Tell 1.0 Virgin America jnardino 0 @VirginAmerica and it's a really big bad thing about it 2015-02-24 11:14:45 -0800 Pacific Time (US & Canada) 570300767074181121 negative 1.0 Can't Tell 0.6842 Virgin America jnardino 0 “@VirginAmerica seriously would pay $30 a flight for seats that didn't have this playing. it's really the only bad thing about flying VA” 2015-02-24 11:14:33 -0800 Pacific Time (US & Canada) 570300616901320704 positive 0.6745 0.0 Virgin America cjmcginnis 0 “@VirginAmerica yes nearly every time I fly VX this “ear worm” won't go away :)” 2015-02-24 11:13:57 -0800 San Francisco CA Pacific Time (US & Canada) 570300248553349120 neutral 0.634 Virgin America pilot 0 “@VirginAmerica Really missed a prime opportunity for Men Without Hats parody there. http://www.miracleart.cn/link/76379ed89eafe43c8f6bd64fd09e3852” 2015-02-24 11:12:29 -0800 Los Angeles Pacific Time (US & Canada) 該文件包含14,640條推文,因此對(duì)於我們來(lái)說(shuō)是一個(gè)不錯(cuò)的工作數(shù)據(jù)集?,F(xiàn)在,使用我們當(dāng)前可用的列數(shù),我們擁有比示例所需更多的數(shù)據(jù);出於實(shí)際目的,我們只關(guān)心以下列:

  • text
  • airline_sentiment

其中text將成為我們的特徵,airline_sentiment將成為我們的目標(biāo)。其餘列可以丟棄,因?yàn)樗鼈儾粫?huì)用於我們的練習(xí)。讓我們從創(chuàng)建項(xiàng)目開(kāi)始,並使用以下文件初始化composer:

<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>
<code>composer install
</code>

如果您需要 Composer 入門(mén)介紹,請(qǐng)參見(jiàn)此處。

為了確保我們正確設(shè)置,讓我們創(chuàng)建一個(gè)快速腳本,它將加載我們的Tweets.csv數(shù)據(jù)文件並確保它具有我們需要的數(shù)據(jù)。將以下代碼複製為項(xiàng)目根目錄中的reviewDataset.php:

<?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);
}

現(xiàn)在,使用php reviewDataset.php運(yùn)行腳本,讓我們查看輸出:

<code>Array( [0] => 569587371693355008 )
Array( [0] => 569587242672398336 )
Array( [0] => 569587188687634433 )
Array( [0] => 569587140490866689 )
</code>

現(xiàn)在這看起來(lái)沒(méi)用,不是嗎?讓我們看看CsvDataset類(lèi),以便更好地了解內(nèi)部發(fā)生的情況:

<?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);
    }

CsvDataset構(gòu)造函數(shù)採(cǎi)用3個(gè)參數(shù):

  • 源CSV的文件路徑
  • 指定文件中特徵數(shù)量的整數(shù)
  • 布爾值,指示第一行是否為標(biāo)題

如果我們仔細(xì)觀察,我們可以看到該類(lèi)正在將CSV文件映射到兩個(gè)內(nèi)部數(shù)組:samples和targets。 Samples包含文件提供的所有特徵,而targets包含已知值(負(fù)、正或中性)。

基於上述內(nèi)容,我們可以看到我們的CSV文件需要遵循的格式如下:

<code>| feature_1 | feature_2 | feature_n | target | </code>

我們將需要生成一個(gè)乾淨(jìng)的數(shù)據(jù)集,其中只包含我們需要繼續(xù)工作的列。讓我們將此腳本稱(chēng)為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);
}

沒(méi)有什麼太複雜的,只是足以完成這項(xiàng)工作。讓我們用php generateCleanDataset.php執(zhí)行它。

現(xiàn)在,讓我們將reviewDataset.php腳本指向乾淨(jìng)的數(shù)據(jù)集:

<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>

BAM!這是我們可以使用的數(shù)據(jù)!到目前為止,我們一直在創(chuàng)建用於操作數(shù)據(jù)的簡(jiǎn)單腳本。接下來(lái),我們將開(kāi)始在src/classification/SentimentAnalysis.php下創(chuàng)建一個(gè)新類(lèi)。

<?php namespace PhpmlExercise\Classification;

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

我們的情感類(lèi)將需要在我們的情感分析類(lèi)中使用兩個(gè)函數(shù):

  • 一個(gè)訓(xùn)練函數(shù),它將採(cǎi)用我們的數(shù)據(jù)集訓(xùn)練樣本和標(biāo)籤以及一些可選參數(shù)。
  • 一個(gè)預(yù)測(cè)函數(shù),它將採(cǎi)用未標(biāo)記的數(shù)據(jù)集並根據(jù)訓(xùn)練數(shù)據(jù)分配一組標(biāo)籤。

在項(xiàng)目的根目錄中創(chuàng)建一個(gè)名為classifyTweets.php的腳本。我們將使用此腳本來(lái)實(shí)例化和測(cè)試我們的情感分析類(lèi)。這是我們將使用的模板:

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

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

// 步驟 1:加載數(shù)據(jù)集

// 步驟 2:準(zhǔn)備數(shù)據(jù)集

// 步驟 3:生成訓(xùn)練/測(cè)試數(shù)據(jù)集

// 步驟 4:訓(xùn)練分類(lèi)器

// 步驟 5:測(cè)試分類(lèi)器的準(zhǔn)確性

步驟 1:加載數(shù)據(jù)集

我們已經(jīng)擁有可以用於將CSV加載到我們?cè)缙谑纠械臄?shù)據(jù)集對(duì)象的代碼。我們將使用相同的代碼並進(jìn)行一些調(diào)整:

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

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

這將生成一個(gè)僅包含特徵(在本例中為推文文本)的扁平數(shù)組,我們將使用它來(lái)訓(xùn)練我們的分類(lèi)器。

步驟 2:準(zhǔn)備數(shù)據(jù)集

現(xiàn)在,擁有原始文本並將該文本傳遞給分類(lèi)器將不會(huì)有用或準(zhǔn)確,因?yàn)槊織l推文本質(zhì)上都是不同的。幸運(yùn)的是,在嘗試應(yīng)用分類(lèi)或機(jī)器學(xué)習(xí)算法時(shí),有一些方法可以處理文本。對(duì)於此示例,我們將使用以下兩個(gè)類(lèi):

  • 令牌計(jì)數(shù)向量化器:這會(huì)將文本樣本集合轉(zhuǎn)換為令牌計(jì)數(shù)向量。本質(zhì)上,我們推文中的每個(gè)詞都成為一個(gè)唯一的數(shù)字,並跟蹤特定文本樣本中某個(gè)詞出現(xiàn)的次數(shù)。
  • Tf-idf轉(zhuǎn)換器:term frequency–inverse document frequency的縮寫(xiě),是一種數(shù)值統(tǒng)計(jì)量,旨在反映某個(gè)詞對(duì)集合或語(yǔ)料庫(kù)中文檔的重要性。

讓我們從文本向量化器開(kāi)始:

<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>

接下來(lái),應(yīng)用Tf-idf轉(zhuǎn)換器:

<code>composer install
</code>

我們的samples數(shù)組現(xiàn)在採(cǎi)用了一種格式,可以很容易地被我們的分類(lèi)器理解。我們還沒(méi)完成,我們需要用其相應(yīng)的情緒標(biāo)記每個(gè)樣本。

步驟 3:生成訓(xùn)練數(shù)據(jù)集

幸運(yùn)的是,PHP-ML已經(jīng)涵蓋了這個(gè)需求,代碼非常簡(jiǎn)單:

<?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);
}

我們可以繼續(xù)使用此數(shù)據(jù)集並訓(xùn)練我們的分類(lèi)器。但是,我們?nèi)鄙儆米黩?yàn)證的測(cè)試數(shù)據(jù)集,因此我們將“作弊”一點(diǎn),並將我們的原始數(shù)據(jù)集分成兩部分:一個(gè)訓(xùn)練數(shù)據(jù)集和一個(gè)用於測(cè)試模型準(zhǔn)確性的更小得多的數(shù)據(jù)集。

<code>Array( [0] => 569587371693355008 )
Array( [0] => 569587242672398336 )
Array( [0] => 569587188687634433 )
Array( [0] => 569587140490866689 )
</code>

這種方法稱(chēng)為交叉驗(yàn)證。該術(shù)語(yǔ)來(lái)自統(tǒng)計(jì)學(xué),可以定義如下:

交叉驗(yàn)證,有時(shí)稱(chēng)為旋轉(zhuǎn)估計(jì),是一種模型驗(yàn)證技術(shù),用於評(píng)估統(tǒng)計(jì)分析的結(jié)果將如何推廣到獨(dú)立數(shù)據(jù)集。它主要用於預(yù)測(cè)的目標(biāo)設(shè)置,並且想要估計(jì)預(yù)測(cè)模型在實(shí)踐中的準(zhǔn)確性。 — Wikipedia.com

步驟 4:訓(xùn)練分類(lèi)器

最後,我們準(zhǔn)備返回並實(shí)現(xiàn)SentimentAnalysis類(lèi)。如果你現(xiàn)在還沒(méi)注意到,機(jī)器學(xué)習(xí)的很大一部分是關(guān)於收集和操作數(shù)據(jù);機(jī)器學(xué)習(xí)模型的實(shí)際實(shí)現(xiàn)往往涉及較少的內(nèi)容。

為了實(shí)現(xiàn)我們的情感分析類(lèi),我們有三種可用的分類(lèi)算法:

  • 支持向量分類(lèi)
  • K最近鄰
  • 樸素貝葉斯

對(duì)於此練習(xí),我們將使用最簡(jiǎn)單的一種,即樸素貝葉斯分類(lèi)器,因此讓我們繼續(xù)更新我們的類(lèi)以實(shí)現(xiàn)train方法:

<?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);
    }

如你所見(jiàn),我們讓PHP-ML為我們完成所有繁重的工作。我們只是為我們的項(xiàng)目創(chuàng)建了一個(gè)很好的抽象。但是我們?nèi)绾沃牢覀兊姆诸?lèi)器是否真的在訓(xùn)練和工作呢?是時(shí)候使用我們的testSamples和testLabels了。

步驟 5:測(cè)試分類(lèi)器的準(zhǔn)確性

在我們繼續(xù)測(cè)試我們的分類(lèi)器之前,我們確實(shí)必須實(shí)現(xiàn)預(yù)測(cè)方法:

<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>

同樣,PHP-ML為我們提供了幫助,並為我們完成了所有繁重的工作。讓我們相應(yīng)地更新classifyTweets類(lèi):

<code>composer install
</code>

最後,我們需要一種方法來(lái)測(cè)試我們訓(xùn)練模型的準(zhǔn)確性;謝天謝地,PHP-ML也涵蓋了這一點(diǎn),並且他們有幾個(gè)指標(biāo)類(lèi)。在我們的例子中,我們對(duì)模型的準(zhǔn)確性感興趣。讓我們看看代碼:

<?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);
}

我們應(yīng)該看到類(lèi)似以下內(nèi)容:

<code>Array( [0] => 569587371693355008 )
Array( [0] => 569587242672398336 )
Array( [0] => 569587188687634433 )
Array( [0] => 569587140490866689 )
</code>

結(jié)論

這篇文章有點(diǎn)長(zhǎng),所以讓我們回顧一下到目前為止我們學(xué)到了什麼:

  • 從一開(kāi)始就擁有良好的數(shù)據(jù)集對(duì)於實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法至關(guān)重要。
  • 監(jiān)督學(xué)習(xí)和無(wú)監(jiān)督學(xué)習(xí)的區(qū)別。
  • 交叉驗(yàn)證在機(jī)器學(xué)習(xí)中的含義和用途。
  • 向量化和轉(zhuǎn)換對(duì)於準(zhǔn)備用於機(jī)器學(xué)習(xí)的文本數(shù)據(jù)集至關(guān)重要。
  • 如何通過(guò)使用PHP-ML的樸素貝葉斯分類(lèi)器來(lái)實(shí)現(xiàn)Twitter情感分析。

這篇文章也作為PHP-ML庫(kù)的介紹,並希望讓你對(duì)該庫(kù)的功能以及如何在自己的項(xiàng)目中嵌入它有一個(gè)很好的了解。

最後,這篇文章絕非全面,還有很多需要學(xué)習(xí)、改進(jìn)和實(shí)驗(yàn)的地方;以下是一些想法,可以幫助你進(jìn)一步改進(jìn):

  • 將樸素貝葉斯算法替換為支持向量機(jī)算法。
  • 如果你嘗試針對(duì)完整數(shù)據(jù)集(14,000行)運(yùn)行,你可能會(huì)注意到該過(guò)程的內(nèi)存密集程度。嘗試實(shí)現(xiàn)模型持久性,以便不必在每次運(yùn)行時(shí)都進(jìn)行訓(xùn)練。
  • 將數(shù)據(jù)集生成移動(dòng)到它自己的輔助類(lèi)中。

我希望你發(fā)現(xiàn)這篇文章有用。如果你有一些關(guān)於PHP-ML的應(yīng)用程序想法或任何問(wèn)題,請(qǐng)隨時(shí)在下面的評(píng)論區(qū)中提出!

關(guān)於用於推文情感分析的PHP機(jī)器學(xué)習(xí)的常見(jiàn)問(wèn)題解答 (FAQ)

如何提高情感分析的準(zhǔn)確性?

提高情感分析的準(zhǔn)確性涉及多種策略。首先,確保你的訓(xùn)練數(shù)據(jù)盡可能乾淨(jìng)和相關(guān)。這意味著刪除任何不相關(guān)的數(shù)據(jù),例如停用詞、標(biāo)點(diǎn)符號(hào)和URL。其次,考慮使用更複雜的算法。雖然樸素貝葉斯分類(lèi)器是一個(gè)很好的起點(diǎn),但其他算法(如支持向量機(jī) (SVM) 或深度學(xué)習(xí)模型)可能會(huì)提供更好的結(jié)果。最後,考慮使用更大的數(shù)據(jù)集進(jìn)行訓(xùn)練。你的模型可以學(xué)習(xí)的數(shù)據(jù)越多,它就越準(zhǔn)確。

我是否可以使用PHP以外的其他語(yǔ)言進(jìn)行情感分析?

是的,你可以使用其他編程語(yǔ)言進(jìn)行情感分析。例如,Python 因其廣泛的機(jī)器學(xué)習(xí)庫(kù)(如NLTK、TextBlob和scikit-learn)而成為一種流行的選擇。但是,PHP也可以有效地用於情感分析,特別是如果你已經(jīng)熟悉該語(yǔ)言或你的項(xiàng)目是基於PHP框架構(gòu)建的。

如何處理情感分析中的諷刺和反語(yǔ)?

處理情感分析中的諷刺和反語(yǔ)是一項(xiàng)具有挑戰(zhàn)性的任務(wù)。這些語(yǔ)言特徵通常涉及說(shuō)某事但意味著相反的意思,這對(duì)於機(jī)器學(xué)習(xí)模型來(lái)說(shuō)很難理解。一種方法是使用可以理解上下文的更複雜的模型,例如深度學(xué)習(xí)模型。另一種方法是使用專(zhuān)門(mén)的諷刺檢測(cè)模型,該模型可以使用諷刺評(píng)論的數(shù)據(jù)集進(jìn)行訓(xùn)練。

如何將情感分析用於其他社交媒體平臺(tái)?

情感分析的原理可以應(yīng)用於任何文本數(shù)據(jù),包括來(lái)自其他社交媒體平臺(tái)的帖子。主要區(qū)別在於你如何收集數(shù)據(jù)。每個(gè)社交媒體平臺(tái)都有自己的API用於訪問(wèn)用戶(hù)帖子,因此你需要熟悉你感興趣的平臺(tái)的API。

我可以將情感分析用於英語(yǔ)以外的語(yǔ)言嗎?

是的,情感分析可以用於任何語(yǔ)言。但是,分析的有效性將取決於你的訓(xùn)練數(shù)據(jù)的質(zhì)量。如果你使用的是英語(yǔ)以外的語(yǔ)言,則需要使用該語(yǔ)言的數(shù)據(jù)集來(lái)訓(xùn)練你的模型。一些機(jī)器學(xué)習(xí)庫(kù)也直接支持多種語(yǔ)言。

如何可視化情感分析的結(jié)果?

有很多方法可以可視化情感分析結(jié)果。一種常見(jiàn)的方法是使用條形圖來(lái)顯示正面、負(fù)面和中性推文的數(shù)量。另一種方法是使用詞云來(lái)可視化數(shù)據(jù)中最常用的詞。 PHP有幾個(gè)用於創(chuàng)建這些可視化的庫(kù),例如pChart和GD。

如何在實(shí)際應(yīng)用中使用情感分析?

情感分析有很多實(shí)際應(yīng)用。企業(yè)可以使用它來(lái)監(jiān)控客戶(hù)對(duì)其產(chǎn)品或服務(wù)的意見(jiàn),政治家可以使用它來(lái)衡量公眾對(duì)政策問(wèn)題的意見(jiàn),研究人員可以使用它來(lái)研究社會(huì)趨勢(shì)。可能性是無(wú)限的。

如何處理情感分析中的表情符號(hào)?

表情符號(hào)可以攜帶重要的情感信息,因此將它們包含在你的分析中很重要。一種方法是在將數(shù)據(jù)輸入模型之前,將每個(gè)表情符號(hào)替換為其文本描述。有一些庫(kù)可以幫助你做到這一點(diǎn),例如PHP的Emojione。

如何處理情感分析中的拼寫(xiě)錯(cuò)誤?

拼寫(xiě)錯(cuò)誤在情感分析中可能是一個(gè)挑戰(zhàn)。一種方法是在將數(shù)據(jù)輸入模型之前使用拼寫(xiě)檢查器來(lái)更正錯(cuò)誤。另一種方法是使用可以處理拼寫(xiě)錯(cuò)誤的模型,例如深度學(xué)習(xí)模型。

如何保持我的情感分析模型最新?

保持你的情感分析模型最新涉及定期使用新數(shù)據(jù)對(duì)其進(jìn)行再訓(xùn)練。這確保你的模型與語(yǔ)言使用和情感的變化保持同步。你可以通過(guò)設(shè)置一個(gè)重新訓(xùn)練模型的計(jì)劃來(lái)自動(dòng)化此過(guò)程。

以上是如何分析PHP機(jī)器學(xué)習(xí)的推文觀點(diǎn)的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開(kāi)發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門(mén)話題

如何在PHP中實(shí)施身份驗(yàn)證和授權(quán)? 如何在PHP中實(shí)施身份驗(yàn)證和授權(quán)? Jun 20, 2025 am 01:03 AM

tosecurelyhandleauthenticationandationallizationInphp,lofterTheSesteps:1.AlwaysHashPasswordSwithPassword_hash()andverifyusingspasspassword_verify(),usepreparedStatatementStopreventsqlineptions,andStoreSeruserDatain usseruserDatain $ _sessiveferterlogin.2.implementrole-2.imaccessccsccccccccccccccccccccccccc.

如何在PHP中安全地處理文件上傳? 如何在PHP中安全地處理文件上傳? Jun 19, 2025 am 01:05 AM

要安全處理PHP中的文件上傳,核心在於驗(yàn)證文件類(lèi)型、重命名文件並限制權(quán)限。 1.使用finfo_file()檢查真實(shí)MIME類(lèi)型,僅允許特定類(lèi)型如image/jpeg;2.用uniqid()生成隨機(jī)文件名,存儲(chǔ)至非Web根目錄;3.通過(guò)php.ini和HTML表單限製文件大小,設(shè)置目錄權(quán)限為0755;4.使用ClamAV掃描惡意軟件,增強(qiáng)安全性。這些步驟有效防止安全漏洞,確保文件上傳過(guò)程安全可靠。

PHP中==(鬆散比較)和===(嚴(yán)格的比較)之間有什麼區(qū)別? PHP中==(鬆散比較)和===(嚴(yán)格的比較)之間有什麼區(qū)別? Jun 19, 2025 am 01:07 AM

在PHP中,==與===的主要區(qū)別在於類(lèi)型檢查的嚴(yán)格程度。 ==在比較前會(huì)進(jìn)行類(lèi)型轉(zhuǎn)換,例如5=="5"返回true,而===要求值和類(lèi)型都相同才會(huì)返回true,例如5==="5"返回false。使用場(chǎng)景上,===更安全應(yīng)優(yōu)先使用,==僅在需要類(lèi)型轉(zhuǎn)換時(shí)使用。

如何在PHP( - , *, /,%)中執(zhí)行算術(shù)操作? 如何在PHP( - , *, /,%)中執(zhí)行算術(shù)操作? Jun 19, 2025 pm 05:13 PM

PHP中使用基本數(shù)學(xué)運(yùn)算的方法如下:1.加法用 號(hào),支持整數(shù)和浮點(diǎn)數(shù),也可用於變量,字符串?dāng)?shù)字會(huì)自動(dòng)轉(zhuǎn)換但不推薦依賴(lài);2.減法用-號(hào),變量同理,類(lèi)型轉(zhuǎn)換同樣適用;3.乘法用*號(hào),適用於數(shù)字及類(lèi)似字符串;4.除法用/號(hào),需避免除以零,並註意結(jié)果可能是浮點(diǎn)數(shù);5.取模用%號(hào),可用於判斷奇偶數(shù),處理負(fù)數(shù)時(shí)餘數(shù)符號(hào)與被除數(shù)一致。正確使用這些運(yùn)算符的關(guān)鍵在於確保數(shù)據(jù)類(lèi)型清晰並處理好邊界情況。

如何與PHP的NOSQL數(shù)據(jù)庫(kù)(例如MongoDB,Redis)進(jìn)行交互? 如何與PHP的NOSQL數(shù)據(jù)庫(kù)(例如MongoDB,Redis)進(jìn)行交互? Jun 19, 2025 am 01:07 AM

是的,PHP可以通過(guò)特定擴(kuò)展或庫(kù)與MongoDB和Redis等NoSQL數(shù)據(jù)庫(kù)交互。首先,使用MongoDBPHP驅(qū)動(dòng)(通過(guò)PECL或Composer安裝)創(chuàng)建客戶(hù)端實(shí)例並操作數(shù)據(jù)庫(kù)及集合,支持插入、查詢(xún)、聚合等操作;其次,使用Predis庫(kù)或phpredis擴(kuò)展連接Redis,執(zhí)行鍵值設(shè)置與獲取,推薦phpredis用於高性能場(chǎng)景,Predis則便於快速部署;兩者均適用於生產(chǎn)環(huán)境且文檔完善。

我如何了解最新的PHP開(kāi)發(fā)和最佳實(shí)踐? 我如何了解最新的PHP開(kāi)發(fā)和最佳實(shí)踐? Jun 23, 2025 am 12:56 AM

TostaycurrentwithPHPdevelopmentsandbestpractices,followkeynewssourceslikePHP.netandPHPWeekly,engagewithcommunitiesonforumsandconferences,keeptoolingupdatedandgraduallyadoptnewfeatures,andreadorcontributetoopensourceprojects.First,followreliablesource

什麼是PHP,為什麼它用於Web開(kāi)發(fā)? 什麼是PHP,為什麼它用於Web開(kāi)發(fā)? Jun 23, 2025 am 12:55 AM

PHPbecamepopularforwebdevelopmentduetoitseaseoflearning,seamlessintegrationwithHTML,widespreadhostingsupport,andalargeecosystemincludingframeworkslikeLaravelandCMSplatformslikeWordPress.Itexcelsinhandlingformsubmissions,managingusersessions,interacti

如何設(shè)置PHP時(shí)區(qū)? 如何設(shè)置PHP時(shí)區(qū)? Jun 25, 2025 am 01:00 AM

tosetTherightTimeZoneInphp,restate_default_timezone_set()functionAtthestArtofyourscriptWithavalIdidentIdentifiersuchas'america/new_york'.1.usedate_default_default_timezone_set_set()

See all articles