Логотип Зефирнет

Как создать свой собственный инструмент для анализа настроений в Facebook

Дата:

facebook-настроения-analysis2В этой статье мы обсудим, как вы можете легко создать простой инструмент анализа настроений Facebook, способный классифицировать публичные публикации (как от пользователей, так и со страниц) как позитивные, негативные и нейтральные. Мы будем использовать поиск API Graph API в Facebook и API 1.0v Datumbox. Похож на Инструмент анализа настроений Twitter которую мы создали несколько месяцев назад, эта реализация написана на PHP, тем не менее вы можете очень легко создать свой собственный инструмент на выбранном вами языке.

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

Полный код PHP инструмента можно найти на Github.

Как работает анализ настроений Facebook?

Как мы уже говорили в предыдущих статьях, выполнение Анализ настроений требует использования передовых методов машинного обучения и обработки естественного языка. В предыдущих постах мы подробно рассмотрели несколько текстовых классификаторов, таких как Наивный байесовский, Softmax регрессия и Макс Энтропиямы обсудили важность использования Выбор функций в задачах классификации текста и, наконец, мы увидели, как можно разработать реализацию Полиномиальный наивный байесовский классификатор в JAVA.

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

Вышеуказанный процесс значительно упрощается при использовании Datumbox API машинного обучения, Все, что нужно сделать, чтобы выполнить анализ настроений в Facebook, - это вызвать поиск API Graph, чтобы извлечь интересующие посты, извлечь их текст и вызвать API анализа настроений Datumbox, чтобы получить их классификацию.

Создание инструмента анализа настроений Facebook

Чтобы создать инструмент анализа настроений Facebook, вам нужно две вещи: использовать API Facebook для извлечения общедоступных постов и оценки полярности постов на основе их ключевых слов. Для первой задачи мы будем использовать поиск API Graph в Facebook, а для второй - API Datumbox 1.0v.

Мы ускорим разработку инструмента, используя 2 класса: PHP SDK для Facebook который легко позволит нам получить доступ к графическому поиску и Datumbox PHP-API-клиент, Еще раз, самая сложная задача в этом процессе - это создание приложения Facebook, которое позволит нам получать сообщения из Facebook; интеграция Datumbox - это просто.

Создание собственного приложения Facebook

facebook-Настроения анализК сожалению, Facebook сделал обязательной аутентификацию перед доступом их API поиска по графику, К счастью, они очень просты в использовании SDK который заботится о большинстве технических деталей интеграции. Тем не менее, прежде чем использовать его, вы должны создать с помощью своей учетной записи Facebook новое приложение Facebook.

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

Во всплывающем окне заполните отображаемое имя приложения, пространство имен, выберите категорию и нажмите «Создать приложение». После создания приложения перейдите на главную страницу приложения и выберите «Панель инструментов». Здесь вы получите свои значения AppID и App Secret. Скопируйте эти значения в безопасное место, так как они понадобятся нам позже.

Затем перейдите в настройки вашего приложения и нажмите «+ App Platform» в нижней части страницы. Во всплывающем окне выберите «Веб-сайт», а затем на URL-адресе сайта укажите URL-адрес места, куда вы будете загружать свой инструмент (пример: http: // localhost /). Нажмите «Сохранить изменения» и все готово!

Получите ваш ключ API Datumbox

Чтобы получить доступ к API Datumbox Регистрация для бесплатной учетной записи и посетите ваш Панель учетных данных API чтобы получить ваш ключ API.

Разработка класса анализа настроений Facebook

Наконец, все, что нам нужно сделать, это написать простой класс, который объединяет два API. Сначала вызывает поиск по графику Facebook, проверяет подлинность, выбирает сообщения, а затем передает их в 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 http://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 от Github.

Использование и расширение реализации

Чтобы использовать предоставленный инструмент, вам нужно создать приложение Facebook, как описано выше, а затем настроить его, изменив файл config.php. В этом файле вам нужно будет вставить ключ API Datumbox, идентификатор приложения Facebook и секрет, который вы скопировали ранее.

Наконец, в предыдущем посте мы создали автономный Инструмент анализа настроений Twitter, Вам не понадобится более 10 минут, чтобы объединить две реализации и создать единый инструмент, способный извлекать сообщения из Facebook и Twitter и представлять результаты в одном отчете.

Если вам понравилась статья, пожалуйста, найдите минутку, чтобы поделиться ею в Facebook или Twitter! 🙂

О нас Василис Вриниотис

Меня зовут Василис Вриниотис. Я Data Scientist, инженер-программист, автор Datumbox Machine Learning Framework и гордый фанат. Узнать больше

Источник: http://blog.datumbox.com/how-to-build-your-own-facebook-sentiment-analysis-tool/

Spot_img

Последняя разведка

Spot_img

Чат с нами

Всем привет! Могу я чем-нибудь помочь?