Jak zbudować własne narzędzie do analizy nastrojów na Facebooku PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Jak zbudować własne narzędzie do analizy nastrojów na Facebooku

W tym artykule omówimy, w jaki sposób można łatwo zbudować proste narzędzie do analizy nastrojów na Facebooku, umożliwiające klasyfikowanie publicznych postów (zarówno od użytkowników, jak i ze stron) jako pozytywne, negatywne i neutralne. Zamierzamy skorzystać z Facebooka Graph API Search i Datumbox API 1.0v. Podobny do Narzędzie do analizy nastrojów na Twitterze którą zbudowaliśmy kilka miesięcy temu, ta implementacja jest napisana w PHP, niemniej jednak możesz bardzo łatwo zbudować własne narzędzie w wybranym przez siebie języku komputerowym.

Aktualizacja: Platforma uczenia maszynowego Datumbox jest teraz open-source i bezpłatna pobieranie. Jeśli chcesz zbudować klasyfikator analizy nastrojów bez przekraczania ograniczeń interfejsu API, użyj klasy com.datumbox.applications.nlp.TextClassifier.

Pełny kod PHP narzędzia można znaleźć pod adresem Github.

Jak działa analiza nastrojów na Facebooku?

Jak omówiliśmy w poprzednich artykułach, wykonywanie Analiza sentymentów wymaga zastosowania zaawansowanych technik uczenia maszynowego i przetwarzania języka naturalnego. W poprzednich postach szczegółowo omówiliśmy kilka klasyfikatorów tekstu, takich jak Naiwny BayesThe Regresja Softmax oraz Maksymalna entropia, omówiliśmy znaczenie używania Wybór funkcji w problemach klasyfikacji tekstów i wreszcie zobaczyliśmy, jak można opracować implementację Wielomianowy klasyfikator Bayesa naiwny w JAVA.

Wykonywanie analizy nastrojów na Facebooku nie różni się znacząco od tego, o czym rozmawialiśmy w przeszłości. Krótko mówiąc, musimy pobrać posty z Facebooka i wyodrębnić ich zawartość, a następnie tokenizować je, aby wyodrębnić ich kombinacje słów kluczowych. Następnie dokonujemy selekcji cech, aby zachować tylko n-gramów, które są ważne dla problemu klasyfikacji i szkolimy nasz klasyfikator, aby identyfikował pozytywne, negatywne i neutralne posty.

Powyższy proces jest znacznie uproszczony dzięki zastosowaniu Datumbox API uczenia maszynowego. Wszystko, co trzeba zrobić, aby przeprowadzić analizę nastrojów na Facebooku, to wywołać wyszukiwanie Graph API, aby wyodrębnić interesujące posty, wyodrębnić ich tekst i wywołać interfejs API Datumbox Sentiment Analysis w celu uzyskania ich klasyfikacji.

Tworzenie narzędzia do analizy nastrojów na Facebooku

Aby zbudować narzędzie do analizy nastrojów na Facebooku, potrzebujesz dwóch rzeczy: Aby korzystać z interfejsu API Facebooka w celu pobierania publicznych postów i oceny biegunowości postów na podstawie ich słów kluczowych. Do pierwszego zadania użyjemy wyszukiwania Graph API Facebooka, a do drugiego Datumbox API 1.0v.

Przyspieszymy rozwój narzędzia, wykorzystując 2 klasy: SDK Facebooka PHP co pozwoli nam łatwo uzyskać dostęp do wyszukiwania wykresów i skrzynki danych Klient PHP-API. Po raz kolejny najbardziej skomplikowanym zadaniem w tym procesie jest stworzenie aplikacji Facebook, która pozwoli nam pobierać posty z Facebooka; integracja z Datumbox to bułka z masłem.

Tworzenie własnej aplikacji na Facebooku

analiza nastrojów na FacebookuNiestety Facebook nałożył obowiązek uwierzytelnienia przed uzyskaniem dostępu ich Graph Search API. Na szczęście zapewniają bardzo łatwy w użyciu SDK który zajmuje się większością technicznych szczegółów integracji. Jeszcze przed użyciem musisz utworzyć za pomocą swojego konta na Facebooku nową aplikację Facebook.

Proces jest prosty. Iść do Strona dla programistów Facebooka (musisz się zarejestrować, jeśli nigdy wcześniej nie pisałeś aplikacji na Facebooku). Kliknij Aplikacje w menu i wybierz „Utwórz nową aplikację”.

W wyskakującym okienku wprowadź nazwę wyświetlaną aplikacji, przestrzeń nazw, wybierz kategorię i kliknij opcję Utwórz aplikację. Po utworzeniu aplikacji przejdź do strony głównej aplikacji i wybierz Pulpit nawigacyjny. Tutaj uzyskasz swoje AppID i wartości App Secret. Skopiuj te wartości w bezpieczne miejsce, ponieważ będziemy ich później potrzebować.

Następnie przejdź do Ustawień swojej aplikacji i kliknij „+ Platforma aplikacji” na dole strony. W wyskakującym okienku wybierz „Witryna”, a następnie w adresie URL witryny wpisz adres URL lokalizacji, do której wgrasz swoje narzędzie (przykład: https://localhost/). Kliknij „Zapisz zmiany” i gotowe!

Uzyskaj klucz API Datumbox

Aby uzyskać dostęp do interfejsu API Datumbox zapisz się załóż darmowe konto i odwiedź swój Panel poświadczeń API aby uzyskać klucz API.

Opracowanie klasy analizy nastrojów na Facebooku

Wreszcie wszystko, co musimy zrobić, to napisać prostą klasę, która integruje dwa interfejsy API. Najpierw wywołuje Facebook Graph Search, uwierzytelnia, pobiera posty, a następnie przekazuje je do Datumbox API w celu uzyskania ich polaryzacji.

Oto kod klasy wraz z niezbędnymi komentarzami.

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

Jak widać powyżej, w konstruktorze przekazujemy klucze wymagane do uzyskania dostępu do 2 API. Na publicznej metodzie sentimentAnalysis () inicjalizujemy klienta Facebooka, uwierzytelniamy się i pobieramy listę postów. Pamiętaj, że jeśli nie autoryzowałeś jeszcze swojej aplikacji lub nie jesteś zalogowany na Facebooku za pomocą swojego konta, zostaniesz przekierowany do Facebook.com, aby zalogować się i autoryzować aplikację (to Twoja aplikacja, nie martw się o kwestie prywatności). Po pobraniu listy wpisów są one przekazywane do interfejsu API Datumbox w celu uzyskania ich polaryzacji.

Możesz ruszać! Możesz już używać tej klasy do wykonywania analizy nastrojów na Facebooku. Możesz pobieranie pełny kod PHP narzędzia analizy nastrojów na Facebooku z Github.

Używanie i rozszerzanie implementacji

Aby skorzystać z dostarczonego narzędzia, musisz utworzyć aplikację Facebook zgodnie z powyższym opisem, a następnie skonfigurować ją, modyfikując plik config.php. W tym pliku musisz umieścić klucz API Datumbox, identyfikator aplikacji Facebooka i klucz tajny, które wcześniej skopiowałeś.

Wreszcie w poprzednim poście zbudowaliśmy samodzielny Narzędzie do analizy nastrojów na Twitterze. Połączenie dwóch wdrożeń i utworzenie jednego narzędzia, które będzie w stanie pobierać posty zarówno z Facebooka, jak i Twittera, i prezentować wyniki w jednym raporcie, nie zajmie Ci więcej niż 10 minut.

Jeśli podobał Ci się artykuł, poświęć chwilę i udostępnij go na Facebooku lub Twitterze! 🙂

Znak czasu:

Więcej z Skrzynka odniesienia