איך לבנות את הכלי שלך לניתוח סנטימנטים בפייסבוק PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

כיצד לבנות כלי ניתוח משלך של פייסבוק

במאמר זה נדון כיצד ניתן לבנות בקלות כלי ניתוח רגשות בפייסבוק המסוגל לסווג פוסטים ציבוריים (הן ממשתמשים והן מדפים) כחיובי, שלילי ונייטרלי. אנו נשתמש בחיפוש ה- API של Graph של ה- Facebook וב- 1.0v API של Datumbox. דומה ל כלי ניתוח הסנטימנט בטוויטר שבנינו לפני כמה חודשים, יישום זה כתוב ב- PHP ובכל זאת תוכלו לבנות בקלות את הכלי שלכם בשפת המחשב שבחרתם.

עדכון: מסגרת הלמידה על מכונה של Datumbox היא כעת קוד פתוח וחינמית ל- להורדה. אם ברצונך לבנות מסווג ניתוח סנטימנטים מבלי לפגוע במגבלות ה- API, השתמש במחלקה com.datumbox.applications.nlp.TextClassifier.

ניתן למצוא את קוד ה- PHP המלא של הכלי ב GitHub.

כיצד פועל ניתוח סנטימנט בפייסבוק?

כפי שדנו במאמרים קודמים, ביצוע ניתוח הסנטימנט דורש שימוש בטכניקות מתקדמות של למידת מכונה ועיבוד שפות טבעיות. בפוסטים הקודמים ראינו בפירוט כמה מסווגי טקסט כגון נאיביות, ה רגרסיה של Softmax ו מקסימום אנטרופיה, דנו בחשיבות השימוש בחירת תכונה בבעיות סיווג טקסט ולבסוף ראינו כיצד ניתן לפתח יישום של ה- מסווג Naive Bayes רב-נומי ב- JAVA.

ביצוע ניתוח סנטימנט בפייסבוק אינו שונה משמעותית ממה שדנו בעבר. בקצרה, עלינו להביא את הפוסטים בפייסבוק ולחלץ את התוכן שלהם ואז אסימנו אותם על מנת לחלץ את שילובי מילות המפתח שלהם. לאחר מכן אנו מבצעים בחירת תכונות בכדי לשמור רק על הגרמים החשובים לבעיית הסיווג ואנחנו מכשירים את המסווג שלנו לזהות את ההודעות החיוביות, השליליות והניטראליות.

התהליך הנ"ל מפשט באופן משמעותי על ידי שימוש ב- Datumbox ממשק API ללימוד מכונה. כל מה שצריך לעשות כדי לבצע ניתוח סנטימנט בפייסבוק הוא להתקשר לחיפוש API של Graph כדי לחלץ את הפוסטים שמעניינים אותם, לחלץ את הטקסט שלהם ולהתקשר ל- API של Datumbox Sentiment Analysis כדי לקבל את הסיווג שלהם.

בניית הכלי לניתוח סנטימנט בפייסבוק

על מנת לבנות את הכלי ניתוח סנטימנט בפייסבוק אתה זקוק לשני דברים: להשתמש ב- API של פייסבוק על מנת להביא את הפוסטים הציבוריים ולהעריך את הקוטביות של הפוסטים על סמך מילות המפתח שלהם. למשימה הראשונה נשתמש בחיפוש ה- API של הגרף של פייסבוק ובשנייה ב- Datumbox API 1.0v.

נאיץ את פיתוח הכלי באמצעות 2 שיעורים: פייסבוק PHP SDK מה שיאפשר לנו בקלות לגשת לחיפוש הגרפים ולדאטומבוקס לקוח PHP-API. שוב המשימה המסובכת ביותר בתהליך היא יצירת אפליקציית פייסבוק שתאפשר לנו להביא את הפוסטים מפייסבוק; שילוב דטומבוקס הוא חתיכת עוגה.

יצירת יישום פייסבוק משלך

ניתוח סנטימנט בפייסבוקלמרבה הצער פייסבוק חלה חובה לאמת לפני גישה ה- API שלהם לחיפוש גרפים. למרבה המזל הם מספקים קל מאוד לשימוש SDK הדואג לרוב הפרטים הטכניים של האינטגרציה. עדיין לפני השימוש בו עליך ליצור באמצעות חשבון הפייסבוק שלך יישום פייסבוק חדש.

התהליך פשוט. לך ל דף מפתחי פייסבוק (יהיה עליך להירשם אם מעולם לא כתבת יישום פייסבוק בעבר). לחץ על יישומים בתפריט ובחר "צור יישום חדש".

בחלון הקופץ מלא את שם התצוגה של היישום שלך, את מרחב השמות, בחר קטגוריה ולחץ על צור יישום. לאחר יצירת היישום עבור לדף הראשי של היישום שלך ובחר לוח מחוונים. זה המקום שבו תקבל את ה- AppID שלך ואת הערכים הסודיים של האפליקציה. העתק את הערכים במקום בטוח שכן נצטרך אותם בהמשך.

לאחר מכן עבור להגדרות של האפליקציה שלך ולחץ על "+ פלטפורמת אפליקציה" בתחתית העמוד. בחלון הקופץ בחר "אתר" ולאחר מכן בכתובת כתובת האתר שים את כתובת האתר של המיקום שאליו תעלה את הכלי שלך (לדוגמה: https://localhost/). לחץ על "שמור שינויים" וסיימת!

קבל את מפתח ה- API של Datumbox

כדי לגשת ל- API של Datumbox הירשמו לחשבון חינם ובקר ב- חלונית אישורי API כדי להשיג את מפתח ה- API שלך.

פיתוח הכיתה ניתוח סנטימנט בפייסבוק

לבסוף כל שעלינו לעשות הוא לכתוב מחלקה פשוטה המשלבת את שני ה- APIs. ראשית מתקשר לחיפוש הגרפים של פייסבוק, מאמת, מביא את הפוסטים ואז מעביר אותם ל- 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 APIs. בשיטה הציבורית sentimentAnalysis () אנו מאתחלים את לקוח פייסבוק, אנו מאמתים ואנחנו מאחזרים את רשימת ההודעות. שים לב שאם עדיין לא אישרת את היישום שלך או אם אינך מחובר לפייסבוק באמצעות חשבונך, תנותב אל Facebook.com כדי להתחבר ולאישור היישום (זו האפליקציה שלך, אין דאגות בנושאי פרטיות). לאחר שאוחזרו רשימת ההודעות הם מועברים ל- API של Datumbox כדי לקבל את הקוטביות שלהם.

אתה טוב ללכת! אתה מוכן להשתמש בכיתה זו לביצוע ניתוח רגש בפייסבוק. אתה יכול להורדה קוד ה- PHP השלם של כלי ניתוח הסנטימנטים של פייסבוק מ- Github.

שימוש והרחבה של היישום

כדי להשתמש בכלי המסופק עליך ליצור את יישום Facebook כמתואר לעיל ואז להגדיר אותו על ידי שינוי הקובץ config.php. בקובץ זה יהיה עליך לשים את מפתח ה- Datumbox API, את מזהה האפליקציה של Facebook ואת הסוד שהעתקת קודם.

לבסוף בפוסט הקודם בנינו עצמאי כלי ניתוח הסנטימנט בטוויטר. לא ייקח לך יותר מ -10 דקות למזג את שתי היישומים וליצור כלי יחיד המסוגל להביא פוסטים הן מפייסבוק והן מטוויטר ולהציג את התוצאות בדוח יחיד.

אם נהנית מהמאמר אנא קח דקה לשתף אותו בפייסבוק או בטוויטר! 🙂

בול זמן:

עוד מ דטומבוקס