كيفية إنشاء أداة تحليل المشاعر الخاصة بك على فيسبوك PlatoBlockchain Data Intelligence. البحث العمودي. منظمة العفو الدولية.

كيفية بناء أداة تحليل المشاعر الخاصة بك على Facebook

في هذه المقالة سنناقش كيف يمكنك بسهولة إنشاء أداة بسيطة لتحليل المشاعر على Facebook قادرة على تصنيف المشاركات العامة (سواء من المستخدمين أو من الصفحات) بأنها إيجابية وسلبية ومحايدة. سنستخدم بحث Graph API في Facebook و Datumbox API 1.0v. مشابهه ل أداة تحليل المشاعر التغريد التي قمنا ببنائها قبل بضعة أشهر ، تمت كتابة هذا التطبيق بلغة PHP ، ومع ذلك يمكنك بسهولة إنشاء أداتك الخاصة بلغة الكمبيوتر التي تختارها.

تحديث: أصبح Datumbox Machine Learning Framework مفتوح المصدر ومجانيًا الآن بإمكانك تحميله. إذا كنت ترغب في إنشاء مصنّف تحليل المشاعر دون تجاوز قيود واجهة برمجة التطبيقات ، فاستخدم فئة com.datumbox.applications.nlp.TextClassifier.

يمكن العثور على كود PHP الكامل للأداة على جيثب.

كيف يعمل تحليل المشاعر على Facebook؟

كما ناقشنا في المقالات السابقة ، أداء تحليل المشاعر يتطلب استخدام تقنيات متقدمة للتعلم الآلي ومعالجة اللغة الطبيعية. في المنشورات السابقة رأينا بالتفصيل عدة مصنفات نصية مثل ساذجة بايزأطلقت حملة الانحدار Softmax و ماكس الانتروبيا، ناقشنا أهمية استخدام اختيار ميزة في مشاكل تصنيف النص وأخيراً رأينا كيف يمكن للمرء تطوير تطبيق المصنف Naive Bayes متعدد الحدود في جافا.

لا يختلف إجراء تحليل المشاعر على Facebook بشكل كبير عما ناقشناه في الماضي. باختصار ، نحتاج إلى جلب منشورات Facebook واستخراج المحتوى الخاص بهم ومن ثم نقوم بترميزها لاستخراج مجموعات الكلمات الرئيسية الخاصة بهم. بعد ذلك ، نقوم باختيار الميزة للاحتفاظ فقط بالجرامات التي تعتبر مهمة لمشكلة التصنيف ونقوم بتدريب المصنف لدينا لتحديد المشاركات الإيجابية والسلبية والمحايدة.

تم تبسيط العملية المذكورة أعلاه بشكل كبير باستخدام Datumbox's واجهة برمجة تطبيقات التعلم الآلي. كل ما يحتاج المرء إلى القيام به لتحليل المشاعر على Facebook هو استدعاء بحث Graph API لاستخراج منشورات الاهتمام واستخراج نصها والاتصال بـ Datumbox Sentiment Analysis API للحصول على تصنيفها.

بناء أداة فيسبوك لتحليل المشاعر

من أجل بناء أداة Facebook Sentiment Analysis ، تحتاج إلى شيئين: استخدام Facebook API لجلب المنشورات العامة وتقييم قطبية المنشورات بناءً على كلماتها الرئيسية. بالنسبة للمهمة الأولى ، سنستخدم بحث الرسم البياني لـ Facebook للرسالة والثانية Datumbox API 1.0v.

سنسرع في تطوير الأداة باستخدام فئتين: الفيسبوك PHP SDK مما يتيح لنا الوصول بسهولة إلى بحث الرسم البياني و Datumbox عميل PHP-API. مرة أخرى ، تتمثل المهمة الأكثر تعقيدًا في العملية في إنشاء تطبيق Facebook والذي سيتيح لنا جلب المنشورات من Facebook ؛ دمج Datumbox هو قطعة من الكعكة.

إنشاء تطبيق Facebook الخاص بك

تحليل المشاعر فيسبوكللأسف جعل Facebook من المصادقة إلزامية قبل الوصول واجهة برمجة تطبيقات بحث الرسم البياني. لحسن الحظ أنها توفر سهلة الاستخدام للغاية SDK الذي يهتم بمعظم التفاصيل الفنية للتكامل. قبل استخدامه ، يجب عليك إنشاء تطبيق Facebook جديد باستخدام حساب Facebook الخاص بك.

العملية بسيطة. اذهب إلى صفحة مطوري الفيسبوك (ستحتاج إلى التسجيل إذا لم تكن قد كتبت تطبيق Facebook في الماضي). انقر على التطبيقات في القائمة وحدد "إنشاء تطبيق جديد".

في النافذة المنبثقة ، قم بملء اسم العرض الخاص بالتطبيق ، مساحة الاسم ، حدد فئة وانقر فوق إنشاء تطبيق. بمجرد إنشاء التطبيق ، انتقل إلى الصفحة الرئيسية للتطبيق وحدد لوحة المعلومات. هذا هو المكان الذي ستحصل فيه على معرف التطبيق وقيم سر التطبيق. انسخ هذه القيم في مكان آمن لأننا سنحتاج إليها لاحقًا.

انتقل بعد ذلك إلى إعدادات التطبيق وانقر على "+ منصة التطبيقات" في أسفل الصفحة. في النافذة المنبثقة ، حدد "موقع الويب" ثم على عنوان URL الخاص بالموقع ، ضع عنوان URL الخاص بالموقع الذي ستحمل فيه أداتك (مثال: https: // localhost /). انقر فوق "حفظ التغييرات" وتكون قد انتهيت!

احصل على مفتاح Datumbox API الخاص بك

للوصول إلى Datumbox API شارك بالرسائل الإلكترونية للحصول على حساب مجاني وزيارة حسابك لوحة بيانات اعتماد API للحصول على مفتاح API الخاص بك.

تطوير فئة تحليل المشاعر على Facebook

أخيرًا كل ما نحتاجه هو كتابة فئة بسيطة تدمج واجهات برمجة التطبيقات. يقوم أولاً باستدعاء Facebook Graph Search ، والمصادقة ، وإحضار المنشورات ثم تمريرها إلى 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. في الطريقة العامة sentimentAnalysis () نقوم بتهيئة عميل Facebook ، ونصادق على قائمة المنشورات ونسترجعها. لاحظ أنه إذا لم تقم بعد بتفويض تطبيقك أو إذا لم تقم بتسجيل الدخول إلى Facebook باستخدام حسابك ، فستتم إعادة توجيهك إلى Facebook.com لتسجيل الدخول وتفويض التطبيق (إنه تطبيقك ، فلا تقلق بشأن مشكلات الخصوصية). بمجرد استرداد قائمة المنشورات ، يتم تمريرها إلى Datumbox API للحصول على قطبيتها.

يمكنك الذهاب! أنت على استعداد لاستخدام هذا الفصل لإجراء تحليل المشاعر على Facebook. تستطيع بإمكانك تحميله كود PHP الكامل لأداة تحليل المشاعر على Facebook من Github.

استخدام وتوسيع التنفيذ

لاستخدام الأداة المقدمة ، تحتاج إلى إنشاء تطبيق Facebook كما هو موضح أعلاه ثم تكوينه عن طريق تعديل ملف config.php. ستحتاج في هذا الملف إلى وضع مفتاح واجهة برمجة تطبيقات Datumbox ، ومعرف وسر تطبيق Facebook الذي نسخته سابقًا.

أخيرا في المنشور السابق قمنا ببناء قائمة بذاتها أداة تحليل المشاعر التغريد. لن يستغرق الأمر أكثر من 10 دقائق لدمج عمليتي التنفيذ وإنشاء أداة واحدة قادرة على جلب المشاركات من Facebook و Twitter وتقديم النتائج في تقرير واحد.

إذا استمتعت بالمقالة ، يرجى تخصيص دقيقة لمشاركتها على Facebook أو Twitter! 🙂

الطابع الزمني:

اكثر من داتومبوكس