Як створити власний інструмент аналізу настроїв у Facebook PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Як створити власний інструмент аналізу настроїв у Facebook

У цій статті ми обговоримо, як легко створити простий інструмент аналізу настроїв у Facebook, здатний класифікувати публічні публікації (як від користувачів, так і зі сторінок) як позитивні, негативні та нейтральні. Ми збираємося використовувати Facebook Graph API Search і Datumbox API 1.0v. Подібний до Інструмент аналізу настроїв Twitter який ми створили кілька місяців тому, ця реалізація написана на PHP, однак ви можете дуже легко створити свій власний інструмент на комп’ютерній мові за вашим вибором.

Оновлення: Система машинного навчання Datumbox тепер є відкритою та безкоштовною скачати. Якщо ви хочете створити класифікатор Sentiment Analysis, не порушуючи обмежень API, використовуйте клас com.datumbox.applications.nlp.TextClassifier.

Повний PHP-код інструменту можна знайти на Github.

Як працює аналіз настроїв у Facebook?

Як ми обговорювали в попередніх статтях, виконання Аналіз почуттів вимагає використання передових технологій машинного навчання та обробки природної мови. У попередніх публікаціях ми детально ознайомилися з кількома Класифікаторами тексту, такими як Наївні Баєси, Регресія Softmax і Максимальна ентропія, ми обговорили важливість використання Вибір функції у проблемах класифікації тексту, і нарешті ми побачили, як можна розробити реалізацію Мультиноміальний наївний класифікатор Байєса в JAVA.

Виконання аналізу настроїв у Facebook суттєво не відрізняється від того, що ми обговорювали в минулому. Коротше кажучи, нам потрібно отримати дописи з Facebook і витягти їх вміст, а потім ми токенізувати їх, щоб отримати їхні комбінації ключових слів. Після цього ми виконуємо вибір ознак, щоб зберегти лише n-грами, важливі для проблеми класифікації, і ми навчаємо наш класифікатор ідентифікувати позитивні, негативні та нейтральні повідомлення.

Вищевказаний процес значно спрощується за допомогою Databox API машинного навчання. Все, що потрібно зробити, щоб виконати аналіз настроїв у Facebook, — це викликати пошук Graph API, щоб отримати цікаві дописи, витягти їхній текст і викликати Databox Sentiment Analysis API, щоб отримати їх класифікацію.

Створення інструменту Facebook Sentiment Analysis

Щоб створити інструмент аналізу настроїв у Facebook, вам потрібні дві речі: використовувати API Facebook, щоб отримати загальнодоступні публікації та оцінити полярність публікацій на основі їхніх ключових слів. Для першого завдання ми будемо використовувати пошук Graph API від Facebook, а для другого API Datumbox 1.0v.

Ми прискоримо розробку інструменту, використовуючи 2 класи: The Facebook PHP SDK який легко дозволить нам отримати доступ до пошуку на графіку та датичного поля PHP-API-клієнт. І знову найскладнішим завданням у цьому процесі є створення програми Facebook, яка дозволить нам отримувати публікації з Facebook; інтеграція з Datumbox — це просто.

Створення власної програми Facebook

facebook-аналіз настроївНа жаль, Facebook зробив обов’язковою автентифікацію перед доступом їхній API Graph Search. На щастя, вони дуже прості у використанні SDK який піклується про більшість технічних деталей інтеграції. Перш ніж використовувати його, ви повинні створити за допомогою свого облікового запису Facebook нову програму Facebook.

Процес простий. Йти до Сторінка розробників Facebook (вам потрібно буде зареєструватися, якщо ви ніколи раніше не писали програму Facebook). Натисніть «Програми» в меню та виберіть «Створити нову програму».

У спливаючому вікні введіть відображуване ім’я програми, простір імен, виберіть категорію та натисніть «Створити програму». Після створення програми перейдіть на головну сторінку програми та виберіть «Інформаційна панель». Тут ви отримаєте значення AppID і App Secret. Скопіюйте ці значення в безпечне місце, оскільки вони нам знадобляться пізніше.

Далі перейдіть до налаштувань вашої програми та натисніть «+ Платформа програми» внизу сторінки. У спливаючому вікні виберіть «Веб-сайт», а потім у URL-адресі сайту введіть URL-адресу місця, куди ви завантажите свій інструмент (приклад: https://localhost/). Натисніть «Зберегти зміни» і готово!

Отримайте ключ API Datumbox

Щоб отримати доступ до API Datumbox зареєструватися для безкоштовного облікового запису та відвідайте ваш Панель облікових даних API щоб отримати ключ API.

Розробка класу Facebook Sentiment Analysis

Нарешті все, що нам потрібно зробити, це написати простий клас, який інтегрує два API. Спочатку викликає Facebook Graph Search, автентифікує, отримує дописи, а потім передає їх API Datumbox для отримання їх полярності.

Ось код класу разом з необхідними коментарями.

<?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, автентифікуємо та отримуємо список публікацій. Зауважте, що якщо ви ще не авторизували свою програму або не ввійшли у Facebook за допомогою свого облікового запису, вас буде перенаправлено на Facebook.com, щоб увійти та авторизувати програму (це ваша програма, не турбуйтеся про проблеми конфіденційності). Після отримання списку дописів вони передаються в API Datumbox для визначення полярності.

Ви готові! Ви готові використовувати цей клас для аналізу настроїв у Facebook. Ти можеш скачати повний PHP-код інструменту Facebook Sentiment Analysis від Github.

Використання та розширення реалізації

Щоб скористатися наданим інструментом, вам потрібно створити програму Facebook, як описано вище, а потім налаштувати її, змінивши файл config.php. У цей файл вам потрібно буде помістити ключ API Datumbox, ідентифікатор програми Facebook і секрет, які ви скопіювали раніше.

Нарешті, у попередньому дописі ми створили автономний Інструмент аналізу настроїв Twitter. Вам знадобиться не більше 10 хвилин, щоб об’єднати 2 реалізації та створити єдиний інструмент, здатний отримувати публікації з Facebook і Twitter і представляти результати в одному звіті.

Якщо вам сподобалася стаття, знайдіть хвилину, щоб поділитися нею у Facebook або Twitter! 🙂

Часова мітка:

Більше від Датабокс