Author: Manuel Lemos
Updated on: 2024-01-10
Posted on: 2024-01-10
Package: PHP OAuth Library
One type of interpretation of human language is the analysis of sentiments expressed by people when they send text messages.
Read this step-by-step tutorial article to learn, for example, PHP code and how to use Google Cloud Natural Language API to analyze human sentiments using text messages from PHP.
In this article you will learn:
1. Why Sentiment Analysis Can Be Useful In Applications That Process User Messages
2. What a PHP Developer Can Do to Analyse the Sentiments Expressed in User Messages
3. How Can You Implement Sentiment Analysis in PHP by Calling the Google Cloud Natural Language API
4. How Can You Download or Install the PHP OAuth Client Class to Call APIs Using the PHP Composer Tool
1. Why Sentiment Analysis Can Be Useful In Applications That Process User Messages
There are many services on the Internet that can be used to transmit messages between users.
Sometimes, users who are not feeling well send messages that pass negativity and cause bad feelings to other users.
Suppose messages can be analyzed to detect negativity automatically when the messages are sent. In that case, it is possible to ask the user trying to send negative messages to calm down and reconsider how he is writing those messages to be more positive and cause good sentiments.
2. What a PHP Developer Can Do to Analyse the Sentiments Expressed in User Messages
Analyzing text sentences to detect user sentiments is a complex task. It requires good knowledge of text parsing, grammar analysis, expression meaning analysis, and sentence scoring.
All these steps needed to implement good sentiment analysis solutions can be implemented in any modern programming language.
There are some good solutions to implement sentiment analysis in PHP, like, for instance, the packages PHP Sentiment Analyzer and the WordPress Plugin Sentiment Analysis.
Still, it is hard to implement a complete solution that supports many languages users use to write their text messages.
Modern artificial intelligence solutions provided as APIs like the Google Cloud Natural Language API can help to achieve that goal.
3. How Can You Implement Sentiment Analysis in PHP by Calling the Google Cloud Natural Language API
The Google Cloud Natural Language API can be called using the OAuth protocol to obtain an access token necessary to make API calls on behalf of a given authenticated user with a Google account or using an API key.
In this article, I will explain the steps to call the Google Cloud Natural Language API using an OAuth access token.
3.1. Obtain an Access Token to Use in by the PHP Code
The first step is to obtain an access token from the Google Cloud Console. You need to go to the API page and click on the button to activate the API.
Then click on the OAuth consent screen tab and click on the button to create an application.
On the scopes step you need to add the scopes https://www.googleapis.com/auth/cloud-language and https://www.googleapis.com/auth/userinfo.profile .
On the Credentials tab, click on the CREATE CREDENTIALS button and select the OAuth client ID menu entry.
On the application type, select the Web application menu. On the Authorized redirect URIs input enter the URL of the script that I am showing below in your Web server.
When you are done creating the application, take note of the Client ID and Client secret that appears.
3.2 Calling the Google Cloud Natural Language API
The OAuth Client library package comes with an example script XXX that you can adapt to use in your applications that call the Google Cloud Natural Language API.
Here is the same script with some explanations
3.2.1. Initialize the OAuth client class
$client = new oauth_client_class;
$client->server = 'Google';
3.2.2. Set the debug variable to true only if there is something wrong you need to understand and fix
$client->debug = false;
$client->debug_http = true;
$client->redirect_uri = 'https://'.$_SERVER['HTTP_HOST'].
dirname(strtok($_SERVER['REQUEST_URI'],'?')).'/google_natural_language_sentiment_analysis.php';
3.2.3 Set the client_id and client_secret with credentials obtained from the Google Cloud Console
$client->client_id = ''; $application_line = __LINE__;
$client->client_secret = '';
if(strlen($client->client_id) == 0
|| strlen($client->client_secret) == 0)
die('Please go to Google APIs console page '.
'https://console.cloud.google.com/apis/library/language.googleapis.com in the API access tab, '.
'create a new client ID, and in the line '.$application_line.
' set the client_id to Client ID and client_secret with Client Secret. '.
'The callback URL must be '.$client->redirect_uri.' but make sure '.
'the domain is valid and can be resolved by a public DNS.');
/* API permissions
*/
$client->scope = 'https://www.googleapis.com/auth/cloud-language'.' '.
'https://www.googleapis.com/auth/userinfo.profile';
3.2.4 Initialize and call the PHP OAuth client class to call the Google Natural Language API
if(($success = $client->Initialize()))
{
if(($success = $client->Process()))
{
if(strlen($client->authorization_error))
{
$client->error = $client->authorization_error;
$success = false;
}
elseif(strlen($client->access_token))
{
3.2.5 Call the Google account user profile API to get the user name
$success = $client->CallAPI(
'https://www.googleapis.com/oauth2/v1/userinfo',
'GET', array(), array('FailOnAccessError'=>true), $user)
if($success)
{
3.2.6 Check if the form to enter the text to analyzed was submitted
if(IsSet($_POST['text']))
{
3.2.7 Compose the object with the details for the sentiment analysis API call.
$document = new stdClass;
$document->content = $_POST['text'];
$document->language = 'en';
$document->type = 'PLAIN_TEXT';
$sentiment_analysis_request = new stdClass;
$sentiment_analysis_request->document = $document;
$sentiment_analysis_request->encodingType = 'UTF8';
3.2.8 Send the sentiment analysis API call
$success = $client->CallAPI(
'https://language.googleapis.com/v1/documents:analyzeSentiment',
'POST', array(), array(
'FailOnAccessError'=>true,
'RequestContentType'=>'application/json',
'RequestBody'=>json_encode($sentiment_analysis_request),
), $sentiment_analysis);
}
}
}
}
$success = $client->Finalize($success);
}
if($client->exit)
exit;
if($success)
{
3.2.8 If all went well, display the page with the sentiment analysis results and a form to let the user enter a new text message to analyze
?>
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Google Natural Language Sentiment Analysis</title>
</head>
<body>
<h1>Google Natural Language Sentiment Analysis</h1>
<?php
if($client->debug)
{
3.2.9 Show the Google user account API call results in debug mode
echo '<h1>', HtmlSpecialChars($user->name),
', you have logged in successfully with Google!</h1>';
echo '<pre>', HtmlSpecialChars(print_r($user, 1)), '</pre>';
echo '<pre>Access token: ', HtmlSpecialChars($client->access_token), '</pre>';
}
3.2.10 If the user submitted the form to analyse the sentiments of a text message, display the results
if(IsSet($_POST['text']))
{
$analyze_sentiment_score = function($score)
{
if($score >= 0.8)
return 'Clearly Positive';
if($score > 0.1)
return 'Positive';
if($score <= -0.8)
return 'Clearly Negative';
if($score < -0.1)
return 'Negative';
if($score != 0)
return 'Neutral';
return 'Mixed';
};
if($client->debug)
echo '<pre>', HtmlSpecialChars(print_r($sentiment_analysis, 1)), '</pre>';
echo '<h2>Results:</h2>',"\n";
$sentences = count($sentiment_analysis->sentences);
echo '<h3>Sentences: ', $sentences, '</h3>',"\n";
$score = $sentiment_analysis->documentSentiment->score;
echo '<p>Sentiment score: ', $score, ' ', $analyze_sentiment_score($score), '</p>',"\n";
for($sentence = 0; $sentence < $sentences; ++$sentence)
{
echo '<h3>Sentence ', ($sentence + 1), ': ', HtmlSpecialChars($sentiment_analysis->sentences[$sentence]->text->content), '</h3>';
$score = $sentiment_analysis->sentences[$sentence]->sentiment->score;
echo '<p>Sentiment score: ', $score, ' ', $analyze_sentiment_score($score), '</p>',"\n";
}
}
3.2.11 Show a form to let the user enter a text message to analyse the user sentiments
?>
<form method="POST">
<h2><?php echo HtmlSpecialChars($user->name); ?>, please enter a text to analyze:</h2>
<div>
<textarea name="text" rows="6" cols="60"><?php
if(IsSet($_POST['text']))
{
echo HtmlSpecialChars($_POST['text']);
}
?>
</textarea>
</div>
<div>
<input type="submit" value="Analyze">
</div>
</form>
</body>
</html>
<?php
}
else
{
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>OAuth client error</title>
</head>
<body>
<h1>OAuth client error</h1>
<pre>Error: <?php echo HtmlSpecialChars($client->error); ?></pre>
</body>
</html>
<?php
}
?>
4. How Can You Download or Install the PHP OAuth Client Class to Call APIs Using the PHP Composer Tool
The PHP OAuth Client class can be downloaded from the package download page in zip or tar.gz format.
If you use the PHP Composer tool, you can find instructions in the package download page using the Install with Composer button to update your projects' composer.json file to install this package and any dependent packages when your project is installed or updated.
You need to be a registered user or login to post a comment
Login Immediately with your account on:
Comments:
No comments were submitted yet.