나만의 Facebook 감정 분석 도구 PlatoBlockchain Data Intelligence를 구축하는 방법. 수직 검색. 일체 포함.

자신 만의 Facebook Sentiment Analysis Tool을 구축하는 방법

이 기사에서는 공개 게시물(사용자 및 페이지 모두에서)을 긍정적, 부정적, 중립적으로 분류할 수 있는 간단한 Facebook 감정 분석 도구를 쉽게 구축하는 방법에 대해 설명합니다. 우리는 Facebook의 Graph API Search와 Datumbox API 1.0v를 사용할 것입니다. 와 유사하다 트위터 감정 분석 도구 우리가 몇 달 전에 구축한 이 구현은 PHP로 작성되었지만 선택한 컴퓨터 언어로 자신만의 도구를 매우 쉽게 구축할 수 있습니다.

업데이트 : Datumbox Machine Learning Framework는 이제 오픈 소스이며 무료로 제공됩니다. 다운로드. API 제한에 부딪히지 않고 감정 분석 분류기를 구축하려면 com.datumbox.applications.nlp.TextClassifier 클래스를 사용하십시오.

도구의 전체 PHP 코드는 다음에서 찾을 수 있습니다. 깃허브.

Facebook 감정 분석은 어떻게 작동합니까?

이전 기사에서 논의했듯이 감정 분석 고급 기계 학습 및 자연어 처리 기술을 사용해야 합니다. 이전 게시물에서 우리는 다음과 같은 여러 텍스트 분류기를 자세히 보았습니다. 나이브 베이 즈Walk Through California 프로그램, 소프트맥스 회귀 그리고 최대 엔트로피, 우리는 사용의 중요성에 대해 논의했습니다. 기능 선택 텍스트 분류 문제에서 마침내 우리는 구현을 개발할 수 있는 방법을 보았습니다. JAVA의 다항 나이브 베이즈 분류기.

Facebook에서 감정 분석을 수행하는 것은 과거에 논의한 것과 크게 다르지 않습니다. 간단히 말해서, Facebook 게시물을 가져와서 콘텐츠를 추출한 다음 키워드 조합을 추출하기 위해 이를 토큰화해야 합니다. 그런 다음 분류 문제에 중요한 n-gram만 유지하기 위해 기능 선택을 수행하고 긍정적, 부정적 및 중립적 포스트를 식별하도록 분류기를 훈련합니다.

위의 프로세스는 Datumbox의 기계 학습 API. Facebook에서 감정 분석을 수행하려면 그래프 API 검색을 호출하여 관심 있는 게시물을 추출하고, 텍스트를 추출하고, 분류를 얻기 위해 Datumbox 감정 분석 API를 호출하기만 하면 됩니다.

Facebook 감정 분석 도구 구축

Facebook 감정 분석 도구를 구축하려면 두 가지가 필요합니다. 공개 게시물을 가져오고 키워드를 기반으로 게시물의 극성을 평가하기 위해 Facebook API를 사용합니다. 첫 번째 작업에서는 Facebook의 Graph API 검색을 사용하고 두 번째 작업에서는 Datumbox API 1.0v를 사용합니다.

2가지 클래스를 사용하여 도구 개발 속도를 높일 것입니다. 페이스 북 PHP SDK Graph 검색 및 Datumbox에 쉽게 액세스할 수 있습니다. PHP-API-클라이언트. 다시 한 번 이 과정에서 가장 복잡한 작업은 Facebook에서 게시물을 가져올 수 있는 Facebook 애플리케이션을 만드는 것입니다. Datumbox 통합은 케이크 조각입니다.

나만의 Facebook 애플리케이션 만들기

페이스북 감정분석불행히도 Facebook은 액세스하기 전에 인증을 의무화했습니다. 그들의 그래프 검색 API. 고맙게도 그들은 사용하기 매우 쉽습니다. SDK 통합의 대부분의 기술적 세부 사항을 처리합니다. 아직 사용하기 전에 Facebook 계정을 사용하여 새 Facebook 애플리케이션을 만들어야 합니다.

과정은 간단합니다. 이동 페이스북 개발자 페이지 (과거에 Facebook 애플리케이션을 작성한 적이 없는 경우 등록해야 합니다.) 메뉴에서 앱을 클릭하고 "새 앱 만들기"를 선택합니다.

팝업 창에서 애플리케이션의 표시 이름인 네임스페이스를 채우고 카테고리를 선택한 후 앱 생성을 클릭합니다. 애플리케이션이 생성되면 애플리케이션의 메인 페이지로 이동하여 대시보드를 선택합니다. 여기에서 AppID와 App Secret 값을 얻을 수 있습니다. 나중에 필요하므로 해당 값을 안전한 장소에 복사하십시오.

다음으로 애플리케이션 설정으로 이동하여 페이지 하단의 "+ 앱 플랫폼"을 클릭합니다. 팝업에서 "웹사이트"를 선택한 다음 사이트 URL 주소에 도구를 업로드할 위치의 URL을 입력합니다(예: https://localhost/). "변경 사항 저장"을 클릭하면 완료됩니다!

Datumbox API 키 가져오기

Datumbox API에 액세스하려면 가입하기 무료 계정을 만들고 귀하의 API 자격 증명 패널 API 키를 얻으려면.

Facebook 감정 분석 수업 개발

마지막으로 두 API를 통합하는 간단한 클래스를 작성하기만 하면 됩니다. 먼저 Facebook 그래프 검색을 호출하고 인증하고 게시물을 가져온 다음 Datumbox API에 전달하여 극성을 검색합니다.

다음은 필요한 주석과 함께 클래스 코드입니다.

<?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에 액세스하는 데 필요한 키를 전달합니다. 공개 메서드 감상 분석()에서 Facebook 클라이언트를 초기화하고 인증하고 게시물 목록을 검색합니다. 아직 애플리케이션을 승인하지 않았거나 계정으로 Facebook에 로그인하지 않은 경우 로그인하고 앱을 승인하기 위해 Facebook.com으로 리디렉션됩니다(귀하의 앱이므로 개인 정보 보호 문제에 대해 걱정할 필요 없음). 게시물 목록이 검색되면 극성을 얻기 위해 Datumbox API로 전달됩니다.

가도 좋다! 이 클래스를 사용하여 Facebook에서 감정 분석을 수행할 준비가 되었습니다. 당신은 할 수 있습니다 다운로드 Github에서 제공하는 Facebook 감정 분석 도구의 전체 PHP 코드입니다.

구현 사용 및 확장

제공된 도구를 사용하려면 위에서 설명한 대로 Facebook 애플리케이션을 만든 다음 config.php 파일을 수정하여 구성해야 합니다. 이 파일에 Datumbox API 키, 이전에 복사한 Facebook 앱 ID 및 비밀을 넣어야 합니다.

마지막으로 이전 게시물에서 우리는 독립 실행형을 구축했습니다. 트위터 감정 분석 도구. 두 가지 구현을 병합하고 Facebook과 Twitter 모두에서 게시물을 가져오고 단일 보고서에 결과를 표시할 수 있는 단일 도구를 만드는 데 10분 이상 걸리지 않습니다.

기사가 마음에 드셨다면 잠시 시간을 내어 Facebook이나 Twitter에서 공유해 주세요! 🙂

타임 스탬프 :

더보기 데이텀 박스