Kako zgraditi svoje lastno Facebook orodje za analizo razpoloženja PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Kako sestaviti svoje Facebook orodje za analizo občutkov

V tem članku bomo razpravljali o tem, kako lahko preprosto zgradite preprosto Facebook orodje za analizo razpoloženja, ki je sposobno razvrstiti javne objave (tako uporabnikov kot strani) kot pozitivne, negativne in nevtralne. Uporabili bomo Facebook Graph API Search in Datumbox API 1.0v. Podobno kot pri Twitter orodje za analizo razpoloženja ki smo ga zgradili pred nekaj meseci, je ta izvedba napisana v PHP, kljub temu pa lahko zelo enostavno zgradite svoje orodje v računalniškem jeziku po vaši izbiri.

Posodobitev: Okvir za strojno učenje Datebox je zdaj odprtokoden in brez njega prenesi. Če želite zgraditi klasifikator analize razpoloženja, ne da bi zadeli omejitve API-ja, uporabite razred com.datumbox.applications.nlp.TextClassifier.

Celotno PHP kodo orodja lahko najdete na GitHub.

Kako deluje Facebook sentiment analiza?

Kot smo razpravljali v prejšnjih člankih, izvajanje Analiza občutka zahteva uporabo naprednih tehnik strojnega učenja in obdelave naravnega jezika. V prejšnjih objavah smo podrobno videli več klasifikatorjev besedila, kot je Naiven Bayesje Regresija Softmax in Največja entropija, smo razpravljali o pomembnosti uporabe Izbira lastnosti pri težavah s klasifikacijo besedil in končno smo videli, kako lahko razvijemo implementacijo Multinomski naivni Bayesov klasifikator v JAVI.

Izvajanje analize razpoloženja na Facebooku se ne razlikuje bistveno od tega, o čemer smo razpravljali v preteklosti. Na kratko, pridobiti moramo objave na Facebooku in izvleči njihovo vsebino, nato pa jih označiti z žetoni, da izvlečemo njihove kombinacije ključnih besed. Nato izvedemo izbiro funkcij, da ohranimo samo n-grame, ki so pomembni za problem klasifikacije, in naš klasifikator usposobimo za prepoznavanje pozitivnih, negativnih in nevtralnih objav.

Zgornji postopek je bistveno poenostavljen z uporabo Datumbox-jev API za strojno učenje. Vse, kar morate storiti za izvedbo analize razpoloženja na Facebooku, je, da pokličete iskanje Graph API, da izvlečete zanimive objave, izvlečete njihovo besedilo in pokličete API za analizo razpoloženja Datumbox, da dobite njihovo razvrstitev.

Izdelava orodja Facebook Sentiment Analysis

Za izgradnjo orodja Facebook Sentiment Analysis potrebujete dve stvari: Uporabiti Facebook API za pridobitev javnih objav in oceniti polarnost objav na podlagi njihovih ključnih besed. Za prvo nalogo bomo uporabili Facebookovo iskanje Graph API, za drugo pa Datumbox API 1.0v.

Razvoj orodja bomo pospešili z uporabo dveh razredov: The Facebook PHP SDK ki nam bo zlahka omogočil dostop do Graph search in Datumbox PHP-API-odjemalec. Ponovno je najbolj zapletena naloga v procesu izdelava aplikacije Facebook, ki nam bo omogočila pridobivanje objav s Facebooka; integracija Datumbox je kos pogače.

Ustvarjanje lastne Facebook aplikacije

facebook-analiza-razpoloženjaNa žalost je Facebook naredil obvezno preverjanje pristnosti pred dostopom njihov API za iskanje po grafih. Na srečo zagotavljajo zelo enostavno uporabo SDK ki poskrbi za večino tehničnih podrobnosti integracije. Še preden ga uporabite, morate s svojim računom Facebook ustvariti novo aplikacijo Facebook.

Postopek je preprost. Pojdi do Facebook stran za razvijalce (če še nikoli niste napisali Facebook aplikacije, se boste morali registrirati). V meniju kliknite Aplikacije in izberite »Ustvari novo aplikacijo«.

V pojavnem oknu vnesite prikazno ime vaše aplikacije, imenski prostor, izberite kategorijo in kliknite Ustvari aplikacijo. Ko je aplikacija ustvarjena, pojdite na glavno stran svoje aplikacije in izberite Nadzorna plošča. Tukaj boste dobili svoj AppID in App Secret vrednosti. Kopirajte te vrednosti na varno mesto, saj jih bomo potrebovali pozneje.

Nato pojdite v nastavitve vaše aplikacije in kliknite »+ Platforma aplikacije« na dnu strani. V pojavnem oknu izberite »Spletno mesto« in nato na naslov URL mesta vnesite URL lokacije, kamor boste naložili svoje orodje (Primer: https://localhost/). Kliknite »Shrani spremembe« in končali ste!

Pridobite ključ API Datumbox

Za dostop do Datumbox API prijavite za brezplačen račun in obiščite svoj Plošča s poverilnicami API-ja da dobite svoj ključ API.

Razvoj razreda Facebook Sentiment Analysis

Končno moramo le napisati preprost razred, ki združuje dva API-ja. Najprej pokliče Facebook Graph Search, preveri pristnost, pridobi objave in jih nato posreduje API-ju Datumbox, da pridobi njihovo polarnost.

Tukaj je koda razreda skupaj s potrebnimi komentarji.

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

Kot lahko vidite zgoraj, v konstruktorju posredujemo ključe, ki so potrebni za dostop do dveh API-jev. Na javni metodi sentimentAnalysis() inicializiramo odjemalca Facebook, avtentikiramo in pridobimo seznam objav. Upoštevajte, da če še niste avtorizirali svoje aplikacije ali če niste prijavljeni v Facebook s svojim računom, boste preusmerjeni na Facebook.com za prijavo in avtorizacijo aplikacije (to je vaša aplikacija, ne skrbite glede težav z zasebnostjo). Ko je seznam objav pridobljen, se posredujejo API-ju Datumbox, da pridobi njihovo polarnost.

Pripravljeni ste! Pripravljeni ste na uporabo tega tečaja za izvedbo analize razpoloženja na Facebooku. Ti lahko prenesi celotno PHP kodo orodja Facebook Sentiment Analysis iz Githuba.

Uporaba in razširitev izvedbe

Za uporabo priloženega orodja morate ustvariti aplikacijo Facebook, kot je opisano zgoraj, in jo nato konfigurirati tako, da spremenite datoteko config.php. V to datoteko boste morali vnesti ključ API Datumbox, ID aplikacije Facebook in Secret, ki ste ju prej kopirali.

Končno smo v prejšnji objavi zgradili samostojno Twitter orodje za analizo razpoloženja. Ne bo vam vzelo več kot 10 minut, da združite 2 izvedbi in ustvarite eno samo orodje, ki je sposobno pridobiti objave s Facebooka in Twitterja ter predstaviti rezultate v enem poročilu.

Če vam je bil članek všeč, si vzemite minuto in ga delite na Facebooku ali Twitterju! 🙂

Časovni žig:

Več od Datumbox