Kuidas luua oma Facebooki sentiment-analüüsi tööriist PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.

Kuidas luua oma Facebooki sentimentide analüüsi tööriist

Selles artiklis arutleme, kuidas saate hõlpsalt luua lihtsa Facebooki sentimendianalüüsi tööriista, mis suudab liigitada avalikud postitused (nii kasutajatelt kui ka lehtedelt) positiivseteks, negatiivseteks ja neutraalseteks. Kasutame Facebooki Graph API otsingut ja Datumbox API 1.0v. Sarnased Twitteri meeleoluanalüüsi tööriist mille me paar kuud tagasi ehitasime, on see teostus kirjutatud PHP-s, kuid sellegipoolest saate väga lihtsalt luua oma tööriista enda valitud arvutikeeles.

Värskendus: Datumboxi masinõppe raamistik on nüüd avatud lähtekoodiga ja tasuta lae alla. Kui soovite luua sentiment Analysis klassifikaatorit ilma API piiranguid järgimata, kasutage klassi com.datumbox.applications.nlp.TextClassifier.

Tööriista täieliku PHP-koodi leiate aadressilt Github.

Kuidas Facebooki sentimendi analüüs töötab?

Nagu eelmistes artiklites arutlesime, esinevad Sentimentide analüüs nõuab täiustatud masinõppe ja loomuliku keele töötlemise tehnikate kasutamist. Eelmistes postitustes nägime üksikasjalikult mitut teksti klassifikaatorit, näiteks Naiivne Bayes, Softmax regressioon ja Max entroopia, arutasime kasutamise tähtsust Funktsiooni valik tekstide klassifitseerimise probleemides ja lõpuks nägime, kuidas saab arendada rakendust Multinomaalne Naive Bayesi klassifikaator JAVA-s.

Sentimentanalüüsi tegemine Facebookis ei erine oluliselt sellest, mida me varem arutasime. Lühidalt, peame Facebooki postitused tõmbama ja nende sisu välja võtma ning seejärel märgistama need märksõnakombinatsioonide eraldamiseks. Seejärel teostame funktsioonide valiku, et säilitada ainult klassifitseerimisprobleemi jaoks olulised n-grammid, ja koolitame oma klassifikaatorit tuvastama positiivseid, negatiivseid ja neutraalseid postitusi.

Ülaltoodud protsessi on Datumboxi kasutamine oluliselt lihtsustatud Masinõppe API. Facebookis sentimentanalüüsi tegemiseks piisab, kui helistada Graph API otsingule, et eraldada huvipakkuvad postitused, eraldada nende tekst ja helistada Datumbox Sentiment Analysis API-le, et saada nende klassifikatsioon.

Facebooki sentiment-analüüsi tööriista loomine

Facebooki sentiment Analysis tööriista loomiseks vajate kahte asja: Facebooki API kasutamist avalike postituste toomiseks ja postituste polaarsuse hindamiseks nende märksõnade alusel. Esimese ülesande jaoks kasutame Facebooki Graph API otsingut ja teiseks Datumbox API 1.0v.

Kiirendame tööriista arendamist, kasutades kahte klassi: The Facebooki PHP SDK mis võimaldab meil hõlpsasti juurde pääseda Graafi otsingule ja Datumboxile PHP-API-klient. Taaskord on protsessi kõige keerulisem ülesanne Facebooki rakenduse loomine, mis võimaldab meil postitusi Facebookist tõmmata; Datumboxi integreerimine on käkitegu.

Oma Facebooki rakenduse loomine

facebook-sentiment-analüüsKahjuks muutis Facebook enne juurdepääsu autentimise kohustuslikuks nende Graph Search API. Õnneks pakuvad need väga lihtsat kasutamist SDK mis hoolitseb enamiku integreerimise tehniliste üksikasjade eest. Enne selle kasutamist peate siiski looma oma Facebooki kontoga uue Facebooki rakenduse.

Protsess on lihtne. Minema Facebooki arendajate leht (peate registreeruma, kui te pole kunagi varem Facebooki avaldust kirjutanud). Klõpsake menüüs Rakendused ja valige "Loo uus rakendus".

Hüpikaknas sisestage oma rakenduse kuvatav nimi, nimeruum, valige kategooria ja klõpsake nuppu Loo rakendus. Kui rakendus on loodud, minge oma rakenduse avalehele ja valige Armatuurlaud. Siit saate oma AppID ja rakenduse saladuse väärtused. Kopeerige need väärtused kindlasse kohta, kuna vajame neid hiljem.

Järgmisena minge oma rakenduse seadetesse ja klõpsake lehe allosas nuppu + Rakenduse platvorm. Valige hüpikaknas "Veebisait" ja seejärel sisestage saidi URL-i aadress selle asukoha URL, kuhu oma tööriista üles laadite (näide: https://localhost/). Klõpsake "Salvesta muudatused" ja oletegi valmis!

Hankige oma Datumbox API võti

Datumbox API-le juurdepääsuks registreerida tasuta konto saamiseks ja külastage oma API mandaatide paneel API-võtme saamiseks.

Facebooki sentimentanalüüsi klassi arendamine

Lõpuks kõik, mida peame tegema, on kirjutada lihtne klass, mis ühendab kaks API-d. Esmalt helistab Facebook Graph Search, autentib, toob postitused ja edastab need seejärel Datumbox API-le, et leida nende polaarsus.

Siin on klassi kood koos vajalike kommentaaridega.

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

Nagu näete ülal konstruktoris, edastame võtmed, mis on vajalikud kahele API-le juurdepääsuks. Avaliku meetodi sentimentAnalysis() abil initsialiseerime Facebooki kliendi, autentime ja hangime postituste loendi. Pange tähele, et kui te pole veel oma rakendust autoriseerinud või kui te pole oma kontoga Facebooki sisse logitud, suunatakse teid Facebook.com-ile, et sisse logida ja rakendus autoriseerida (see on teie rakendus, ärge muretsege privaatsusprobleemide pärast). Kui postituste loend on alla laaditud, edastatakse need polaarsuse saamiseks Datumbox API-le.

Sul on hea minna! Olete valmis seda klassi kasutama Facebookis sentiment-analüüsi tegemiseks. Sa saad lae alla Githubi Facebooki sentiment Analysis tööriista täielik PHP-kood.

Rakenduse kasutamine ja laiendamine

Kaasasoleva tööriista kasutamiseks peate ülalkirjeldatud viisil looma Facebooki rakenduse ja seejärel konfigureerima selle, muutes faili config.php. Sellesse faili peate sisestama Datumbox API võtme, Facebooki rakenduse ID ja saladuse, mille olete varem kopeerinud.

Lõpuks oleme eelmises postituses loonud eraldiseisva Twitteri meeleoluanalüüsi tööriist. Kahe rakenduse ühendamine ja ühe tööriista loomine, mis on võimeline laadima postitusi nii Facebookist kui ka Twitterist ning esitama tulemused ühes aruandes, ei võta teilt rohkem kui 10 minutit.

Kui teile artikkel meeldis, leidke hetk, et seda Facebookis või Twitteris jagada! 🙂

Ajatempel:

Veel alates Datumbox