Cách xây dựng Công cụ phân tích tình cảm Facebook của riêng bạn PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Cách xây dựng Công cụ phân tích tình cảm Facebook của riêng bạn

Trong bài viết này, chúng tôi sẽ thảo luận về cách bạn có thể dễ dàng xây dựng một công cụ Phân tích cảm xúc trên Facebook đơn giản có khả năng phân loại các bài đăng công khai (cả từ người dùng và từ các trang) là tích cực, tiêu cực và trung lập. Chúng tôi sẽ sử dụng Tìm kiếm API Đồ thị của Facebook và API Datumbox 1.0v. Tương tự như Công cụ phân tích tình cảm trên Twitter mà chúng tôi đã xây dựng cách đây vài tháng, phần triển khai này được viết bằng PHP, tuy nhiên bạn có thể dễ dàng xây dựng công cụ của riêng mình bằng ngôn ngữ máy tính mà bạn chọn.

Cập nhật: Khung học máy của Datumbox hiện là nguồn mở và miễn phí tải về. Nếu bạn muốn xây dựng bộ phân loại Phân tích tình cảm mà không gặp phải các giới hạn API, hãy sử dụng lớp com.datumbox.application.nlp.TextClassifier.

Bạn có thể tìm thấy mã PHP hoàn chỉnh của công cụ trên Github.

Phân tích tình cảm trên Facebook hoạt động như thế nào?

Như chúng ta đã thảo luận trong các bài viết trước, việc thực hiện Phân tích tình cảm yêu cầu sử dụng kỹ thuật Máy học và Xử lý ngôn ngữ tự nhiên tiên tiến. Trong các bài viết trước, chúng tôi đã xem chi tiết một số Bộ phân loại Văn bản như Vịnh Naive, Các Hồi quy SoftmaxEntropy tối đa, chúng tôi đã thảo luận về tầm quan trọng của việc sử dụng Lựa chọn tính năng trong các vấn đề phân loại văn bản và cuối cùng chúng tôi đã thấy cách người ta có thể phát triển việc triển khai Bộ phân loại Naive Bayes đa thức trong JAVA.

Thực hiện Phân tích Cảm xúc trên Facebook không khác biệt đáng kể so với những gì chúng ta đã thảo luận trước đây. Tóm lại, chúng ta cần tìm nạp các bài đăng trên facebook và trích xuất nội dung của chúng và sau đó chúng ta mã hóa chúng để trích xuất các tổ hợp từ khóa của chúng. Sau đó, chúng tôi thực hiện lựa chọn đối tượng địa lý để chỉ giữ lại n-gram quan trọng cho vấn đề phân loại và chúng tôi đào tạo bộ phân loại của mình để xác định các bài viết tích cực, tiêu cực và trung lập.

Quá trình trên được đơn giản hóa đáng kể bằng cách sử dụng Datumbox's API học máy. Tất cả những gì người ta cần làm để thực hiện phân tích tình cảm trên Facebook là gọi tìm kiếm API Đồ thị để trích xuất các bài đăng quan tâm, trích xuất văn bản của họ và gọi API phân tích tình cảm Datumbox để nhận phân loại của chúng.

Xây dựng công cụ Phân tích tình cảm trên Facebook

Để xây dựng công cụ Phân tích tình cảm trên Facebook, bạn cần có hai điều: Sử dụng API Facebook để tìm nạp các bài đăng công khai và đánh giá độ phân cực của các bài đăng dựa trên từ khóa của chúng. Đối với nhiệm vụ đầu tiên, chúng tôi sẽ sử dụng tìm kiếm API Đồ thị của Facebook và nhiệm vụ thứ hai là API Datumbox 1.0v.

Chúng tôi sẽ tăng tốc độ phát triển của công cụ bằng cách sử dụng 2 lớp: SDK PHP của Facebook điều này sẽ dễ dàng cho phép chúng tôi truy cập tìm kiếm Đồ thị và Hộp dữ liệu PHP-API-Máy khách. Một lần nữa, nhiệm vụ phức tạp nhất trong quá trình này là tạo một Ứng dụng Facebook cho phép chúng tôi tìm nạp các bài đăng từ Facebook; tích hợp Datumbox là một miếng bánh.

Tạo ứng dụng Facebook của riêng bạn

phân tích tình cảm facebookThật không may, Facebook bắt buộc phải xác thực trước khi truy cập API Tìm kiếm Đồ thị của họ. Rất may, họ cung cấp rất dễ sử dụng SDK trong đó xử lý hầu hết các chi tiết kỹ thuật của tích hợp. Trước khi sử dụng, bạn phải tạo bằng Tài khoản Facebook của mình một ứng dụng Facebook mới.

Quá trình này rất đơn giản. Đi đến Trang Facebook Developers (bạn sẽ cần đăng ký nếu bạn chưa từng viết Ứng dụng Facebook trong quá khứ). Nhấp vào Ứng dụng trên menu và chọn “Tạo ứng dụng mới”.

Trong cửa sổ bật lên, hãy điền Tên hiển thị của ứng dụng của bạn, Không gian tên, chọn Danh mục và nhấp vào Tạo ứng dụng. Sau khi Ứng dụng được tạo, hãy chuyển đến trang chính của Ứng dụng của bạn và chọn Trang tổng quan. Đây là nơi bạn sẽ nhận được các giá trị AppID và App Secret. Sao chép những giá trị đó ở một nơi an toàn vì chúng ta sẽ cần chúng sau này.

Tiếp theo, đi tới Cài đặt của ứng dụng của bạn và nhấp vào “+ Nền tảng ứng dụng” ở cuối trang. Trên cửa sổ bật lên, chọn “Trang web” và sau đó trên địa chỉ URL của trang web, hãy đặt URL của vị trí mà bạn sẽ tải lên công cụ của mình (Ví dụ: https: // localhost /). Nhấp vào “Lưu thay đổi” và bạn đã hoàn tất!

Nhận khóa API Datumbox của bạn

Để truy cập API Datumbox đăng ký cho một tài khoản miễn phí và truy cập Bảng thông tin đăng nhập API để lấy Khóa API của bạn.

Phát triển lớp Phân tích Cảm xúc trên Facebook

Cuối cùng, tất cả những gì chúng ta cần làm là viết một lớp đơn giản tích hợp hai API. Đầu tiên gọi Tìm kiếm đồ thị của Facebook, xác thực, tìm nạp các bài đăng và sau đó chuyển chúng đến API Datumbox để truy xuất cực của chúng.

Đây là mã của lớp cùng với các nhận xét cần thiết.

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

Như bạn có thể thấy ở trên trên phương thức khởi tạo, chúng tôi chuyển các khóa được yêu cầu để truy cập 2 API. Trên phương thức công khai feelAnalysis (), chúng tôi khởi tạo Ứng dụng khách Facebook, chúng tôi xác thực và chúng tôi truy xuất danh sách các bài đăng. Lưu ý rằng nếu bạn chưa cấp quyền cho ứng dụng của mình hoặc nếu bạn chưa đăng nhập Facebook bằng tài khoản của mình, bạn sẽ được chuyển hướng đến Facebook.com để đăng nhập và cấp quyền cho ứng dụng (đó là ứng dụng của bạn, không phải lo lắng về các vấn đề bảo mật). Sau khi danh sách các bài đăng được truy xuất, chúng sẽ được chuyển đến Datumbox API để lấy cực tính của chúng.

Bạn tốt để đi! Bạn đã sẵn sàng sử dụng lớp học này để thực hiện Phân tích cảm xúc trên Facebook. Bạn có thể tải về mã PHP hoàn chỉnh của công cụ Phân tích tình cảm trên Facebook từ Github.

Sử dụng và mở rộng triển khai

Để sử dụng công cụ được cung cấp, bạn cần tạo Ứng dụng Facebook như mô tả ở trên và sau đó định cấu hình nó bằng cách sửa đổi tệp config.php. Trong tệp này, bạn sẽ cần đặt khóa API Datumbox, Id ứng dụng Facebook và Bí mật mà bạn đã sao chép trước đó.

Cuối cùng, trong bài trước, chúng tôi đã xây dựng một ứng dụng độc lập Công cụ phân tích tình cảm trên Twitter. Bạn sẽ không mất quá 10 phút để hợp nhất 2 triển khai và tạo ra một công cụ duy nhất có khả năng tải các bài đăng từ Facebook và Twitter và trình bày kết quả trong một báo cáo duy nhất.

Nếu bạn thích bài viết, vui lòng dành một phút để chia sẻ nó trên Facebook hoặc Twitter! 🙂

Dấu thời gian:

Thêm từ Hộp dữ liệu