Hogyan készítsd el saját Facebook-hangulatelemző eszközöd, a PlatoBlockchain adatintelligencia. Függőleges keresés. Ai.

Hogyan készítsd el saját Facebook-hangulatelemző eszközödet

Ebben a cikkben megvitatjuk, hogyan hozhat létre egyszerűen egy egyszerű Facebook-hangulatelemző eszközt, amely képes a nyilvános bejegyzéseket (mind a felhasználóktól, mind az oldalaktól) pozitív, negatív és semleges kategóriába sorolni. A Facebook Graph API Search és a Datumbox API 1.0v alkalmazását fogjuk használni. Hasonló a Twitter hangulatelemző eszköz amit néhány hónapja építettünk, ez a megvalósítás PHP-ben íródott, ennek ellenére nagyon könnyen elkészítheti saját eszközét az Ön által választott számítógépes nyelven.

Frissítés: A Datumbox Machine Learning Framework nyílt forráskódú és ingyenes letöltés. Ha érzelemelemzési osztályozót szeretne létrehozni anélkül, hogy meghaladná az API-korlátokat, használja a com.datumbox.applications.nlp.TextClassifier osztályt.

Az eszköz teljes PHP kódja megtalálható a GitHub.

Hogyan működik a Facebook hangulatelemzés?

Ahogyan azt a korábbi cikkekben tárgyaltuk, előadó Érzelmi elemzés fejlett gépi tanulási és természetes nyelvi feldolgozási technikákat igényel. Az előző bejegyzésekben részletesen láthattunk több szövegosztályozót, mint például a Naiv Bayes, a Softmax regresszió és a Max entrópia, megbeszéltük a használat fontosságát Funkció kiválasztása szövegosztályozási problémákban, és végül láttuk, hogyan lehet kidolgozni a megvalósítást Multinomiális Naive Bayes osztályozó JAVA nyelven.

A hangulatelemzés végrehajtása a Facebookon nem különbözik lényegesen attól, amit korábban megbeszéltünk. Dióhéjban le kell kérnünk a Facebook-bejegyzéseket, ki kell bontani a tartalmukat, majd tokenizálnunk kell őket, hogy kivonhassuk a kulcsszókombinációikat. Ezt követően a jellemzők kiválasztását végezzük, hogy csak az osztályozási probléma szempontjából fontos n-grammokat tartsuk meg, és az osztályozónkat megtanítjuk a pozitív, negatív és semleges bejegyzések azonosítására.

A fenti folyamat jelentősen leegyszerűsödik a Datumbox használatával Machine Learning API. Mindössze annyit kell tennie, hogy a Facebookon érzelemelemzést végezzen, csak hívja a Graph API-keresést az érdeklődésre számot tartó bejegyzések kinyeréséhez, a szövegük kinyeréséhez, és hívja a Datumbox Sentiment Analysis API-t, hogy megkapja a besorolásukat.

A Facebook hangulatelemző eszközének felépítése

A Facebook Sentiment Analysis eszköz elkészítéséhez két dologra van szükség: Facebook API használatára a nyilvános bejegyzések lekérésére és a bejegyzések polaritásának kiértékelésére a kulcsszavak alapján. Az első feladathoz a Facebook Graph API keresőjét, a másodikhoz a Datumbox API 1.0v-t használjuk.

Felgyorsítjuk az eszköz fejlesztését 2 osztály használatával: A Facebook PHP SDK amivel könnyen elérhetjük a Graph keresést és a Datumboxot PHP-API-kliens. A folyamat legbonyolultabb feladata ismét egy Facebook-alkalmazás létrehozása, amely lehetővé teszi a bejegyzések lekérését a Facebookról; a Datumbox integráció egy szelet torta.

Saját Facebook alkalmazás létrehozása

facebook-hangulatelemzésSajnos a Facebook kötelezővé tette a hitelesítést a hozzáférés előtt Graph Search API-jukat. Szerencsére nagyon egyszerű használatot biztosítanak SDK amely gondoskodik az integráció technikai részleteiről. Mégis használat előtt létre kell hoznia egy új Facebook-alkalmazást a Facebook-fiókjával.

A folyamat egyszerű. Menj Facebook fejlesztői oldal (Regisztrálnia kell, ha még soha nem írt Facebook-jelentkezést). Kattintson az Alkalmazások elemre a menüben, és válassza az „Új alkalmazás létrehozása” lehetőséget.

A felugró ablakban töltse ki az alkalmazás megjelenített nevét, a névteret, válasszon egy kategóriát, és kattintson az Alkalmazás létrehozása gombra. Az alkalmazás létrehozása után lépjen az alkalmazás főoldalára, és válassza az Irányítópult lehetőséget. Itt kapja meg AppID-jét és az App Secret értékeit. Másolja át ezeket az értékeket egy biztonságos helyre, mert később szükségünk lesz rájuk.

Ezután lépjen az alkalmazás beállításaihoz, és kattintson az oldal alján található „+ App Platform” elemre. A felugró ablakban válassza ki a „Webhely” lehetőséget, majd a Webhely URL-címében adja meg annak a helynek az URL-jét, ahová fel fogja tölteni az eszközt (Példa: https://localhost/). Kattintson a „Módosítások mentése” gombra, és kész!

Szerezze meg Datumbox API-kulcsát

A Datumbox API eléréséhez regisztrálj ingyenes fiókért, és látogassa meg API hitelesítő adatok panel hogy megkapja az API-kulcsot.

A Facebook Sentiment Analysis osztály fejlesztése

Végül csak annyit kell tennünk, hogy írjunk egy egyszerű osztályt, amely integrálja a két API-t. Először meghívja a Facebook Graph Search-ot, hitelesíti, lekéri a bejegyzéseket, majd átadja a Datumbox API-nak, hogy lekérje a polaritásukat.

Itt található az osztály kódja a szükséges megjegyzésekkel együtt.

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

Ahogy fentebb látható a konstruktoron, átadjuk azokat a kulcsokat, amelyek a 2 API eléréséhez szükségesek. A sentimentAnalysis() nyilvános metódussal inicializáljuk a Facebook klienst, hitelesítjük és lekérjük a bejegyzések listáját. Vegye figyelembe, hogy ha még nem engedélyezte az alkalmazást, vagy ha nem jelentkezett be a Facebookra a fiókjával, a rendszer átirányítja a Facebook.com oldalra, ahol bejelentkezhet és engedélyezheti az alkalmazást (ez az Ön alkalmazása, nem kell aggódnia az adatvédelmi problémák miatt). A bejegyzések listájának lekérése után a rendszer átadja a Datumbox API-nak, hogy megkapja a polaritásukat.

Jól indulsz! Készen áll arra, hogy használja ezt az osztályt érzelemelemzés elvégzésére a Facebookon. tudsz letöltés a Facebook Sentiment Analysis eszközének teljes PHP-kódja a Githubtól.

A megvalósítás használata és bővítése

A mellékelt eszköz használatához létre kell hoznia a Facebook alkalmazást a fent leírtak szerint, majd konfigurálnia kell a config.php fájl módosításával. Ebben a fájlban el kell helyeznie a Datumbox API-kulcsot, a Facebook App Id-t és a Titkot, amelyeket korábban másolt.

Végül az előző bejegyzésben építettünk egy önállót Twitter hangulatelemző eszköz. Nem tart több mint 10 percet a 2 implementáció egyesítése és egyetlen eszköz létrehozása, amely képes a Facebook és a Twitter bejegyzéseinek lekérésére és az eredmények egyetlen jelentésben történő bemutatására.

Ha tetszett a cikk, kérjük, szánjon egy percet és ossza meg Facebookon vagy Twitteren! 🙂

Időbélyeg:

Még több Datumbox