Hur man bygger ditt eget Facebook-sentimentanalysverktyg PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Hur du bygger ditt eget Facebook Sentiment Analysverktyg

I den här artikeln kommer vi att diskutera hur du enkelt kan bygga ett enkelt verktyg för Facebook Sentiment Analysis som kan klassificera offentliga inlägg (både från användare och från sidor) som positiva, negativa och neutrala. Vi kommer att använda Facebooks Graph API Search och Datumbox API 1.0v. Liknar Verktyg för Twitter Sentiment Analysis som vi byggde för några månader sedan, den här implementeringen är skriven i PHP, men du kan enkelt bygga ditt eget verktyg på det datorspråk du väljer.

Uppdatering: Datumbox Machine Learning Framework är nu öppen källkod och gratis att ladda ner. Om du vill bygga en Sentiment Analysis-klassificerare utan att träffa API-begränsningarna, använd klassen com.datumbox.applications.nlp.TextClassifier.

Den fullständiga PHP-koden för verktyget finns på Github.

Hur fungerar Facebook-sentimentanalys?

Som vi diskuterade i tidigare artiklar, att utföra Sentimentanalys kräver att du använder avancerad maskininlärning och naturliga språkbehandlingstekniker. I de tidigare inläggen såg vi i detalj flera textklassificerare som t.ex Naiva Bayes, den Softmax regression och Max entropidiskuterade vi vikten av att använda Funktionsval i textklassificeringsproblem och slutligen såg vi hur man kan utveckla en implementering av Multinomial Naiv Bayes klassificerare i JAVA.

Att utföra sentimentanalyser på Facebook skiljer sig inte nämnvärt från det vi diskuterade tidigare. I ett nötskal måste vi hämta Facebook-inläggen och extrahera deras innehåll och sedan tokenisera dem för att extrahera deras sökordskombinationer. Efteråt utför vi funktionsval för att bara behålla de n-gram som är viktiga för klassificeringsproblemet och vi tränar vår klassificerare att identifiera de positiva, negativa och neutrala inläggen.

Ovanstående process förenklas avsevärt genom att använda Datumboxens Machine Learning API. Allt man behöver göra för att utföra sentimentanalys på Facebook är att anropa Graph API-sökningen för att extrahera inläggen av intresse, extrahera deras text och anropa Datumbox Sentiment Analysis API för att få deras klassificering.

Bygger verktyget Facebook Sentiment Analysis

För att bygga verktyget Facebook Sentiment Analysis behöver du två saker: Att använda Facebooks API för att hämta de offentliga inläggen och för att utvärdera inläggens polaritet baserat på deras sökord. För den första uppgiften kommer vi att använda Facebooks Graph API-sökning och för den andra Datumbox API 1.0v.

Vi kommer att påskynda utvecklingen av verktyget genom att använda två klasser: The Facebook PHP SDK vilket gör att vi enkelt kan komma åt Graph-sökningen och Datumboxen PHP-API-klient. Återigen är den mest komplicerade uppgiften i processen att skapa en Facebook-applikation som gör att vi kan hämta inläggen från Facebook; Datumbox-integrationen är en piece of cake.

Skapa din egen Facebook-applikation

facebook-sentiment-analysTyvärr gjorde Facebook det obligatoriskt att autentisera innan åtkomst deras Graph Search API. Tack och lov ger de en mycket enkel att använda SDK som tar hand om de flesta tekniska detaljerna i integrationen. Innan du använder det måste du skapa en ny Facebook-applikation genom att använda ditt Facebook-konto.

Processen är enkel. Gå till Facebooks utvecklarsida (du måste registrera dig om du aldrig har skrivit en Facebook-applikation tidigare). Klicka på Appar i menyn och välj "Skapa ny app".

I popup-fönstret fyller du i visningsnamnet för din applikation, namnområdet, välj en kategori och klicka på Skapa app. När applikationen har skapats, gå till huvudsidan för din applikation och välj Dashboard. Det är här du får ditt AppID och App Secret-värdena. Kopiera dessa värden på en säker plats eftersom vi kommer att behöva dem senare.

Gå sedan till inställningarna för din applikation och klicka på "+ Appplattform" längst ned på sidan. Välj "Webbplats" i popup-fönstret och ange sedan webbadressen till den plats där du ska ladda upp ditt verktyg (exempel: https://localhost/). Klicka på "Spara ändringar" och du är klar!

Skaffa din Datumbox API-nyckel

För att komma åt Datumbox API registrera dig för ett gratis konto och besök din Panel för API-uppgifter för att få din API-nyckel.

Utveckla klassen Facebook Sentiment Analysis

Slutligen är allt vi behöver göra att skriva en enkel klass som integrerar de två API:erna. Anropar först Facebook Graph Search, autentiserar, hämtar inläggen och skickar dem sedan till Datumbox API för att hämta deras polaritet.

Här är klassens kod tillsammans med nödvändiga kommentarer.

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

Som du kan se ovan på konstruktorn skickar vi nycklarna som krävs för att komma åt de 2 API:erna. På den offentliga metoden sentimentAnalysis() initierar vi Facebook-klienten, vi autentiserar och vi hämtar listan med inlägg. Observera att om du ännu inte har auktoriserat din applikation eller om du inte är inloggad på Facebook med ditt konto, kommer du att omdirigeras till Facebook.com för att logga in och auktorisera appen (det är din app, inga problem med sekretessproblem). När listan med inlägg har hämtats skickas de till Datumbox API för att få deras polaritet.

Du är klar att gå! Du är redo att använda den här klassen för att utföra sentimentanalys på Facebook. Du kan ladda ner den fullständiga PHP-koden för Facebook Sentiment Analysis-verktyget från Github.

Använda och utöka implementeringen

För att använda det medföljande verktyget måste du skapa Facebook-applikationen enligt beskrivningen ovan och sedan konfigurera den genom att ändra filen config.php. I den här filen måste du lägga till API-nyckeln för Datumbox, Facebook-appens ID och Secret som du kopierade tidigare.

Slutligen i förra inlägget har vi byggt en fristående Verktyg för Twitter Sentiment Analysis. Det kommer inte att ta dig mer än 10 minuter att slå samman de två implementeringarna och skapa ett enda verktyg som kan hämta inlägg både från Facebook och Twitter och presentera resultaten i en enda rapport.

Om du gillade artikeln, ägna en minut till att dela den på Facebook eller Twitter! 🙂

Tidsstämpel:

Mer från Datumbox