কীভাবে আপনার নিজের ফেসবুক সেন্টিমেন্ট অ্যানালাইসিস টুল প্লাটোব্লকচেন ডেটা ইন্টেলিজেন্স তৈরি করবেন। উল্লম্ব অনুসন্ধান. আ.

কীভাবে আপনার নিজের ফেসবুক সেন্টিমেন্ট বিশ্লেষণ টুল তৈরি করবেন

এই নিবন্ধে আমরা আলোচনা করব কিভাবে আপনি সহজে একটি সহজ Facebook সেন্টিমেন্ট অ্যানালাইসিস টুল তৈরি করতে পারেন যা পাবলিক পোস্ট (ব্যবহারকারী এবং পৃষ্ঠা উভয়ই) ইতিবাচক, নেতিবাচক এবং নিরপেক্ষ হিসাবে শ্রেণীবদ্ধ করতে সক্ষম। আমরা Facebook এর Graph API সার্চ এবং Datumbox API 1.0v ব্যবহার করতে যাচ্ছি। অনুরূপ টুইটার সেন্টিমেন্ট বিশ্লেষণ টুল যেটা আমরা কয়েক মাস আগে তৈরি করেছিলাম, এই ইমপ্লিমেন্টেশনটি পিএইচপি-তে লেখা তবুও আপনি খুব সহজেই আপনার পছন্দের কম্পিউটার ভাষায় নিজের টুল তৈরি করতে পারবেন।

আপডেট: Datumbox মেশিন লার্নিং ফ্রেমওয়ার্ক এখন ওপেন সোর্স এবং বিনামূল্যে ডাউনলোড. আপনি যদি API সীমাবদ্ধতাগুলিকে আঘাত না করে একটি সেন্টিমেন্ট বিশ্লেষণ ক্লাসিফায়ার তৈরি করতে চান তবে com.datumbox.applications.nlp.TextClassifier ক্লাসটি ব্যবহার করুন৷

টুলটির সম্পূর্ণ পিএইচপি কোড পাওয়া যাবে গিটহাব.

কিভাবে Facebook সেন্টিমেন্ট বিশ্লেষণ কাজ করে?

আমরা পূর্ববর্তী নিবন্ধে আলোচনা করা হয়েছে, কর্মক্ষমতা অনুভূতির বিশ্লেষণ উন্নত মেশিন লার্নিং এবং প্রাকৃতিক ভাষা প্রক্রিয়াকরণ কৌশল ব্যবহার করা প্রয়োজন। আগের পোস্টগুলোতে আমরা বিস্তারিতভাবে দেখেছি বেশ কিছু টেক্সট ক্লাসিফায়ার যেমন নাইভ বয়েস, দ্য সফটম্যাক্স রিগ্রেশন এবং সর্বোচ্চ এনট্রপি, আমরা ব্যবহারের গুরুত্ব নিয়ে আলোচনা করেছি বৈশিষ্ট্য নির্বাচন টেক্সট শ্রেণীবিভাগের সমস্যা এবং অবশেষে আমরা দেখেছি কিভাবে কেউ একটি বাস্তবায়ন বিকাশ করতে পারে JAVA-তে মাল্টিনমিয়াল নেভ বেইস ক্লাসিফায়ার.

আমরা অতীতে যা আলোচনা করেছি তার থেকে Facebook-এ সেন্টিমেন্ট বিশ্লেষণ সম্পাদন করা উল্লেখযোগ্যভাবে আলাদা নয়। সংক্ষেপে, আমাদের ফেসবুক পোস্টগুলি আনতে হবে এবং তাদের বিষয়বস্তু বের করতে হবে এবং তারপরে তাদের কীওয়ার্ড সংমিশ্রণগুলি বের করার জন্য আমরা তাদের টোকেনাইজ করব। তারপরে আমরা শুধুমাত্র এন-গ্রামগুলি রাখার জন্য বৈশিষ্ট্য নির্বাচন করি যা শ্রেণিবিন্যাসের সমস্যার জন্য গুরুত্বপূর্ণ এবং আমরা আমাদের শ্রেণীবদ্ধকারীকে ইতিবাচক, নেতিবাচক এবং নিরপেক্ষ পোস্টগুলি সনাক্ত করতে প্রশিক্ষণ দিই।

ডেটামবক্স ব্যবহার করে উপরের প্রক্রিয়াটি উল্লেখযোগ্যভাবে সরলীকৃত হয়েছে মেশিন লার্নিং API. Facebook-এ অনুভূতি বিশ্লেষণ করার জন্য যা করতে হবে তা হল আগ্রহের পোস্টগুলি বের করতে, তাদের পাঠ্য বের করতে এবং তাদের শ্রেণীবিভাগ পেতে Datumbox Sentiment Analysis API-কে কল করতে গ্রাফ API অনুসন্ধানে কল করুন৷

Facebook সেন্টিমেন্ট অ্যানালাইসিস টুল তৈরি করা

Facebook সেন্টিমেন্ট অ্যানালাইসিস টুল তৈরি করার জন্য আপনার দুটি জিনিসের প্রয়োজন: সর্বজনীন পোস্টগুলি আনতে এবং তাদের কীওয়ার্ডগুলির উপর ভিত্তি করে পোস্টগুলির পোলারিটি মূল্যায়ন করার জন্য Facebook API ব্যবহার করতে৷ প্রথম কাজটির জন্য আমরা Facebook এর Graph API সার্চ এবং দ্বিতীয়টির জন্য Datumbox API 1.0v ব্যবহার করব।

আমরা 2টি ক্লাস ব্যবহার করে টুলটির বিকাশকে ত্বরান্বিত করব: The ফেসবুক পিএইচপি এসডিকে যা আমাদের সহজেই গ্রাফ অনুসন্ধান এবং ডেটামবক্স অ্যাক্সেস করার অনুমতি দেবে পিএইচপি-এপিআই-ক্লায়েন্ট. আবারও এই প্রক্রিয়ার সবচেয়ে জটিল কাজটি হল একটি ফেসবুক অ্যাপ্লিকেশন তৈরি করা যা আমাদের ফেসবুক থেকে পোস্টগুলি আনার অনুমতি দেবে; Datumbox ইন্টিগ্রেশন কেক একটি টুকরা.

আপনার নিজের ফেসবুক অ্যাপ্লিকেশন তৈরি করা

ফেসবুক-অনুভূতি-বিশ্লেষণদুর্ভাগ্যবশত ফেসবুক অ্যাক্সেস করার আগে প্রমাণীকরণ বাধ্যতামূলক করেছে তাদের গ্রাফ অনুসন্ধান API. সৌভাগ্যক্রমে তারা ব্যবহার করা খুব সহজ প্রদান করে SDK এর যা ইন্টিগ্রেশনের বেশিরভাগ প্রযুক্তিগত বিবরণের যত্ন নেয়। তবুও এটি ব্যবহার করার আগে আপনাকে অবশ্যই আপনার Facebook অ্যাকাউন্ট ব্যবহার করে একটি নতুন Facebook অ্যাপ্লিকেশন তৈরি করতে হবে।

প্রক্রিয়া সহজ. যাও ফেসবুক ডেভেলপার পেজ (আপনি যদি অতীতে কখনও ফেসবুক অ্যাপ্লিকেশন না লিখে থাকেন তবে আপনাকে নিবন্ধন করতে হবে)। মেনুতে Apps এ ক্লিক করুন এবং "Create New App" নির্বাচন করুন।

পপআপ উইন্ডোতে আপনার অ্যাপ্লিকেশনটির প্রদর্শন নাম, নেমস্পেস পূরণ করুন, একটি বিভাগ নির্বাচন করুন এবং অ্যাপ তৈরি করুন ক্লিক করুন। একবার অ্যাপ্লিকেশন তৈরি হয়ে গেলে আপনার অ্যাপ্লিকেশনের মূল পৃষ্ঠায় যান এবং ড্যাশবোর্ড নির্বাচন করুন। এখানেই আপনি আপনার AppID এবং অ্যাপ সিক্রেট মান পাবেন। একটি নিরাপদ স্থানে সেই মানগুলি অনুলিপি করুন কারণ আমাদের পরে সেগুলি প্রয়োজন হবে।

এরপর আপনার অ্যাপ্লিকেশনের সেটিংসে যান এবং পৃষ্ঠার নীচে "+ অ্যাপ প্ল্যাটফর্ম" এ ক্লিক করুন। পপ-আপে "ওয়েবসাইট" নির্বাচন করুন এবং তারপরে সাইটের 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 সেন্টিমেন্ট অ্যানালাইসিস টুলের সম্পূর্ণ পিএইচপি কোড।

ব্যবহার এবং বাস্তবায়ন সম্প্রসারণ

প্রদত্ত টুল ব্যবহার করার জন্য আপনাকে উপরে বর্ণিত Facebook এপ্লিকেশন তৈরি করতে হবে এবং তারপর config.php ফাইলটি পরিবর্তন করে কনফিগার করতে হবে। এই ফাইলটিতে আপনাকে Datumbox API কী, Facebook অ্যাপ আইডি এবং গোপনীয়তা রাখতে হবে যা আপনি আগে কপি করেছিলেন।

অবশেষে আগের পোস্টে আমরা একটি স্বতন্ত্র নির্মাণ করেছি টুইটার সেন্টিমেন্ট বিশ্লেষণ টুল. 10টি বাস্তবায়নকে একত্রিত করতে এবং একটি একক টুল তৈরি করতে আপনার 2 মিনিটের বেশি সময় লাগবে না যা Facebook এবং Twitter উভয় থেকে পোস্ট আনতে এবং একটি একক প্রতিবেদনে ফলাফল উপস্থাপন করতে সক্ষম।

আপনি যদি নিবন্ধটি উপভোগ করেন তবে অনুগ্রহ করে এটি ফেসবুক বা টুইটারে শেয়ার করতে এক মিনিট সময় নিন! 🙂

সময় স্ট্যাম্প:

থেকে আরো ডেটাবক্স