Kuinka rakentaa oma Facebookin tunneanalyysityökalu PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Kuinka rakentaa oma Facebook Sentiment Analysis Tool -työkalu

Tässä artikkelissa keskustellaan siitä, kuinka voit rakentaa helposti yksinkertaisen Facebook-mielialan analysointityökalun, joka pystyy luokittelemaan julkiset viestit (sekä käyttäjiltä että sivuilta) positiivisiksi, negatiivisiksi ja neutraaleiksi. Käytämme Facebookin Graph API -hakua ja Datumbox API 1.0v: tä. Samanlainen kuin Twitter Sentiment Analysis -työkalu että rakensimme muutama kuukausi sitten, tämä toteutus on kirjoitettu PHP: llä. Voit kuitenkin rakentaa erittäin helposti oman työkalusi valitsemallasi tietokonekielellä.

Päivitys: Datumbox Machine Learning Framework on nyt avoimen lähdekoodin ja ilmainen download. Jos haluat rakentaa Sentiment Analysis -luokittajan lyömättä API-rajoituksia, käytä luokkaa com.datumbox.applications.nlp.TextClassifier.

Työkalun täydellinen PHP-koodi löytyy osoitteesta Github.

Kuinka Facebook Sentiment Analysis toimii?

Kuten olemme keskustelleet aiemmissa artikkeleissa, esiintyminen Aistien analyysi vaatii edistyneiden koneoppimisen ja luonnollisen kielen prosessointitekniikoiden käyttämistä. Edellisissä viesteissä näimme yksityiskohtaisesti useita tekstiluokittelijoita, kuten Naiivi Bayes, The Softmax-regressio ja Max entropia, keskustelimme käytön tärkeydestä Ominaisuuksien valinta tekstien luokitteluongelmiin ja viimeinkin näimme, kuinka voidaan kehittää Multinomial Naive Bayes -luokittelija JAVA: ssa.

Sentiment-analyysin suorittaminen Facebookissa ei eroa merkittävästi aiemmin keskustelustamme. Lyhyesti sanottuna meidän on haettava facebook-viestit ja poistettava niiden sisältö ja sitten toimitettava ne tunnisteiksi avainsanojen yhdistelmien purkamiseksi. Jälkeenpäin suoritamme ominaisuuksien valinnan pitääksemme vain n-grammat, jotka ovat tärkeitä luokitteluongelman kannalta, ja koulutamme luokittelijamme tunnistamaan positiiviset, negatiiviset ja neutraalit viestit.

Edellä mainittua prosessia yksinkertaistetaan huomattavasti Datumbox-laitteilla Koneoppimisliittymä. Ainoa mitä on tehtävä sentimentti-analyysin suorittamiseksi Facebookissa, on soittaa Graph API -hakuun, jotta voidaan poimia kiinnostavat viestit, purkaa niiden teksti ja soittaa Datumbox Sentiment Analysis API -sovellukselle saadakseen niiden luokittelu.

Facebook Sentiment Analysis -työkalun rakentaminen

Facebook Sentiment Analysis -työkalun rakentamiseksi tarvitset kaksi asiaa: Facebook API: n käyttäminen julkisten viestien hakemiseen ja viestien napaisuuden arvioimiseksi heidän avainsanojensa perusteella. Ensimmäisessä tehtävässä käytämme Facebookin Graph API -hakua ja toisessa Datumbox API 1.0v.

Nopeutamme työkalun kehitystä käyttämällä 2 luokkaa: Facebookin PHP SDK jonka avulla voimme helposti käyttää kuvaajahakua ja Datumboxia PHP-API-asiakas. Jälleen kerran prosessin monimutkaisin tehtävä on luoda Facebook-sovellus, jonka avulla voimme noutaa viestit Facebookista. Datumbox-integraatio on pala kakkua.

Oman Facebook-sovelluksen luominen

Facebook-ilmapiiri-analyysiValitettavasti Facebook teki pakolliseksi todennuksen ennen käyttöä heidän Graph Search API -sovelluksensa. Onneksi ne tarjoavat erittäin helpon käytön SDK joka hoitaa suurimman osan integraation teknisistä yksityiskohdista. Vielä ennen sen käyttöä sinun on luotava Facebook-tililläsi uusi Facebook-sovellus.

Prosessi on yksinkertainen. Mene Facebook-kehittäjäsivu (Sinun on rekisteröidyttävä, jos et ole koskaan kirjoittanut Facebook-sovellusta aiemmin). Napsauta valikon Sovellukset-painiketta ja valitse ”Luo ​​uusi sovellus”.

Täytä ponnahdusikkunassa sovelluksesi näyttönimi, nimitila, valitse luokka ja napsauta Luo sovellus. Kun sovellus on luotu, siirry sovelluksen pääsivulle ja valitse Dashboard. Täältä saat AppID- ja App Secret -arvot. Kopioi arvot turvalliseen paikkaan, koska tarvitsemme niitä myöhemmin.

Siirry seuraavaksi sovelluksesi asetuksiin ja napsauta "+ App Platform" sivun alareunassa. Valitse ponnahdusikkunasta "Website" ja kirjoita sitten Sivuston URL-osoitteeseen sen sijainnin URL-osoite, johon lataat työkalusi (esimerkki: https://localhost/). Napsauta "Tallenna muutokset" ja olet valmis!

Hanki Datumbox API-avain

Datumbox-sovellusliittymän käyttö ilmoittautua ilmaiseksi tilille ja käy API-käyttöoikeustiedot -paneeli saadaksesi API-avaimesi.

Facebook Sentiment Analysis -luokan kehittäminen

Lopuksi meidän on kirjoitettava yksinkertainen luokka, joka integroi nämä kaksi sovellusliittymää. Soittaa ensin Facebook-hakuun, todentaa, hakee viestit ja siirtää ne sitten Datumbox-sovellusliittymään napaisuuden saamiseksi.

Tässä on luokan koodi ja tarvittavat kommentit.

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

Kuten yllä olevasta rakentajasta näet, lähetämme avaimet, joita tarvitaan pääsemään 2 sovellusliittymään. Käynnistämme julkisessa menetelmässä sentimentAnalysis () Facebook-asiakkaan, autentikoimme ja haemme viestiluettelon. Huomaa, että jos et ole vielä valtuuttanut sovellustasi tai jos et ole kirjautunut Facebookiin tililläsi, sinut ohjataan Facebook.comiin kirjautumaan sisään ja valtuuttamaan sovellus (se on sovelluksesi, ei hätää tietosuojakysymyksiin). Kun viestiluettelo on noudettu, ne siirretään Datumbox API: lle napaisuuden saavuttamiseksi.

Olet hyvä mennä! Olet valmis käyttämään tätä luokkaa Sentiment Analysis -analyysin suorittamiseen Facebookissa. Sinä pystyt download Githubin Facebook Sentiment Analysis -työkalun täydellinen PHP-koodi.

Toteutuksen käyttö ja laajentaminen

Jotta voit käyttää toimitettua työkalua, sinun on luotava Facebook-sovellus, kuten yllä on kuvattu, ja määritä se sitten muokkaamalla config.php-tiedostoa. Tähän tiedostoon sinun täytyy laittaa Datumbox API-avain, Facebook App Id ja Secret, jotka kopioit aiemmin.

Viimeinkin edellisessä viestissä olemme rakentaneet itsenäisen Twitter Sentiment Analysis -työkalu. Kahden toteutuksen yhdistäminen ja yhden työkalun luominen vie vain 10 minuuttia, kun pystyt noutamaan viestit sekä Facebookista että Twitteristä ja esittämään tulokset yhdessä raportissa.

Jos nautit artikkelista, ota hetki jakaa se Facebookissa tai Twitterissä! 🙂

Aikaleima:

Lisää aiheesta Datumbox