Hvordan bygge ditt eget Facebook-sentimentanalyseverktøy PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Slik bygger du ditt eget Facebook Sentiment Analysis Tool

I denne artikkelen vil vi diskutere hvordan du enkelt kan lage et enkelt Facebook Sentiment Analyse-verktøy som kan klassifisere offentlige innlegg (både fra brukere og fra sider) som positive, negative og nøytrale. Vi skal bruke Facebooks Graph API Search og Datumbox API 1.0v. Ligner på Twitter sentiment analyseverktøy som vi bygde for noen måneder tilbake, er denne implementeringen skrevet i PHP, men du kan veldig enkelt bygge ditt eget verktøy på det datorspråket du ønsker.

Oppdatering: Datumbox Machine Learning Framework er nå åpen kildekode og gratis å nedlasting. Hvis du vil bygge en Sentiment Analyse-klassifiserer uten å treffe API-begrensningene, bruker du com.datumbox.applications.nlp.TextClassifier-klassen.

Du finner den komplette PHP-koden til verktøyet på Github.

Hvordan Facebook Sentiment Analyse fungerer?

Som vi diskuterte i tidligere artikler, utfører Sentiment Analyse krever bruk av avanserte teknikker for maskinlæring og prosessering av naturlige språk. I de forrige innleggene så vi i detalj flere tekstklassifikatorer som Naiv Bayesden Softmax-regresjon og Maks entropi, diskuterte vi viktigheten av å bruke Funksjonsvalg i tekstklassifiseringsproblemer og til slutt så vi hvordan man kan utvikle en implementering av Multinomial Naive Bayes klassifiserer i JAVA.

Å utføre sentimentanalyse på Facebook skiller seg ikke nevneverdig fra det vi diskuterte tidligere. I et nøtteskall, må vi hente facebook-innleggene og trekke ut innholdet, og deretter markere dem for å trekke ut søkeordkombinasjonene deres. Etterpå utfører vi funksjonsvalg for å beholde bare n-gram som er viktige for klassifiseringsproblemet, og vi trener klassifiseringen vår til å identifisere de positive, negative og nøytrale innleggene.

Ovennevnte prosess er betydelig forenklet ved bruk av Datumbox API for maskinlæring. Alt du trenger å gjøre for å utføre sentimentanalyse på Facebook er å ringe graf-API-søket for å trekke ut innleggene av interesse, trekke ut teksten og ringe til Datumbox Sentiment Analysis API for å få klassifiseringen deres.

Bygge verktøyet Facebook Sentiment Analyse

For å bygge Facebook Sentiment Analysis-verktøyet trenger du to ting: Å bruke Facebook API for å hente de offentlige innleggene og for å evaluere polariteten til innleggene basert på søkeordene deres. For den første oppgaven vil vi bruke Facebooks Graph API-søk og for den andre Datumbox API 1.0v.

Vi vil fremskynde utviklingen av verktøyet ved å bruke to klasser: Facebook PHP SDK noe som enkelt lar oss få tilgang til Graftsøket og Datumbox PHP-API-klient. Nok en gang er den mest kompliserte oppgaven i prosessen å lage en Facebook-applikasjon som lar oss hente innleggene fra Facebook; Integrering av Datumbox er et stykke kake.

Opprette din egen Facebook-applikasjon

Facebook-følelse-analyseDessverre gjorde Facebook det obligatorisk å autentisere før tilgang deres Graph Search API. Heldigvis gir de en veldig enkel å bruke SDK som tar vare på de fleste av de tekniske detaljene i integrasjonen. Fortsatt før du bruker den, må du opprette ved å bruke din Facebook-konto en ny Facebook-applikasjon.

Prosessen er enkel. Gå til Facebook Developers-siden (du må registrere deg hvis du aldri har skrevet en Facebook-applikasjon før). Klikk på Apps på menyen og velg “Create New App”.

I popup-vinduet fyller du ut visningsnavnet til applikasjonen din, navnefeltet, velger en kategori og klikker på Opprett app. Når applikasjonen er opprettet, går du til hovedsiden i applikasjonen og velger Dashboard. Det er her du får verdiene dine AppID og App Secret. Kopier disse verdiene på et trygt sted siden vi trenger dem senere.

Gå deretter til innstillingene for applikasjonen din og klikk "+ Appplattform" nederst på siden. Velg "Nettsted" i popup-vinduet, og legg deretter URL-adressen til stedet der du skal laste opp verktøyet (eksempel: https://localhost/) på URL-adressen til nettstedet. Klikk "Lagre endringer" og du er ferdig!

Få din API-nøkkel til Datumbox

For å få tilgang til Datumbox API påmelding for en gratis konto og besøk din API-legitimasjonspanel for å få API-nøkkelen.

Utvikle klassen for Facebook-sentimentanalyse

Til slutt alt vi trenger å gjøre er å skrive en enkel klasse som integrerer de to API-ene. Først ringer Facebook Graph Search, autentiserer, henter innleggene og sender dem deretter til Datumbox API for å hente polariteten deres.

Her er koden til klassen sammen med nødvendige 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 ser over på konstruktøren, passerer vi nøklene som kreves for å få tilgang til de to API-ene. På den offentlige metoden sentimentAnalysis () initialiserer vi Facebook-klienten, vi autentiserer og henter listen over innlegg. Merk at hvis du ennå ikke har autorisert søknaden din, eller hvis du ikke er logget inn på Facebook med kontoen din, vil du bli omdirigert til Facebook.com for å logge inn og autorisere appen (det er appen din, ingen bekymringer om personvernproblemer). Når listen over innlegg er hentet, blir de sendt til Datumbox API for å få sin polaritet.

Du er god å gå! Du er klar til å bruke denne klassen til å utføre sentimentanalyse på Facebook. Du kan nedlasting den komplette PHP-koden til Facebook Sentiment Analysis-verktøyet fra Github.

Bruke og utvide implementeringen

For å bruke det medfølgende verktøyet må du opprette Facebook-applikasjonen som beskrevet ovenfor og deretter konfigurere den ved å endre config.php-filen. I denne filen må du plassere Datumbox API-nøkkelen, Facebook App-ID og Secret som du kopierte tidligere.

Endelig i forrige innlegg har vi bygget en frittstående Twitter sentiment analyseverktøy. Det vil ikke ta deg mer enn 10 minutter å slå sammen de to implementeringene og lage et enkelt verktøy som er i stand til å hente innlegg både fra Facebook og Twitter og presentere resultatene i en enkelt rapport.

Hvis du likte artikkelen, kan du ta et øyeblikk på å dele den på Facebook eller Twitter! 🙂

Tidstempel:

Mer fra Datoboks