چگونه ابزار تجزیه و تحلیل احساسات فیس بوک خود را، هوش داده PlatoBlockchain خود بسازید. جستجوی عمودی Ai.

چگونه ابزار تحلیل احساسات فیس بوک خود را بسازید

در این مقاله بحث خواهیم کرد که چگونه می توانید به راحتی یک ابزار ساده تحلیل احساسات فیس بوک بسازید که بتواند پست های عمومی (هم از کاربران و هم از صفحات) را به عنوان مثبت، منفی و خنثی طبقه بندی کند. ما قصد داریم از جستجوی API Graph Facebook و Datumbox API 1.0v استفاده کنیم. مشابه به ابزار تحلیل احساسات توییتر که چند ماه پیش ساخته‌ایم، این پیاده‌سازی به زبان PHP نوشته شده است، با این وجود شما می‌توانید به راحتی ابزار خود را به زبان رایانه دلخواه خود بسازید.

به روز رسانی: چارچوب یادگیری ماشین Datumbox اکنون منبع باز و رایگان است دانلود. اگر می خواهید یک طبقه بندی کننده Sentiment Analysis بدون اعمال محدودیت های API بسازید، از کلاس com.datumbox.applications.nlp.TextClassifier استفاده کنید.

کد پی اچ پی کامل ابزار را می توان در این قسمت یافت گیتهاب.

تجزیه و تحلیل احساسات فیس بوک چگونه کار می کند؟

همانطور که در مقالات قبلی بحث کردیم، اجرا تجزیه و تحلیل احساسات نیاز به استفاده از تکنیک های پیشرفته یادگیری ماشین و پردازش زبان طبیعی دارد. در پست‌های قبلی به تفصیل چندین طبقه‌بندی متن مانند the ساده لوح بیزاز رگرسیون سافت مکس و حداکثر آنتروپی، در مورد اهمیت استفاده بحث کردیم انتخاب ویژگی در مسائل طبقه بندی متن و در نهایت دیدیم که چگونه می توان پیاده سازی را توسعه داد طبقه بندی کننده چند جمله ای Naive Bayes در JAVA.

انجام تجزیه و تحلیل احساسات در فیس بوک تفاوت قابل توجهی با آنچه در گذشته مطرح کردیم ندارد. به طور خلاصه، ما باید پست های فیس بوک را واکشی کنیم و محتوای آنها را استخراج کنیم و سپس آنها را توکن کنیم تا ترکیب کلمات کلیدی آنها را استخراج کنیم. سپس انتخاب ویژگی را انجام می دهیم تا فقط n-gram هایی را که برای مشکل طبقه بندی مهم هستند حفظ کنیم و طبقه بندی کننده خود را برای شناسایی پست های مثبت، منفی و خنثی آموزش می دهیم.

فرآیند فوق با استفاده از Datumbox به طور قابل توجهی ساده شده است API یادگیری ماشین. تنها کاری که برای انجام تجزیه و تحلیل احساسات در فیس بوک باید انجام دهید این است که با جستجوی Graph API تماس بگیرید تا پست های مورد علاقه را استخراج کنید، متن آنها را استخراج کنید و برای طبقه بندی آنها با Datumbox Sentiment Analysis API تماس بگیرید.

ساخت ابزار تحلیل احساسات فیس بوک

برای ساخت ابزار تحلیل احساسات فیس بوک به دو چیز نیاز دارید: استفاده از Facebook API برای واکشی پست های عمومی و ارزیابی قطبیت پست ها بر اساس کلمات کلیدی آنها. برای اولین کار از جستجوی API Graph Facebook و برای دومین کار از Datumbox API 1.0v استفاده می کنیم.

ما توسعه ابزار را با استفاده از 2 کلاس سرعت خواهیم داد: The فیس بوک PHP SDK که به راحتی به ما امکان دسترسی به جستجوی Graph و Datumbox را می دهد PHP-API-Client. یک بار دیگر پیچیده ترین کار در این فرآیند ایجاد یک برنامه فیس بوک است که به ما امکان می دهد پست ها را از فیس بوک واکشی کنیم. ادغام Datumbox یک تکه کیک است.

ایجاد اپلیکیشن فیسبوک خود

تجزیه و تحلیل احساسات فیس بوکمتأسفانه فیس بوک احراز هویت قبل از دسترسی را اجباری کرده است API جستجوی نمودار آنها. خوشبختانه آنها برای استفاده بسیار آسان هستند SDK که بیشتر از جزئیات فنی یکپارچه سازی مراقبت می کند. هنوز قبل از استفاده از آن، باید با استفاده از حساب فیس بوک خود یک برنامه جدید فیس بوک ایجاد کنید.

فرآیند ساده است. قابل اعتماد و متخصص صفحه توسعه دهندگان فیس بوک (اگر در گذشته برنامه فیس بوک ننوشته اید، باید ثبت نام کنید). روی Apps در منو کلیک کنید و "Create New App" را انتخاب کنید.

در پنجره بازشو، نام نمایش برنامه خود، فضای نام را پر کنید، یک دسته را انتخاب کنید و روی ایجاد برنامه کلیک کنید. پس از ایجاد برنامه به صفحه اصلی برنامه خود بروید و داشبورد را انتخاب کنید. اینجا جایی است که AppID و مقادیر App Secret را دریافت خواهید کرد. آن مقادیر را در مکانی امن کپی کنید زیرا بعداً به آنها نیاز خواهیم داشت.

سپس به تنظیمات برنامه خود بروید و روی «+ App Platform» در پایین صفحه کلیک کنید. در پنجره بازشو "Website" را انتخاب کنید و سپس در آدرس URL سایت، آدرس مکانی را که ابزار خود را در آن آپلود خواهید کرد قرار دهید (به عنوان مثال: https://localhost/). روی «ذخیره تغییرات» کلیک کنید و کارتان تمام شد!

کلید Datumbox API خود را دریافت کنید

برای دسترسی به Datumbox API ثبت نام برای یک حساب کاربری رایگان و بازدید از خود پانل اعتبار API برای دریافت کلید API خود.

توسعه کلاس تحلیل احساسات فیس بوک

در نهایت تنها کاری که باید انجام دهیم این است که یک کلاس ساده بنویسیم که دو API را ادغام کند. ابتدا جستجوی نمودار فیس بوک را فراخوانی می کند، پست ها را احراز هویت می کند، واکشی می کند و سپس آنها را به 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 مورد نیاز هستند، پاس می دهیم. در روش عمومی sentimentAnalysis() ما مشتری فیس بوک را مقداردهی اولیه می کنیم، احراز هویت می کنیم و لیست پست ها را بازیابی می کنیم. توجه داشته باشید که اگر هنوز برنامه خود را تأیید نکرده اید یا اگر با حساب خود وارد فیس بوک نشده اید، به Facebook.com هدایت می شوید تا وارد شوید و برنامه را تأیید کنید (این برنامه شماست، نگران مسائل حریم خصوصی نباشید). پس از بازیابی لیست پست ها، آنها به Datumbox API ارسال می شوند تا قطبیت خود را بدست آورند.

شما خوب هستید که بروید! شما آماده استفاده از این کلاس برای انجام تجزیه و تحلیل احساسات در فیس بوک هستید. تو می توانی دانلود کد PHP کامل ابزار تحلیل احساسات فیس بوک از Github.

استفاده و گسترش پیاده سازی

برای استفاده از ابزار ارائه شده، باید برنامه Facebook را همانطور که در بالا توضیح داده شد ایجاد کنید و سپس با تغییر فایل config.php آن را پیکربندی کنید. در این فایل باید کلید Datumbox API، شناسه برنامه فیس بوک و Secret را که قبلاً کپی کرده اید قرار دهید.

در نهایت در پست قبلی ما یک مستقل ساخته ایم ابزار تحلیل احساسات توییتر. ادغام این دو پیاده سازی و ایجاد یک ابزار واحد که می تواند پست ها را از فیس بوک و توییتر دریافت کند و نتایج را در یک گزارش واحد ارائه دهد، بیش از 10 دقیقه طول نخواهد کشید.

اگر از مقاله لذت بردید، لطفاً یک دقیقه وقت بگذارید و آن را در فیس بوک یا توییتر به اشتراک بگذارید! 🙂

تمبر زمان:

بیشتر از Datumbox