2012-05-17 12 views
8

Esistono API in grado di estrarre gli stati d'animo da una stringa (per l'utilizzo in PHP ma possono essere implementati in qualsiasi lingua)?Rilevamento dell'umore di un tweet o di un messaggio

Se uno non esiste, come dovrei fare per costruire un classificatore, presumibilmente qualcosa legato all'apprendimento automatico, dove estraggo le parole con nota positiva/negativa.

+3

È utile? Http://stackoverflow.com/a/959162/995958 –

+3

Tutti questi upvotes vedono qualcosa che non sono, o lo vogliono davvero, ma hai fatto qualche ricerca su questo? pianifica di crearne uno (per la seconda parte della domanda) ecc. (ricorda che il suggerimento sul downvoting di una domanda inizia con "Questa domanda non mostra alcuno sforzo di ricerca;") – Nanne

+0

@Nanne che parla per me stesso ; sarebbe interessante vederlo implementato. –

risposta

2

Vorrei suggerire AlchemyAPI. Hanno API molto semplice (che non dovrebbe essere difficile da usare. Per il vostro caso specifico, guardare in here

+0

Vedere sotto come ho fatto questo seguendo il tuo suggerimento di questa api –

0

Utilizzando il suggerimento sopra di AlchemyapI, qui è un sistema molto semplice basato su Facebook status

$id = CURRENT USER ID; 
    $message = array(); //the users posts with scores 
    $status = $fb->fql("SELECT status_id, message FROM status WHERE uid=$id LIMIT 10"); 
    foreach($status as $stat) { 
    $message = file_get_contents("http://access.alchemyapi.com/calls/text/TextGetTextSentiment" 
         ."?outputMode=json&apikey=MYAPIKEY" 
         ."&text=".urlencode($stat['message'])); 
    $data = json_decode($message); //get reply 
    $messages[] = array("status"=>$stat['message'], "score"=>($data->docSentiment->type!="neutral") ? $data->docSentiment->score : 0); //save reply 
    } 

    $user = $fb->api("/".$id); //query the user 

    $content .= "<h3>".$user['name']."</h3>"; 

    $total = 0; 
    $count = 0; 
    foreach($messages as $message) { 
    $total += $message['score']; 
    if($message['score']!=0) $count++; 
    } 

    $content .= 'Has an average rating of '.$total/$count.' <meter min="-1" max="1" value="'.$total/$count.'"></meter><br /><br />'; 

    foreach($messages as $message) { 
    $content .= '<b>'.$message['status'].'</b> '.$message['score'].'</br>' 
       .'<meter ' //class="'.($message['score'] == 0 ? "yellow" : $message['score'] < 0 ? "red" : "green").'" ' 
       .'value="'.$message['score'].'" min="-0.5" max="0.5" optimum="0">'.$message['score'].' out of -1 to 1</meter><br /><br />'; 
    } 
+0

Questo fornisce l'analisi di base tra -1 e +1 di quanto sia negativo o positivo un messaggio rispettivamente –

Problemi correlati