Sådan bygger du dit eget Facebook Sentiment Analysis Tool PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Sådan bygger du dit eget Facebook Sentiment Analysis Tool

I denne artikel vil vi diskutere, hvordan du nemt kan opbygge et simpelt Facebook-sentimentanalyseværktøj, der er i stand til at klassificere offentlige opslag (både fra brugere og fra sider) som positive, negative og neutrale. Vi kommer til at bruge Facebooks Graph API Search og Datumbox API 1.0v. Svarende til Twitter Sentiment Analyseværktøj som vi byggede for nogle måneder siden, denne implementering er skrevet i PHP, men du kan meget nemt bygge dit eget værktøj på det computersprog du ønsker.

Opdatering: Datumbox Machine Learning Framework er nu open source og gratis til downloade. Hvis du vil bygge en Sentiment Analysis-klassifikator uden at ramme API-begrænsningerne, skal du bruge klassen com.datumbox.applications.nlp.TextClassifier.

Den komplette PHP-kode for værktøjet kan findes på Github.

Hvordan fungerer Facebook-følelsesanalyse?

Som vi diskuterede i tidligere artikler, udfører Følelsesanalyse kræver brug af avancerede maskinindlæring og naturlige sprogbehandlingsteknikker. I de tidligere indlæg så vi i detaljer adskillige tekstklassifikatorer som f.eks Naiv Bayes, Softmax regression og Max entropi, vi diskuterede vigtigheden af ​​at bruge Funktionsvalg i tekstklassifikationsproblemer og til sidst så vi, hvordan man kan udvikle en implementering af Multinomial Naiv Bayes klassificering i JAVA.

At udføre sentimentanalyse på Facebook adskiller sig ikke væsentligt fra det, vi diskuterede tidligere. I en nøddeskal skal vi hente facebook-opslagene og udtrække deres indhold og derefter tokenisere dem for at udtrække deres søgeordskombinationer. Bagefter udfører vi funktionsvalg for kun at beholde de n-grammer, der er vigtige for klassificeringsproblemet, og vi træner vores klassificering i at identificere de positive, negative og neutrale indlæg.

Ovenstående proces er væsentligt forenklet ved at bruge Datumbox'erne Machine Learning API. Alt hvad man skal gøre for at udføre sentimentanalyse på Facebook er at kalde Graph API-søgningen for at udtrække de interessante indlæg, udtrække deres tekst og kalde Datumbox Sentiment Analysis API for at få deres klassificering.

Opbygning af Facebook-sentimentanalyseværktøjet

For at bygge Facebook Sentiment Analysis-værktøjet kræver du to ting: At bruge Facebook API til at hente de offentlige indlæg og for at evaluere indlæggenes polaritet baseret på deres søgeord. Til den første opgave vil vi bruge Facebooks Graph API-søgning og til den anden Datumbox API 1.0v.

Vi vil fremskynde udviklingen af ​​værktøjet ved at bruge 2 klasser: The Facebook PHP SDK som nemt giver os adgang til Graph-søgningen og Datumbox PHP-API-klient. Endnu en gang er den mest komplicerede opgave i processen at oprette en Facebook-applikation, som giver os mulighed for at hente indlæggene fra Facebook; Datumbox integrationen er et stykke kage.

Opret din egen Facebook-applikation

facebook-stemningsanalyseDesværre gjorde Facebook det obligatorisk at godkende før adgang deres Graph Search API. Heldigvis giver de en meget nem at bruge SDK som tager sig af de fleste tekniske detaljer i integrationen. Stadig før du bruger det, skal du oprette en ny Facebook-applikation ved at bruge din Facebook-konto.

Processen er enkel. Gå til Facebook-udviklerside (du skal registrere dig, hvis du aldrig har skrevet en Facebook-ansøgning tidligere). Klik på Apps i menuen og vælg "Opret ny app".

I pop op-vinduet skal du udfylde visningsnavnet på din applikation, navneområdet, vælge en kategori og klikke på Opret app. Når applikationen er oprettet, skal du gå til hovedsiden af ​​din applikation og vælge Dashboard. Det er her, du får dit AppID og App Secret-værdierne. Kopier disse værdier et sikkert sted, da vi får brug for dem senere.

Gå derefter til indstillingerne for din applikation, og klik på "+ App-platform" nederst på siden. På pop op-vinduet skal du vælge "Websted" og derefter på webstedets URL-adresse indsætte URL'en for det sted, hvor du vil uploade dit værktøj (eksempel: https://localhost/). Klik på "Gem ændringer", og du er færdig!

Få din Datumbox API-nøgle

For at få adgang til Datumbox API tilmeld dig for en gratis konto og besøg din API-legitimationspanel for at få din API-nøgle.

Udvikling af Facebook Sentiment Analysis-klassen

Til sidst skal vi bare skrive en simpel klasse, der integrerer de to API'er. Kalder først Facebook Graph Search, godkender, henter indlæggene og sender dem derefter til Datumbox API for at hente deres polaritet.

Her er klassens kode sammen med de nødvendige kommentarer.

<?php
include_once(dirname(__FILE__).'/DatumboxAPI.php');
include_once(dirname(__FILE__).'/facebook-php-sdk/src/facebook.php');
class FacebookSentimentAnalysis {
    
    protected $datumbox_api_key; //Your Datumbox API Key. Get it from https://www.datumbox.com/apikeys/view/
    
    protected $app_id; //Your Facebook APP Id. Get it from https://developers.facebook.com/ 
    protected $app_secret; //Your Facebook APP Id. Get it from https://developers.facebook.com/
    
    /**
    * The constructor of the class
    * 
    * @param string $datumbox_api_key   Your Datumbox API Key
    * @param string $app_id             Your Facebook App Id
    * @param string $app_secret         Your Facebook App Secret
    * 
    * @return FacebookSentimentAnalysis  
    */
    public function __construct($datumbox_api_key, $app_id, $app_secret){
        $this->datumbox_api_key=$datumbox_api_key;
        
        $this->app_id=$app_id;
        $this->app_secret=$app_secret;
    }
    
    /**
    * This function fetches the fb posts list and evaluates their sentiment
    * 
    * @param array $facebookSearchParams The Facebook Search Parameters that are passed to Facebook API. Read more here https://developers.facebook.com/docs/reference/api/search/
    * 
    * @return array
    */
    public function sentimentAnalysis($facebookSearchParams) {
        $posts=$this->getPosts($facebookSearchParams);
        
        return $this->findSentiment($posts);
    }
    
    /**
    * Calls the Open Graph Search method of the Facebook API for particular Graph API Search Parameters and returns the list of posts that match the search criteria.
    * 
    * @param mixed $facebookSearchParams The Facebook Search Parameters that are passed to Facebook API. Read more here https://developers.facebook.com/docs/reference/api/search/
    * 
    * @return array $posts
    */
    protected function getPosts($facebookSearchParams) {
        //Use the Facebook SDK Client
        $Client = new Facebook(array(
          'appId'  => $this->app_id,
          'secret' => $this->app_secret,
        ));

        // Get User ID
        $user = $Client->getUser();

        //if Use is not set, redirect to login page
        if(!$user) {
            header('Location: '.$Client->getLoginUrl());
            die();
        }
        
        $posts = $Client->api('/search', 'GET', $facebookSearchParams); //call the service and get the list of posts
        
        unset($Client);
        
        return $posts;
    }
    
    /**
    * Finds the Sentiment for a list of Facebook posts.
    * 
    * @param array $posts List of posts coming from Facebook's API
    * 
    * @param array $posts
    */
    protected function findSentiment($posts) {
        $DatumboxAPI = new DatumboxAPI($this->datumbox_api_key); //initialize the DatumboxAPI client
        
        $results=array();
        if(!isset($posts['data'])) {
            return $results;
        }
        
        foreach($posts['data'] as $post) { //foreach of the posts that we received
            $message=isset($post['message'])?$post['message']:'';
            
            if(isset($post['caption'])) {
                $message.=("nn".$post['caption']);
            }
            if(isset($post['description'])) {
                $message.=("nn".$post['description']);
            }
            if(isset($post['link'])) {
                $message.=("nn".$post['link']);
            }
            
            $message=trim($message);
            if($message!='') {
                $sentiment=$DatumboxAPI->SentimentAnalysis(strip_tags($message)); //call Datumbox service to get the sentiment
                
                if($sentiment!=false) { //if the sentiment is not false, the API call was successful.
                    $tmp = explode('_',$post['id']);
                    if(!isset($tmp[1])) {
                        $tmp[1]='';
                    }
                    $results[]=array( //add the post message in the results
                        'id'=>$post['id'],
                        'user'=>$post['from']['name'],
                        'text'=>$message,
                        'url'=>'https://www.facebook.com/'.$tmp[0].'/posts/'.$tmp[1],
                        'sentiment'=>$sentiment,
                    );
                }
            }
        }
        
        unset($posts);
        unset($DatumboxAPI);
        
        return $results;
    }
}

Som du kan se ovenfor på konstruktøren videregiver vi nøglerne, som er nødvendige for at få adgang til de 2 API'er. På den offentlige metode sentimentAnalysis() initialiserer vi Facebook-klienten, vi autentificerer og vi henter listen over indlæg. Bemærk, at hvis du endnu ikke har autoriseret din applikation, eller hvis du ikke er logget ind på Facebook med din konto, vil du blive omdirigeret til Facebook.com for at logge på og godkende appen (det er din app, ingen bekymringer om privatlivsproblemer). Når listen over indlæg er hentet, sendes de til Datumbox API for at få deres polaritet.

Du er god til at gå! Du er klar til at bruge denne klasse til at udføre sentimentanalyse på Facebook. Du kan downloade den komplette PHP-kode til Facebook Sentiment Analysis-værktøjet fra Github.

Brug og udvidelse af implementeringen

For at bruge det medfølgende værktøj skal du oprette Facebook-applikationen som beskrevet ovenfor og derefter konfigurere den ved at ændre filen config.php. I denne fil skal du indsætte Datumbox API-nøglen, Facebook-app-id'et og Secret, som du kopierede tidligere.

Endelig i det forrige indlæg har vi bygget en selvstændig Twitter Sentiment Analyseværktøj. Det vil ikke tage dig mere end 10 minutter at slå de 2 implementeringer sammen og skabe et enkelt værktøj, som er i stand til at hente indlæg både fra Facebook og Twitter og præsentere resultaterne i en enkelt rapport.

Hvis du kunne lide artiklen, så brug et øjeblik på at dele den på Facebook eller Twitter! 🙂

Tidsstempel:

Mere fra Datumboks