Cómo construir su propia herramienta de análisis de sentimiento de Facebook PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Cómo construir tu propia herramienta de análisis de sentimientos de Facebook

En este artículo discutiremos cómo puede crear fácilmente una herramienta simple de Análisis de Sentimientos de Facebook capaz de clasificar las publicaciones públicas (tanto de los usuarios como de las páginas) como positivas, negativas y neutrales. Vamos a utilizar la búsqueda Graph API de Facebook y la API Datumbox API 1.0v. Similar a Herramienta de análisis de sentimientos de Twitter que construimos hace unos meses, esta implementación está escrita en PHP, sin embargo, puede construir fácilmente su propia herramienta en el lenguaje de computadora que elija.

Actualización: el marco de aprendizaje automático de Datumbox ahora es de código abierto y gratuito para descargar. Si desea crear un clasificador de Análisis de opinión sin alcanzar las limitaciones de la API, use la clase com.datumbox.applications.nlp.TextClassifier.

El código PHP completo de la herramienta se puede encontrar en Github.

¿Cómo funciona el análisis de sentimientos de Facebook?

Como discutimos en artículos anteriores, realizar Análisis de los sentimientos requiere el uso de técnicas avanzadas de aprendizaje automático y procesamiento del lenguaje natural. En las publicaciones anteriores vimos en detalle varios Clasificadores de texto como el Bayes ingenuos, la Regresión Softmax y del Max entropía, discutimos la importancia de usar Selección de características en problemas de clasificación de texto y finalmente vimos cómo se puede desarrollar una implementación de la Clasificador de Bayes ingenuo multinomial en JAVA.

Realizar el Análisis de sentimientos en Facebook no difiere significativamente de lo que discutimos en el pasado. En pocas palabras, necesitamos buscar las publicaciones de Facebook y extraer su contenido y luego tokenizarlas para extraer sus combinaciones de palabras clave. Luego realizamos la selección de funciones para mantener solo los n-gramos que son importantes para el problema de clasificación y entrenamos a nuestro clasificador para identificar las publicaciones positivas, negativas y neutrales.

El proceso anterior se simplifica significativamente mediante el uso de Datumbox API de aprendizaje automático. Todo lo que se necesita hacer para realizar un análisis de sentimientos en Facebook es llamar a la búsqueda Graph API para extraer las publicaciones de interés, extraer su texto y llamar a la API de análisis de sentimientos de Datumbox para obtener su clasificación.

Construyendo la herramienta de Análisis de Sentimientos de Facebook

Para crear la herramienta de análisis de sentimientos de Facebook, necesita dos cosas: utilizar la API de Facebook para obtener las publicaciones públicas y evaluar la polaridad de las publicaciones en función de sus palabras clave. Para la primera tarea, utilizaremos la búsqueda Graph API de Facebook y para la segunda la API Datumbox API 1.0v.

Aceleraremos el desarrollo de la herramienta mediante el uso de 2 clases: SDK PHP de Facebook lo que nos permitirá acceder fácilmente a la búsqueda de gráficos y al Datumbox Cliente PHP-API. Una vez más, la tarea más complicada del proceso es crear una aplicación de Facebook que nos permita obtener las publicaciones de Facebook; La integración de Datumbox es pan comido.

Creando tu propia aplicación de Facebook

análisis de sentimientos de facebookDesafortunadamente, Facebook hizo obligatorio autenticarse antes de acceder su API de búsqueda de gráficos. Afortunadamente, proporcionan un muy fácil de usar SDK que cuida la mayoría de los detalles técnicos de la integración. Aún antes de usarlo, debe crear usando su cuenta de Facebook una nueva aplicación de Facebook.

El proceso es simple. Ir Página de desarrolladores de Facebook (deberá registrarse si nunca ha escrito una aplicación de Facebook en el pasado). Haga clic en Aplicaciones en el menú y seleccione "Crear nueva aplicación".

En la ventana emergente, complete el Nombre para mostrar de su aplicación, el Espacio de nombres, seleccione una Categoría y haga clic en Crear aplicación. Una vez que se crea la aplicación, vaya a la página principal de su aplicación y seleccione Panel de control. Aquí es donde obtendrás tu AppID y los valores de App Secret. Copie esos valores en un lugar seguro ya que los necesitaremos más adelante.

A continuación, vaya a la Configuración de su aplicación y haga clic en "+ Plataforma de aplicaciones" en la parte inferior de la página. En la ventana emergente, seleccione "Sitio web" y luego en la dirección URL del sitio coloque la URL de la ubicación donde cargará su herramienta (Ejemplo: https: // localhost /). Haga clic en "Guardar cambios" y listo.

Obtenga su clave API de Datumbox

Para acceder a la API de Datumbox Regístrate para una cuenta gratis y visite su Panel de credenciales de API para obtener su clave API.

Desarrollando la clase de Análisis de Sentimientos de Facebook

Finalmente, todo lo que tenemos que hacer es escribir una clase simple que integre las dos API. Primero llama a Facebook Graph Search, se autentica, recupera las publicaciones y luego las pasa a la API de Datumbox para recuperar su polaridad.

Aquí está el código de la clase junto con los comentarios necesarios.

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

Como puede ver arriba en el constructor, pasamos las claves necesarias para acceder a las 2 API. En el método público sentimentAnalysis () inicializamos el cliente de Facebook, autenticamos y recuperamos la lista de publicaciones. Tenga en cuenta que si aún no ha autorizado su aplicación o si no ha iniciado sesión en Facebook con su cuenta, será redirigido a Facebook.com para iniciar sesión y autorizar la aplicación (es su aplicación, no se preocupe por problemas de privacidad). Una vez que se recupera la lista de publicaciones, se pasan a la API de Datumbox para obtener su polaridad.

tú eres bueno para irte. Está listo para usar esta clase para realizar análisis de sentimientos en Facebook. Usted puede descargar el código PHP completo de la herramienta de análisis de sentimientos de Facebook de Github.

Uso y expansión de la implementación

Para utilizar la herramienta proporcionada, debe crear la aplicación de Facebook como se describe anteriormente y luego configurarla modificando el archivo config.php. En este archivo, deberá colocar la clave API de Datumbox, el Id. De aplicación de Facebook y el secreto que copió anteriormente.

Finalmente en el post anterior hemos construido un independiente Herramienta de análisis de sentimientos de Twitter. No le llevará más de 10 minutos fusionar las 2 implementaciones y crear una sola herramienta que sea capaz de obtener publicaciones tanto de Facebook como de Twitter y presentar los resultados en un solo informe.

Si te ha gustado el artículo, tómate un minuto para compartirlo en Facebook o Twitter. 🙂

Sello de tiempo:

Mas de Caja de datos