Hoe u uw eigen Facebook-sentimentanalysetool kunt bouwen PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Hoe u uw eigen Facebook Sentiment Analysis Tool kunt bouwen

In dit artikel zullen we bespreken hoe u eenvoudig een eenvoudige Facebook Sentiment Analysis-tool kunt bouwen die openbare berichten (zowel van gebruikers als van pagina's) kan classificeren als positief, negatief en neutraal. We gaan de Graph API Search van Facebook en de Datumbox API 1.0v gebruiken. Vergelijkbaar met de Tool voor Twitter-sentimentanalyse die we enkele maanden geleden hebben gebouwd, deze implementatie is geschreven in PHP, maar je kunt heel gemakkelijk je eigen tool bouwen in de computertaal van je keuze.

Update: het Datumbox Machine Learning Framework is nu open-source en gratis voor Download. Als u een Sentiment Analysis-classifier wilt bouwen zonder de API-beperkingen te halen, gebruikt u de klasse com.datumbox.applications.nlp.TextClassifier.

De volledige PHP-code van de tool is te vinden op GitHub.

Hoe Facebook Sentiment-analyse werkt?

Zoals we in eerdere artikelen hebben besproken, presteren Sentiment analyse vereist het gebruik van geavanceerde machine learning en natuurlijke taalverwerkingstechnieken. In de vorige berichten hebben we in detail verschillende tekstclassificaties gezien, zoals de Naรฏeve Bayes Softmax-regressie en Max entropiehebben we het belang van het gebruik besproken Functieselectie in tekstclassificatieproblemen en uiteindelijk zagen we hoe men een implementatie van de Multinomiale Naive Bayes-classificatie in JAVA.

Het uitvoeren van sentimentanalyse op Facebook verschilt niet significant van wat we in het verleden hebben besproken. In een notendop, we moeten de Facebook-berichten ophalen en hun inhoud extraheren en vervolgens tokeniseren om hun zoekwoordcombinaties te extraheren. Daarna voeren we functieselectie uit om alleen de n-grammen te behouden die belangrijk zijn voor het classificatieprobleem en trainen we onze classificeerder om de positieve, negatieve en neutrale berichten te identificeren.

Het bovenstaande proces is aanzienlijk vereenvoudigd door de Datumbox's te gebruiken Machine Learning-API. Het enige dat u hoeft te doen om sentimentanalyse op Facebook uit te voeren, is de Graph API-zoekopdracht aan te roepen om de berichten van belang te extraheren, hun tekst te extraheren en de Datumbox Sentiment Analysis API aan te roepen om hun classificatie te krijgen.

Het bouwen van de Facebook Sentiment Analysis-tool

Om de Facebook Sentiment Analysis-tool te bouwen, hebt u twee dingen nodig: Om Facebook API te gebruiken om de openbare berichten op te halen en om de polariteit van de berichten te evalueren op basis van hun zoekwoorden. Voor de eerste taak gebruiken we de Graph API-zoekopdracht van Facebook en voor de tweede de Datumbox API 1.0v.

We zullen de ontwikkeling van de tool versnellen door 2 klassen te gebruiken: De Facebook PHP-SDK waarmee we gemakkelijk toegang hebben tot de Graph-zoekopdracht en de Datumbox PHP-API-client. Nogmaals, de meest gecompliceerde taak in het proces is het maken van een Facebook-applicatie waarmee we de berichten van Facebook kunnen ophalen; de Datumbox integratie is een fluitje van een cent.

Je eigen Facebook-applicatie maken

facebook-sentiment-analyseHelaas heeft Facebook het authenticeren verplicht gesteld voordat toegang werd verkregen hun Graph Search API. Gelukkig bieden ze een zeer eenvoudig te gebruiken SDK die zorgt voor de meeste technische details van de integratie. Nog voordat u het gebruikt, moet u met uw Facebook-account een nieuwe Facebook-applicatie maken.

Het proces is simpel. Ga naar Facebook-ontwikkelaarspagina (u moet zich registreren als u in het verleden nog nooit een Facebook-applicatie heeft geschreven). Klik op Apps in het menu en selecteer "Nieuwe app maken".

Vul in het pop-upvenster de weergavenaam van uw applicatie, de naamruimte, selecteer een categorie en klik op App maken. Zodra de applicatie is gemaakt, gaat u naar de hoofdpagina van uw applicatie en selecteert u Dashboard. Hier krijgt u uw AppID en de App Secret-waarden. Kopieer die waarden op een veilige plaats, want we hebben ze later nodig.

Ga vervolgens naar de instellingen van uw applicatie en klik onderaan de pagina op โ€œ+ App Platformโ€. Selecteer in het pop-upvenster โ€œWebsiteโ€ en plaats vervolgens op het URL-adres van de site de URL van de locatie waar u uw tool wilt uploaden (bijvoorbeeld: https: // localhost /). Klik op "Wijzigingen opslaan" en je bent klaar!

Haal uw Datumbox API-sleutel op

Om toegang te krijgen tot de Datumbox API aanmelden voor een gratis account en bezoek uw Deelvenster API-referenties om uw API-sleutel te krijgen.

Het ontwikkelen van de Facebook Sentiment Analysis-klasse

Uiteindelijk hoeven we alleen maar een eenvoudige klasse te schrijven waarin de twee API's zijn geรฏntegreerd. Roept eerst de Facebook Graph Search op, verifieert, haalt de berichten op en geeft ze vervolgens door aan de Datumbox API om hun polariteit te achterhalen.

Hier is de code van de klas samen met de nodige opmerkingen.

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

Zoals je hierboven op de constructor kunt zien, geven we de sleutels door die nodig zijn om toegang te krijgen tot de 2 API's. Op de openbare methode sentimentAnalysis () initialiseren we de Facebook-client, authenticeren we en halen we de lijst met berichten op. Houd er rekening mee dat als u uw toepassing nog niet hebt geautoriseerd of als u niet met uw account bij Facebook bent aangemeld, u wordt omgeleid naar Facebook.com om in te loggen en de app te autoriseren (het is uw app, geen zorgen over privacyproblemen). Zodra de lijst met berichten is opgehaald, worden ze doorgegeven aan de Datumbox-API om hun polariteit te krijgen.

je bent klaar om te gaan! Je bent klaar om deze klasse te gebruiken om sentimentanalyse op Facebook uit te voeren. Jij kan Download de volledige PHP-code van de Facebook Sentiment Analysis-tool van Github.

De implementatie gebruiken en uitbreiden

Om de meegeleverde tool te gebruiken, moet u de Facebook-applicatie maken zoals hierboven beschreven en deze vervolgens configureren door het bestand config.php te wijzigen. In dit bestand moet u de Datumbox API-sleutel, de Facebook-app-id en het geheim die u eerder hebt gekopieerd, plaatsen.

Eindelijk in de vorige post hebben we een stand-alone gebouwd Tool voor Twitter-sentimentanalyse. Het duurt niet langer dan 10 minuten om de 2 implementaties samen te voegen en een enkele tool te maken die in staat is om berichten van zowel Facebook als Twitter op te halen en de resultaten in een enkel rapport te presenteren.

Als je het artikel leuk vond, neem dan even de tijd om het op Facebook of Twitter te delen! ๐Ÿ™‚

Tijdstempel:

Meer van Datumbox