Como construir sua própria ferramenta de análise de sentimento do Facebook PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

Como criar sua própria ferramenta de análise de sentimentos no Facebook

Neste artigo, discutiremos como você pode construir facilmente uma ferramenta simples de análise de sentimento do Facebook, capaz de classificar postagens públicas (tanto de usuários quanto de páginas) como positivas, negativas e neutras. Vamos usar o Graph API Search do Facebook e o Datumbox API 1.0v. Semelhante ao Ferramenta de análise de sentimento do Twitter que construímos há alguns meses, esta implementação é escrita em PHP, no entanto, você pode construir facilmente sua própria ferramenta na linguagem de computador de sua escolha.

Atualização: O Datumbox Machine Learning Framework agora é de código aberto e gratuito para download. Se você deseja construir um classificador de análise de sentimento sem atingir as limitações da API, use a classe com.datumbox.applications.nlp.TextClassifier.

O código PHP completo da ferramenta pode ser encontrado em Github.

Como funciona a análise de sentimento do Facebook?

Como discutimos em artigos anteriores, o desempenho Análise de Sentimentos requer o uso de técnicas avançadas de Aprendizado de Máquina e Processamento de Linguagem Natural. Nas postagens anteriores, vimos em detalhes vários classificadores de texto, como o Baías ingénuas, Regressão Softmax e os votos de Entropia máxima, discutimos a importância de usar Seleção de Recursos em problemas de classificação de texto e, finalmente, vimos como se pode desenvolver uma implementação do Classificador Multinomial Naive Bayes em JAVA.

A realização da análise de sentimento no Facebook não difere significativamente do que discutimos no passado. Em suma, precisamos buscar os posts do Facebook e extrair seu conteúdo e, em seguida, tokenizá-los para extrair suas combinações de palavras-chave. Em seguida, realizamos a seleção de recursos para manter apenas os n-gramas que são importantes para o problema de classificação e treinamos nosso classificador para identificar as postagens positivas, negativas e neutras.

O processo acima é significativamente simplificado usando o Datumbox API de aprendizado de máquina. Tudo o que se precisa fazer para realizar a análise de sentimento no Facebook é chamar a pesquisa Graph API para extrair as postagens de interesse, extrair seu texto e chamar a API Datumbox Sentiment Analysis para obter sua classificação.

Construindo a ferramenta de análise de sentimento do Facebook

Para construir a ferramenta de análise de sentimento do Facebook, você precisa de duas coisas: Usar a API do Facebook para buscar as postagens públicas e avaliar a polaridade das postagens com base em suas palavras-chave. Para a primeira tarefa, usaremos a pesquisa Graph API do Facebook e, para a segunda, a Datumbox API 1.0v.

Vamos agilizar o desenvolvimento da ferramenta usando 2 classes: O SDK de PHP do Facebook que nos permitirá acessar facilmente a pesquisa do Graph e o Datumbox Cliente API PHP. Mais uma vez, a tarefa mais complicada no processo é criar um aplicativo do Facebook que nos permitirá buscar as postagens do Facebook; a integração do Datumbox é moleza.

Criando seu próprio aplicativo do Facebook

análise de sentimentos do facebookInfelizmente, o Facebook tornou obrigatório a autenticação antes de acessar sua API Graph Search. Felizmente, eles fornecem uma ferramenta muito fácil de usar SDK que cuida da maioria dos detalhes técnicos da integração. Ainda antes de usá-lo, você deve criar usando sua conta do Facebook um novo aplicativo do Facebook.

O processo é simples. Vamos para Página de desenvolvedores do Facebook (você precisará se registrar se nunca tiver escrito um aplicativo do Facebook no passado). Clique em Aplicativos no menu e selecione “Criar Novo Aplicativo”.

Na janela pop-up, preencha o Nome de exibição do seu aplicativo, o Namespace, selecione uma categoria e clique em Criar aplicativo. Depois que o aplicativo for criado, vá para a página principal do seu aplicativo e selecione Painel. É aqui que você obterá os valores do AppID e do segredo do aplicativo. Copie esses valores em um local seguro, pois precisaremos deles mais tarde.

Em seguida, vá para as configurações do seu aplicativo e clique em “+ App Platform” na parte inferior da página. No pop-up selecione “Site” e a seguir no endereço URL do site coloque a URL do local onde você fará o upload de sua ferramenta (Exemplo: https://localhost/). Clique em “Salvar alterações” e pronto!

Obtenha sua chave de API do Datumbox

Para acessar a API Datumbox se inscrever para uma conta gratuita e visite o seu Painel de credenciais de API para obter sua chave de API.

Desenvolvendo a classe de análise de sentimento do Facebook

Finalmente, tudo o que precisamos fazer é escrever uma classe simples que integre as duas APIs. Primeiro chama o Facebook Graph Search, autentica, busca as postagens e depois as passa para a API Datumbox para recuperar sua polaridade.

Aqui está o código da classe junto com os comentários necessários.

<?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 você pode ver acima, no construtor, passamos as chaves necessárias para acessar as 2 APIs. No método público sentimentAnalysis () inicializamos o cliente Facebook, autenticamos e recuperamos a lista de postagens. Observe que se você ainda não autorizou seu aplicativo ou se não está conectado ao Facebook com sua conta, será redirecionado para o Facebook.com para fazer o login e autorizar o aplicativo (é o seu aplicativo, não se preocupe com questões de privacidade). Depois que a lista de postagens é recuperada, elas são passadas para a API Datumbox para obter sua polaridade.

Você está pronto para ir! Você está pronto para usar esta classe para realizar a análise de sentimento no Facebook. Você pode download o código PHP completo da ferramenta Facebook Sentiment Analysis do Github.

Usando e expandindo a implementação

Para usar a ferramenta fornecida, você precisa criar o aplicativo do Facebook conforme descrito acima e, em seguida, configurá-lo modificando o arquivo config.php. Nesse arquivo, você precisará colocar a chave da API do Datumbox, o ID do aplicativo do Facebook e o segredo que você copiou anteriormente.

Finalmente, na postagem anterior, construímos um autônomo Ferramenta de análise de sentimento do Twitter. Você não levará mais de 10 minutos para mesclar as 2 implementações e criar uma única ferramenta que é capaz de buscar postagens do Facebook e do Twitter e apresentar os resultados em um único relatório.

Se você gostou do artigo, reserve um minuto para compartilhá-lo no Facebook ou Twitter! 🙂

Carimbo de hora:

Mais de Caixa de dados