Comment créer votre propre outil d'analyse des sentiments sur Facebook PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Comment créer votre propre outil d'analyse de sentiment Facebook

Dans cet article, nous discuterons de la façon dont vous pouvez créer facilement un simple outil d'analyse des sentiments Facebook capable de classer les publications publiques (à la fois des utilisateurs et des pages) comme positives, négatives et neutres. Nous allons utiliser la recherche API Graph de Facebook et l'API Datumbox 1.0v. Semblable à la Outil d'analyse des sentiments Twitter que nous avons construit il y a quelques mois, cette implémentation est écrite en PHP néanmoins vous pouvez construire très facilement votre propre outil dans le langage informatique de votre choix.

Mise à jour: le Datumbox Machine Learning Framework est désormais open-source et gratuit pour download. Si vous souhaitez créer un classificateur d'analyse des sentiments sans atteindre les limites de l'API, utilisez la classe com.datumbox.applications.nlp.TextClassifier.

Le code PHP complet de l'outil est disponible sur Github.

Comment fonctionne l'analyse des sentiments Facebook?

Comme nous l'avons vu dans les articles précédents, effectuer Analyse des sentiments nécessite l'utilisation de techniques avancées d'apprentissage automatique et de traitement du langage naturel. Dans les articles précédents, nous avons vu en détail plusieurs classificateurs de texte tels que le Naïf Bayes, Régression Softmax et par Entropie max, nous avons discuté de l'importance d'utiliser Sélection de fonctionnalité dans les problèmes de classification de texte et enfin nous avons vu comment on peut développer une implémentation du Classificateur multinomial Naive Bayes en JAVA.

L'analyse des sentiments sur Facebook ne diffère pas de manière significative de ce dont nous avons discuté dans le passé. En un mot, nous devons récupérer les publications Facebook et extraire leur contenu, puis nous les tokeniser afin d'extraire leurs combinaisons de mots clés. Ensuite, nous effectuons une sélection de fonctionnalités pour ne conserver que les n-grammes qui sont importants pour le problème de classification et nous formons notre classificateur à identifier les messages positifs, négatifs et neutres.

Le processus ci-dessus est considérablement simplifié en utilisant le Datumbox API d'apprentissage automatique. Tout ce qu'il faut faire pour effectuer une analyse des sentiments sur Facebook est d'appeler la recherche de l'API Graph pour extraire les publications d'intérêt, extraire leur texte et appeler l'API Datumbox Sentiment Analysis pour obtenir leur classification.

Création de l'outil d'analyse des sentiments Facebook

Afin de créer l'outil d'analyse des sentiments Facebook, vous avez besoin de deux choses: Utiliser l'API Facebook afin de récupérer les publications publiques et d'évaluer la polarité des publications en fonction de leurs mots-clés. Pour la première tâche, nous utiliserons la recherche de l'API Graph de Facebook et pour la seconde, l'API Datumbox 1.0v.

Nous accélérerons le développement de l'outil en utilisant 2 classes: SDK PHP Facebook ce qui nous permettra d'accéder facilement à la recherche Graph et à la Datumbox Client PHP-API. Une fois de plus, la tâche la plus compliquée du processus est de créer une application Facebook qui nous permettra de récupérer les publications de Facebook; l'intégration Datumbox est un jeu d'enfant.

Créer votre propre application Facebook

analyse des sentiments facebookMalheureusement, Facebook a rendu obligatoire l'authentification avant d'accéder leur API de recherche de graphes. Heureusement, ils fournissent un très facile à utiliser SDK qui prend en charge la plupart des détails techniques de l'intégration. Toujours avant de l'utiliser, vous devez créer en utilisant votre compte Facebook une nouvelle application Facebook.

Le processus est simple. Aller à Page des développeurs Facebook (vous devrez vous inscrire si vous n'avez jamais écrit d'application Facebook dans le passé). Cliquez sur Applications dans le menu et sélectionnez «Créer une nouvelle application».

Dans la fenêtre contextuelle, remplissez le nom d'affichage de votre application, l'espace de noms, sélectionnez une catégorie et cliquez sur Créer une application. Une fois l'application créée, accédez à la page principale de votre application et sélectionnez Tableau de bord. C'est là que vous obtiendrez votre AppID et les valeurs App Secret. Copiez ces valeurs dans un endroit sûr car nous en aurons besoin plus tard.

Allez ensuite dans les paramètres de votre application et cliquez sur « + App Platform » en bas de la page. Dans la fenêtre contextuelle, sélectionnez « Site Web », puis sur l'adresse URL du site, indiquez l'URL de l'emplacement où vous allez télécharger votre outil (Exemple : https://localhost/). Cliquez sur « Enregistrer les modifications » et vous avez terminé !

Obtenez votre clé API Datumbox

Pour accéder à l'API Datumbox s'inscricre pour un compte gratuit et visitez votre Panneau d'informations d'identification de l'API pour obtenir votre clé API.

Développer la classe d'analyse des sentiments Facebook

Enfin, tout ce que nous avons à faire est d'écrire une classe simple qui intègre les deux API. Appelle d'abord la recherche de graphes Facebook, authentifie, récupère les publications, puis les transmet à l'API Datumbox pour récupérer leur polarité.

Voici le code de la classe avec les commentaires nécessaires.

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

Comme vous pouvez le voir ci-dessus sur le constructeur, nous passons les clés nécessaires pour accéder aux 2 API. Sur la méthode publique sentimentAnalysis () on initialise le client Facebook, on s'authentifie et on récupère la liste des posts. Notez que si vous n'avez pas encore autorisé votre application ou si vous n'êtes pas connecté à Facebook avec votre compte, vous serez redirigé vers Facebook.com pour vous connecter et autoriser l'application (c'est votre application, pas de soucis de confidentialité). Une fois la liste des publications récupérée, elles sont transmises à l'API Datumbox pour obtenir leur polarité.

Tu es prêt! Vous êtes prêt à utiliser cette classe pour effectuer une analyse des sentiments sur Facebook. Vous pouvez download le code PHP complet de l'outil d'analyse des sentiments Facebook de Github.

Utilisation et extension de la mise en œuvre

Pour utiliser l'outil fourni, vous devez créer l'application Facebook comme décrit ci-dessus, puis la configurer en modifiant le fichier config.php. Dans ce fichier, vous devrez mettre la clé API Datumbox, l'identifiant et le secret d'application Facebook que vous avez copiés précédemment.

Enfin, dans le post précédent, nous avons construit un standalone Outil d'analyse des sentiments Twitter. Il ne vous faudra pas plus de 10 minutes pour fusionner les 2 implémentations et créer un seul outil capable de récupérer les publications de Facebook et Twitter et de présenter les résultats dans un seul rapport.

Si vous avez apprécié l'article, veuillez prendre une minute pour le partager sur Facebook ou Twitter! 🙂

Horodatage:

Plus de Boîte de données