Cum să-ți construiești propriul instrument de analiză a sentimentelor Facebook PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Cum să-ți construiești propriul instrument de analiză a sentimentelor Facebook

În acest articol vom discuta despre cum puteți construi cu ușurință un instrument simplu de analiză a sentimentelor Facebook, capabil să clasifice postările publice (atât de la utilizatori, cât și de la pagini) ca pozitive, negative și neutre. Vom folosi Google Graph API Search și Datumbox API 1.0v. Similar cu Instrumentul de analiză a sentimentelor Twitter pe care am construit-o cu câteva luni în urmă, această implementare este scrisă în PHP, cu toate acestea, vă puteți construi foarte ușor propriul instrument în limbajul de computer ales de dvs.

Actualizare: Datumbox Machine Learning Framework este acum open-source și gratuit Descarca. Dacă doriți să construiți un clasificator de analiză a sentimentelor fără a atinge limitările API, utilizați clasa com.datumbox.applications.nlp.TextClassifier.

Codul PHP complet al instrumentului poate fi găsit pe Github.

Cum funcționează Facebook Sentiment Analysis?

După cum am discutat în articolele anterioare, performanțele Analiza sentimentelor necesită utilizarea tehnicilor avansate de învățare automată și procesare a limbajului natural. În postările anterioare am văzut în detaliu mai multe clasificatoare de text, cum ar fi Bayes naiv, Regresia Softmax si Entropia maximă, am discutat despre importanța utilizării Selectarea caracteristicilor în problemele de clasificare a textului și în cele din urmă am văzut cum se poate dezvolta o implementare a Clasificator multinomial Naive Bayes în JAVA.

Efectuarea analizei sentimentelor pe Facebook nu diferă semnificativ de ceea ce am discutat în trecut. Pe scurt, trebuie să preluăm postările de pe Facebook și să le extragem conținutul și apoi să le tokenizăm pentru a le extrage combinațiile de cuvinte cheie. Apoi efectuăm selecția caracteristicilor pentru a păstra doar n-gramele care sunt importante pentru problema de clasificare și ne antrenăm clasificatorul să identifice posturile pozitive, negative și neutre.

Procesul de mai sus este simplificat semnificativ prin utilizarea Datumbox-urilor API-ul Machine Learning. Tot ceea ce trebuie să faceți pentru a efectua o analiză a sentimentelor pe Facebook este să apelați la căutarea Graph API pentru a extrage postările de interes, a le extrage textul și a apela API-ul Datumbox Sentiment Analysis pentru a obține clasificarea lor.

Construirea instrumentului de analiză a sentimentelor Facebook

Pentru a construi instrumentul de analiză a sentimentelor Facebook aveți nevoie de două lucruri: să utilizați API-ul Facebook pentru a prelua postările publice și să evaluați polaritatea postărilor pe baza cuvintelor lor cheie. Pentru prima sarcină vom folosi căutarea API Graph de la Facebook și pentru a doua API-ul Datumbox 1.0v.

Vom accelera dezvoltarea instrumentului folosind 2 clase: The Facebook PHP SDK ceea ce ne va permite cu ușurință să accesăm căutarea grafică și Datumbox PHP-API-Client. Încă o dată, cea mai complicată sarcină din proces este crearea unei aplicații Facebook care ne va permite să preluăm postările de pe Facebook; integrarea Datumbox este o simplă simplă.

Crearea propriei aplicații Facebook

facebook-sentiment-analysisDin păcate, Facebook a făcut obligatorie autentificarea înainte de accesare API-ul lor Graph Search. Din fericire, oferă un foarte ușor de utilizat SDK care are grijă de majoritatea detaliilor tehnice ale integrării. Încă înainte de a-l folosi, trebuie să creați, folosind contul dvs. Facebook, o nouă aplicație Facebook.

Procesul este simplu. Mergi la Pagina pentru dezvoltatori Facebook (va trebui să vă înregistrați dacă nu ați scris niciodată o aplicație Facebook în trecut). Faceți clic pe Aplicații din meniu și selectați „Creați aplicație nouă”.

În fereastra pop-up, completați numele afișat al aplicației dvs., spațiul de nume, selectați o categorie și faceți clic pe Creare aplicație. Odată ce aplicația este creată, accesați pagina principală a aplicației și selectați Tabloul de bord. Aici veți obține AppID și valorile App Secret. Copiați acele valori într-un loc sigur, deoarece vom avea nevoie de ele mai târziu.

Apoi accesați Setările aplicației dvs. și faceți clic pe „+ Platforma aplicației” în partea de jos a paginii. În fereastra pop-up selectați „Site web” și apoi pe adresa URL a site-ului introduceți adresa URL a locației în care veți încărca instrumentul (Exemplu: https://localhost/). Faceți clic pe „Salvați modificările” și ați terminat!

Obțineți cheia API Datumbox

Pentru a accesa API-ul Datumbox înscrieți pentru un cont gratuit și vizitați-vă Panoul de acreditări API pentru a obține cheia API.

Dezvoltarea clasei Facebook Sentiment Analysis

În cele din urmă, tot ce trebuie să facem este să scriem o clasă simplă care să integreze cele două API-uri. Mai întâi apelează Facebook Graph Search, se autentifică, preia postările și apoi le transmite API-ului Datumbox pentru a le recupera polaritatea.

Iată codul clasei împreună cu comentariile necesare.

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

După cum puteți vedea mai sus pe constructor, transmitem cheile necesare pentru a accesa cele 2 API-uri. Pe metoda publică sentimentAnalysis() inițializam Clientul Facebook, ne autentificăm și recuperăm lista de postări. Rețineți că, dacă nu v-ați autorizat încă aplicația sau dacă nu sunteți conectat la Facebook cu contul dvs., veți fi redirecționat către Facebook.com pentru a vă autentifica și autoriza aplicația (este aplicația dvs., nu vă faceți griji cu privire la problemele de confidențialitate). Odată ce lista de postări este preluată, acestea sunt transmise la Datumbox API pentru a-și obține polaritatea.

esti gata! Sunteți gata să utilizați această clasă pentru a efectua Analiza sentimentelor pe Facebook. Puteți Descarca codul PHP complet al instrumentului Facebook Sentiment Analysis de la Github.

Utilizarea și extinderea implementării

Pentru a utiliza instrumentul furnizat, trebuie să creați aplicația Facebook așa cum este descris mai sus și apoi să o configurați modificând fișierul config.php. În acest fișier va trebui să puneți cheia Datumbox API, ID-ul aplicației Facebook și Secretul pe care le-ați copiat mai devreme.

În cele din urmă, în postarea anterioară am construit un sistem independent Instrumentul de analiză a sentimentelor Twitter. Nu vă va dura mai mult de 10 minute pentru a îmbina cele 2 implementări și a crea un singur instrument care este capabil să preia postări atât de pe Facebook, cât și de pe Twitter și să prezinte rezultatele într-un singur raport.

Dacă v-a plăcut articolul, vă rugăm să acordați un minut pentru a-l distribui pe Facebook sau Twitter! 🙂

Timestamp-ul:

Mai mult de la Datumbox