确定 Cloud Storage 存储的文件文本中传达的关于实体的情感(积极还是消极)。
深入探索
如需查看包含此代码示例的详细文档,请参阅以下内容:
代码示例
Java
如需了解如何安装和使用 Natural Language 的客户端库,请参阅 Natural Language 客户端库。 如需了解详情,请参阅 Natural Language Java API 参考文档。
如需向 Natural Language 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
// Instantiate the Language client com.google.cloud.language.v1.LanguageServiceClient
try (com.google.cloud.language.v1.LanguageServiceClient language =
com.google.cloud.language.v1.LanguageServiceClient.create()) {
com.google.cloud.language.v1.Document doc =
com.google.cloud.language.v1.Document.newBuilder().setGcsContentUri(gcsUri)
.setType(com.google.cloud.language.v1.Document.Type.PLAIN_TEXT).build();
AnalyzeEntitySentimentRequest request =
AnalyzeEntitySentimentRequest.newBuilder()
.setDocument(doc)
.setEncodingType(com.google.cloud.language.v1.EncodingType.UTF16)
.build();
// Detect entity sentiments in the given file
AnalyzeEntitySentimentResponse response = language.analyzeEntitySentiment(request);
// Print the response
for (com.google.cloud.language.v1.Entity entity : response.getEntitiesList()) {
System.out.printf("Entity: %s\n", entity.getName());
System.out.printf("Salience: %.3f\n", entity.getSalience());
System.out.printf("Sentiment : %s\n", entity.getSentiment());
for (com.google.cloud.language.v1.EntityMention mention : entity.getMentionsList()) {
System.out.printf("Begin offset: %d\n", mention.getText().getBeginOffset());
System.out.printf("Content: %s\n", mention.getText().getContent());
System.out.printf("Magnitude: %.3f\n", mention.getSentiment().getMagnitude());
System.out.printf("Sentiment score : %.3f\n", mention.getSentiment().getScore());
System.out.printf("Type: %s\n\n", mention.getType());
}
}
}
Node.js
如需了解如何安装和使用 Natural Language 的客户端库,请参阅 Natural Language 客户端库。 如需了解详情,请参阅 Natural Language Node.js API 参考文档。
如需向 Natural Language 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
// Imports the Google Cloud client library
const language = require('@google-cloud/language');
// Creates a client
const client = new language.LanguageServiceClient();
/**
* TODO(developer): Uncomment the following lines to run this code
*/
// const bucketName = 'Your bucket name, e.g. my-bucket';
// const fileName = 'Your file name, e.g. my-file.txt';
// Prepares a document, representing a text file in Cloud Storage
const document = {
gcsContentUri: `gs://${bucketName}/${fileName}`,
type: 'PLAIN_TEXT',
};
// Detects sentiment of entities in the document
const [result] = await client.analyzeEntitySentiment({document});
const entities = result.entities;
console.log('Entities and sentiments:');
entities.forEach(entity => {
console.log(` Name: ${entity.name}`);
console.log(` Type: ${entity.type}`);
console.log(` Score: ${entity.sentiment.score}`);
console.log(` Magnitude: ${entity.sentiment.magnitude}`);
});
PHP
如需了解如何安装和使用 Natural Language 的客户端库,请参阅 Natural Language 客户端库。
如需向 Natural Language 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
use Google\Cloud\Language\V1\AnalyzeEntitySentimentRequest;
use Google\Cloud\Language\V1\Client\LanguageServiceClient;
use Google\Cloud\Language\V1\Document;
use Google\Cloud\Language\V1\Document\Type;
use Google\Cloud\Language\V1\Entity\Type as EntityType;
/**
* @param string $uri The cloud storage object to analyze (gs://your-bucket-name/your-object-name)
*/
function analyze_entity_sentiment_from_file(string $uri): void
{
// Create the Natural Language client
$languageServiceClient = new LanguageServiceClient();
// Create a new Document, pass GCS URI and set type to PLAIN_TEXT
$document = (new Document())
->setGcsContentUri($uri)
->setType(Type::PLAIN_TEXT);
// Call the analyzeEntitySentiment function
$request = (new AnalyzeEntitySentimentRequest())
->setDocument($document);
$response = $languageServiceClient->analyzeEntitySentiment($request);
$entities = $response->getEntities();
// Print out information about each entity
foreach ($entities as $entity) {
printf('Entity Name: %s' . PHP_EOL, $entity->getName());
printf('Entity Type: %s' . PHP_EOL, EntityType::name($entity->getType()));
printf('Entity Salience: %s' . PHP_EOL, $entity->getSalience());
$sentiment = $entity->getSentiment();
if ($sentiment) {
printf('Entity Magnitude: %s' . PHP_EOL, $sentiment->getMagnitude());
printf('Entity Score: %s' . PHP_EOL, $sentiment->getScore());
}
print(PHP_EOL);
}
}
Python
如需了解如何安装和使用 Natural Language 的客户端库,请参阅 Natural Language 客户端库。 如需了解详情,请参阅 Natural Language Python API 参考文档。
如需向 Natural Language 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
from google.cloud import language_v1
def sample_analyze_entity_sentiment(gcs_content_uri):
"""
Analyzing Entity Sentiment in text file stored in Cloud Storage
Args:
gcs_content_uri Google Cloud Storage URI where the file content is located.
e.g. gs://[Your Bucket]/[Path to File]
"""
client = language_v1.LanguageServiceClient()
# gcs_content_uri = 'gs://cloud-samples-data/language/entity-sentiment.txt'
# Available types: PLAIN_TEXT, HTML
type_ = language_v1.Document.Type.PLAIN_TEXT
# Optional. If not specified, the language is automatically detected.
# For list of supported languages:
# https://cloud.google.com/natural-language/docs/languages
language = "en"
document = {
"gcs_content_uri": gcs_content_uri,
"type_": type_,
"language": language,
}
# Available values: NONE, UTF8, UTF16, UTF32
encoding_type = language_v1.EncodingType.UTF8
response = client.analyze_entity_sentiment(
request={"document": document, "encoding_type": encoding_type}
)
# Loop through entitites returned from the API
for entity in response.entities:
print(f"Representative name for the entity: {entity.name}")
# Get entity type, e.g. PERSON, LOCATION, ADDRESS, NUMBER, et al
print(f"Entity type: {language_v1.Entity.Type(entity.type_).name}")
# Get the salience score associated with the entity in the [0, 1.0] range
print(f"Salience score: {entity.salience}")
# Get the aggregate sentiment expressed for this entity in the provided document.
sentiment = entity.sentiment
print(f"Entity sentiment score: {sentiment.score}")
print(f"Entity sentiment magnitude: {sentiment.magnitude}")
# Loop over the metadata associated with entity. For many known entities,
# the metadata is a Wikipedia URL (wikipedia_url) and Knowledge Graph MID (mid).
# Some entity types may have additional metadata, e.g. ADDRESS entities
# may have metadata for the address street_name, postal_code, et al.
for metadata_name, metadata_value in entity.metadata.items():
print(f"{metadata_name} = {metadata_value}")
# Loop over the mentions of this entity in the input document.
# The API currently supports proper noun mentions.
for mention in entity.mentions:
print(f"Mention text: {mention.text.content}")
# Get the mention type, e.g. PROPER for proper noun
print(
"Mention type: {}".format(
language_v1.EntityMention.Type(mention.type_).name
)
)
# Get the language of the text, which will be the same as
# the language specified in the request or, if not specified,
# the automatically-detected language.
print(f"Language of the text: {response.language}")
后续步骤
如需搜索和过滤其他 Google Cloud 产品的代码示例,请参阅 Google Cloud 示例浏览器。