Πώς να δημιουργήσετε το δικό σας Εργαλείο Ανάλυσης Συναισθήματος στο Facebook PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Πώς να φτιάξετε το δικό σας εργαλείο ανάλυσης sentiment Facebook

Σε αυτό το άρθρο θα συζητήσουμε πώς μπορείτε να δημιουργήσετε εύκολα ένα απλό εργαλείο ανάλυσης συναισθημάτων Facebook ικανό να ταξινομήσει τις δημόσιες αναρτήσεις (τόσο από χρήστες όσο και από σελίδες) ως θετικές, αρνητικές και ουδέτερες. Πρόκειται να χρησιμοποιήσουμε την Αναζήτηση API API γραφήματος και το API Datumbox 1.0v. Παρόμοιο με το Εργαλείο ανάλυσης συναισθημάτων Twitter που χτίσαμε λίγους μήνες πίσω, αυτή η εφαρμογή είναι γραμμένη σε PHP, ωστόσο μπορείτε να δημιουργήσετε πολύ εύκολα το δικό σας εργαλείο στη γλώσσα υπολογιστή της επιλογής σας.

Ενημέρωση: Το Datumbox Machine Learning Framework είναι τώρα ανοιχτού κώδικα και δωρεάν κατεβάσετε. Εάν θέλετε να δημιουργήσετε έναν ταξινομητή ανάλυσης συναισθημάτων χωρίς να επιτύχετε τους περιορισμούς API, χρησιμοποιήστε την κλάση com.datumbox.applications.nlp.TextClassifier.

Μπορείτε να βρείτε τον πλήρη κωδικό PHP του εργαλείου Github.

Πώς λειτουργεί η Ανάλυση συναισθημάτων Facebook;

Όπως συζητήσαμε σε προηγούμενα άρθρα, η εκτέλεση Ανάλυση συναισθημάτων απαιτεί τη χρήση προηγμένων τεχνικών μηχανικής εκμάθησης και επεξεργασίας φυσικής γλώσσας. Στις προηγούμενες δημοσιεύσεις είδαμε λεπτομερώς αρκετούς ταξινομητές κειμένου όπως το Ναϊβ Μπέις, τη Παλινδρόμηση Softmax και την Μέγιστη εντροπία, συζητήσαμε τη σημασία της χρήσης Επιλογή χαρακτηριστικών σε προβλήματα ταξινόμησης κειμένου και τελικά είδαμε πώς μπορεί κάποιος να αναπτύξει μια εφαρμογή του Πολυεθνικός ταξινομητής Naive Bayes στην JAVA.

Η εκτέλεση ανάλυσης συναισθημάτων στο Facebook δεν διαφέρει σημαντικά από αυτά που συζητήσαμε στο παρελθόν. Με λίγα λόγια, πρέπει να πάρουμε τις αναρτήσεις στο facebook και να εξαγάγουμε το περιεχόμενό τους και στη συνέχεια να τις διαμορφώσουμε για να εξαγάγουμε τους συνδυασμούς λέξεων-κλειδιών τους. Στη συνέχεια εκτελούμε επιλογή χαρακτηριστικών για να διατηρούμε μόνο τα n-γραμμάρια που είναι σημαντικά για το πρόβλημα ταξινόμησης και εκπαιδεύουμε τον ταξινομητή μας να εντοπίζει τις θετικές, αρνητικές και ουδέτερες θέσεις.

Η παραπάνω διαδικασία απλοποιείται σημαντικά χρησιμοποιώντας τα Datumbox's API μηχανικής εκμάθησης. Το μόνο που χρειάζεται να κάνουμε για να κάνουμε ανάλυση συναισθημάτων στο Facebook είναι να καλέσουμε την αναζήτηση Graph API για να εξαγάγεις τις δημοσιεύσεις που μας ενδιαφέρουν, να εξαγάγεις το κείμενό τους και να καλέσεις το Datumbox Sentiment Analysis API για να πάρεις την ταξινόμησή τους.

Δημιουργία του εργαλείου ανάλυσης συναισθημάτων Facebook

Για να δημιουργήσετε το εργαλείο ανάλυσης συναισθημάτων Facebook χρειάζεστε δύο πράγματα: Για να χρησιμοποιήσετε το Facebook API για να ανακτήσετε τις δημόσιες αναρτήσεις και να αξιολογήσετε την πολικότητα των δημοσιεύσεων με βάση τις λέξεις-κλειδιά τους. Για την πρώτη εργασία θα χρησιμοποιήσουμε την αναζήτηση Graph API του Facebook και για τη δεύτερη το Datumbox API 1.0v.

Θα επιταχύνουμε την ανάπτυξη του εργαλείου χρησιμοποιώντας 2 κατηγορίες: Το Facebook PHP SDK που θα μας επιτρέψει εύκολα να αποκτήσουμε πρόσβαση στην Αναζήτηση γραφημάτων και στο Datumbox PHP-API-Πελάτης. Για άλλη μια φορά το πιο περίπλοκο έργο στη διαδικασία είναι η δημιουργία μιας εφαρμογής Facebook που θα μας επιτρέψει να ανακτήσουμε τις δημοσιεύσεις από το Facebook η ενσωμάτωση του Datumbox είναι ένα κομμάτι κέικ.

Δημιουργία της δικής σας εφαρμογής Facebook

Facebook-sentiment-analysisΔυστυχώς, το Facebook κατέστησε υποχρεωτικό τον έλεγχο ταυτότητας πριν από την πρόσβαση το API αναζήτησης γραφημάτων. Ευτυχώς παρέχουν πολύ εύκολο στη χρήση SDK που φροντίζει τις περισσότερες από τις τεχνικές λεπτομέρειες της ολοκλήρωσης. Πριν από τη χρήση του, πρέπει να δημιουργήσετε χρησιμοποιώντας τον λογαριασμό σας στο Facebook μια νέα εφαρμογή Facebook.

Η διαδικασία είναι απλή. Παω σε Σελίδα προγραμματιστών Facebook (θα χρειαστεί να εγγραφείτε εάν δεν έχετε γράψει ποτέ μια εφαρμογή Facebook στο παρελθόν). Κάντε κλικ στο Εφαρμογές στο μενού και επιλέξτε "Δημιουργία νέας εφαρμογής".

Στο αναδυόμενο παράθυρο συμπληρώστε το Εμφανιζόμενο Όνομα της εφαρμογής σας, το Χώρος ονομάτων, επιλέξτε Κατηγορία και κάντε κλικ στο Δημιουργία εφαρμογής. Μόλις δημιουργηθεί η εφαρμογή, μεταβείτε στην κύρια σελίδα της εφαρμογής σας και επιλέξτε Πίνακας ελέγχου. Εδώ θα λάβετε τις τιμές AppID και App Secret. Αντιγράψτε αυτές τις τιμές σε ασφαλές μέρος, καθώς θα τις χρειαζόμαστε αργότερα.

Στη συνέχεια, μεταβείτε στις Ρυθμίσεις της εφαρμογής σας και κάντε κλικ στο "+ App Platform" στο κάτω μέρος της σελίδας. Στο αναδυόμενο παράθυρο επιλέξτε «Ιστότοπος» και, στη συνέχεια, στη διεύθυνση URL τοποθεσίας βάλτε τη διεύθυνση URL της τοποθεσίας όπου θα ανεβάσετε το εργαλείο σας (Παράδειγμα: https://localhost/). Κάντε κλικ στο «Αποθήκευση αλλαγών» και είστε έτοιμοι!

Αποκτήστε το κλειδί API του Datumbox

Για πρόσβαση στο API Datumbox εγγραφείτε για έναν δωρεάν λογαριασμό και επισκεφτείτε το Πίνακας διαπιστευτηρίων API για να λάβετε το κλειδί API σας.

Ανάπτυξη της κλάσης Facebook Sentiment Analysis

Τέλος, το μόνο που χρειάζεται να κάνουμε είναι να γράψουμε μια απλή τάξη που ενσωματώνει τα δύο API. Πρώτα καλεί την Αναζήτηση γραφήματος Facebook, ελέγχει τον έλεγχο ταυτότητας, αναλαμβάνει τις αναρτήσεις και μετά τις μεταφέρει στο Datumbox API για να ανακτήσει την πολικότητά τους.

Εδώ είναι ο κωδικός της τάξης μαζί με τα απαραίτητα σχόλια.

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

Όπως μπορείτε να δείτε παραπάνω στον κατασκευαστή περνάμε τα κλειδιά που απαιτούνται για την πρόσβαση στα 2 API. Στη δημόσια μέθοδο sentimentAnalysis () αρχικοποιούμε το Facebook Client, ελέγχουμε τον έλεγχο ταυτότητας και ανακτούμε τη λίστα των δημοσιεύσεων. Λάβετε υπόψη ότι εάν δεν έχετε ακόμη εξουσιοδοτήσει την εφαρμογή σας ή εάν δεν έχετε συνδεθεί στο Facebook με τον λογαριασμό σας, θα ανακατευθυνθείτε στο Facebook.com για να συνδεθείτε και να εξουσιοδοτήσετε την εφαρμογή (είναι η εφαρμογή σας, δεν ανησυχείτε για θέματα απορρήτου). Μόλις ανακτηθεί η λίστα των αναρτήσεων, μεταβιβάζονται στο Datumbox API για να πάρουν την πολικότητά τους.

Έτοιμος! Είστε έτοιμοι να χρησιμοποιήσετε αυτήν την τάξη για να εκτελέσετε Ανάλυση συναισθημάτων στο Facebook. Μπορείς κατεβάσετε ο πλήρης κωδικός PHP του εργαλείου Facebook Sentiment Analysis από το Github.

Χρήση και επέκταση της εφαρμογής

Για να χρησιμοποιήσετε το παρεχόμενο εργαλείο θα πρέπει να δημιουργήσετε την εφαρμογή Facebook όπως περιγράφεται παραπάνω και στη συνέχεια να το διαμορφώσετε τροποποιώντας το αρχείο config.php. Σε αυτό το αρχείο θα πρέπει να βάλετε το κλειδί API του Datumbox, το αναγνωριστικό εφαρμογής Facebook και το μυστικό που αντιγράψατε νωρίτερα.

Τέλος στην προηγούμενη δημοσίευση δημιουργήσαμε ένα αυτόνομο Εργαλείο ανάλυσης συναισθημάτων Twitter. Δεν θα χρειαστείτε περισσότερο από 10 λεπτά για να συγχωνεύσετε τις 2 υλοποιήσεις και να δημιουργήσετε ένα μόνο εργαλείο που μπορεί να ανακτήσει αναρτήσεις τόσο από το Facebook όσο και από το Twitter και να παρουσιάσει τα αποτελέσματα σε μία μόνο αναφορά.

Εάν σας άρεσε το άρθρο, αφιερώστε ένα λεπτό για να το μοιραστείτε στο Facebook ή στο Twitter! 🙂

Σφραγίδα ώρας:

Περισσότερα από Databox