Come costruire il tuo strumento di analisi del sentiment di Facebook PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Come costruire il tuo strumento di analisi dei sentimenti di Facebook

In questo articolo discuteremo di come creare facilmente un semplice strumento di analisi dei sentimenti di Facebook in grado di classificare i post pubblici (sia dagli utenti che dalle pagine) come positivi, negativi e neutrali. Utilizzeremo la Ricerca API grafico di Facebook e l'API Datumbox 1.0v. Simile al Strumento di analisi dei sentimenti di Twitter che abbiamo costruito alcuni mesi fa, questa implementazione è scritta in PHP, tuttavia è possibile creare facilmente il proprio strumento nel linguaggio del computer che si desidera.

Aggiornamento: Datumbox Machine Learning Framework è ora open-source e gratuito scaricare. Se vuoi creare un classificatore di Sentiment Analysis senza colpire le limitazioni API, usa la classe com.datumbox.applications.nlp.TextClassifier.

Il codice PHP completo dello strumento è disponibile su Github.

Come funziona l'analisi dei sentimenti di Facebook?

Come abbiamo discusso negli articoli precedenti, esibirsi Analisi del sentimento richiede l'utilizzo di tecniche avanzate di Machine Learning e Natural Language Processing. Nei post precedenti abbiamo visto in dettaglio diversi classificatori di testo come il Ingenuo Bayes, le Regressione di Softmax e la Entropia massima, abbiamo discusso dell'importanza dell'uso Selezione funzionalità in problemi di classificazione del testo e finalmente abbiamo visto come si può sviluppare un'implementazione di Classificatore multinomiale Naive Bayes in JAVA.

L'esecuzione dell'analisi dei sentimenti su Facebook non differisce in modo significativo da ciò di cui abbiamo discusso in passato. In breve, dobbiamo recuperare i post di Facebook ed estrarne il contenuto, quindi tokenizzarli per estrarre le combinazioni di parole chiave. Successivamente eseguiamo la selezione delle funzionalità per mantenere solo gli n-grammi importanti per il problema di classificazione e formiamo il nostro classificatore per identificare i post positivi, negativi e neutrali.

Il processo di cui sopra è notevolmente semplificato utilizzando Datumbox API di apprendimento automatico. Tutto ciò che occorre fare per eseguire l'analisi dei sentimenti su Facebook è chiamare la ricerca API Graph per estrarre i post di interesse, estrarre il loro testo e chiamare l'API di analisi dei sentimenti Datumbox per ottenere la loro classificazione.

Costruire lo strumento Facebook Sentiment Analysis

Per creare lo strumento Analisi dei sentimenti di Facebook sono necessari due elementi: Utilizzare l'API di Facebook per recuperare i post pubblici e valutare la polarità dei post in base alle loro parole chiave. Per la prima attività utilizzeremo la ricerca dell'API Graph di Facebook e per la seconda l'API Datumbox 1.0v.

Accelereremo lo sviluppo dello strumento utilizzando 2 classi: The SDK PHP di Facebook che ci consentirà facilmente di accedere alla ricerca Graph e alla Datumbox PHP-API-client. Ancora una volta il compito più complicato del processo è la creazione di un'applicazione Facebook che ci permetterà di recuperare i post da Facebook; l'integrazione di Datumbox è un gioco da ragazzi.

Creare la tua applicazione Facebook

facebook-sentimento-analisiSfortunatamente Facebook ha reso obbligatorio l'autenticazione prima dell'accesso la loro API di ricerca del grafico. Per fortuna forniscono un molto facile da usare SDK che si occupa della maggior parte dei dettagli tecnici dell'integrazione. Ancora prima di usarlo è necessario creare utilizzando il proprio account Facebook una nuova applicazione Facebook.

Il processo è semplice Vai a Pagina degli sviluppatori di Facebook (dovrai registrarti se non hai mai scritto un'applicazione Facebook in passato). Fai clic su App dal menu e seleziona "Crea nuova app".

Nella finestra popup inserire il Nome visualizzato dell'applicazione, lo spazio dei nomi, selezionare una categoria e fare clic su Crea app. Una volta creata l'applicazione, vai alla pagina principale dell'applicazione e seleziona Dashboard. Qui è dove otterrai i tuoi valori AppID e App Secret. Copia quei valori in un luogo sicuro poiché ne avremo bisogno in seguito.

Successivamente vai alle Impostazioni della tua applicazione e fai clic su “+ Piattaforma app” nella parte inferiore della pagina. Nel popup seleziona "Sito Web" e quindi nell'indirizzo URL del sito inserisci l'URL della posizione in cui caricherai il tuo strumento (Esempio: https://localhost/). Fai clic su "Salva modifiche" e il gioco è fatto!

Ottieni la tua chiave API Datumbox

Per accedere all'API Datumbox iscriviti per un account gratuito e visita il tuo Pannello Credenziali API per ottenere la tua chiave API.

Sviluppare la classe di analisi dei sentimenti di Facebook

Infine, tutto ciò che dobbiamo fare è scrivere una semplice classe che integri le due API. Per prima cosa chiama Facebook Graph Search, esegue l'autenticazione, recupera i post e quindi li passa all'API Datumbox per recuperarne la polarità.

Ecco il codice della classe insieme ai commenti necessari.

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

Come puoi vedere sopra sul costruttore, passiamo le chiavi necessarie per accedere alle 2 API. Sul metodo pubblico sentimentAnalysis () inizializziamo il client di Facebook, effettuiamo l'autenticazione e recuperiamo l'elenco dei post. Tieni presente che se non hai ancora autorizzato l'applicazione o se non hai effettuato l'accesso a Facebook con il tuo account, verrai reindirizzato a Facebook.com per accedere e autorizzare l'app (è la tua app, nessuna preoccupazione per problemi di privacy). Una volta recuperato l'elenco dei post, questi vengono passati all'API Datumbox per ottenere la loro polarità.

Sei bravo ad andare! Sei pronto per utilizzare questa classe per eseguire l'analisi dei sentimenti su Facebook. Puoi scaricare il codice PHP completo dello strumento Facebook Sentiment Analysis di Github.

Utilizzo ed espansione dell'implementazione

Per utilizzare lo strumento fornito è necessario creare l'applicazione Facebook come descritto sopra e quindi configurarla modificando il file config.php. In questo file dovrai inserire la chiave dell'API Datumbox, l'ID app e il segreto di Facebook che hai copiato in precedenza.

Finalmente nel post precedente abbiamo creato un standalone Strumento di analisi dei sentimenti di Twitter. Non ci vorranno più di 10 minuti per unire le 2 implementazioni e creare un unico strumento in grado di recuperare post da Facebook e Twitter e presentare i risultati in un unico report.

Se ti è piaciuto l'articolo, ti preghiamo di dedicare un minuto a condividerlo su Facebook o Twitter! 🙂

Timestamp:

Di più da Databox