<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="language_v2.html">Cloud Natural Language API</a> . <a href="language_v2.documents.html">documents</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#analyzeEntities">analyzeEntities(body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Finds named entities (currently proper names and common nouns) in the text along with entity types, probability, mentions for each entity, and other properties.</p>
<p class="toc_element">
  <code><a href="#analyzeSentiment">analyzeSentiment(body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Analyzes the sentiment of the provided text.</p>
<p class="toc_element">
  <code><a href="#annotateText">annotateText(body=None, x__xgafv=None)</a></code></p>
<p class="firstline">A convenience method that provides all features in one call.</p>
<p class="toc_element">
  <code><a href="#classifyText">classifyText(body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Classifies a document into categories.</p>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#moderateText">moderateText(body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Moderates a document for harmful and sensitive categories.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="analyzeEntities">analyzeEntities(body=None, x__xgafv=None)</code>
  <pre>Finds named entities (currently proper names and common nouns) in the text along with entity types, probability, mentions for each entity, and other properties.

Args:
  body: object, The request body.
    The object takes the form of:

{ # The entity analysis request message.
  &quot;document&quot;: { # Represents the input to API methods. # Required. Input document.
    &quot;content&quot;: &quot;A String&quot;, # The content of the input in string format. Cloud audit logging exempt since it is based on user data.
    &quot;gcsContentUri&quot;: &quot;A String&quot;, # The Google Cloud Storage URI where the file content is located. This URI must be of the form: gs://bucket_name/object_name. For more details, see https://cloud.google.com/storage/docs/reference-uris. NOTE: Cloud Storage object versioning is not supported.
    &quot;languageCode&quot;: &quot;A String&quot;, # Optional. The language of the document (if not specified, the language is automatically detected). Both ISO and BCP-47 language codes are accepted. [Language Support](https://cloud.google.com/natural-language/docs/languages) lists currently supported languages for each API method. If the language (either specified by the caller or automatically detected) is not supported by the called API method, an `INVALID_ARGUMENT` error is returned.
    &quot;type&quot;: &quot;A String&quot;, # Required. If the type is not set or is `TYPE_UNSPECIFIED`, returns an `INVALID_ARGUMENT` error.
  },
  &quot;encodingType&quot;: &quot;A String&quot;, # The encoding type used by the API to calculate offsets.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The entity analysis response message.
  &quot;entities&quot;: [ # The recognized entities in the input document.
    { # Represents a phrase in the text that is a known entity, such as a person, an organization, or location. The API associates information, such as probability and mentions, with entities.
      &quot;mentions&quot;: [ # The mentions of this entity in the input document. The API currently supports proper noun mentions.
        { # Represents a mention for an entity in the text. Currently, proper noun mentions are supported.
          &quot;probability&quot;: 3.14, # Probability score associated with the entity. The score shows the probability of the entity mention being the entity type. The score is in (0, 1] range.
          &quot;sentiment&quot;: { # Represents the feeling associated with the entire text or entities in the text. # For calls to AnalyzeEntitySentiment or if AnnotateTextRequest.Features.extract_entity_sentiment is set to true, this field will contain the sentiment expressed for this mention of the entity in the provided document.
            &quot;magnitude&quot;: 3.14, # A non-negative number in the [0, +inf) range, which represents the absolute magnitude of sentiment regardless of score (positive or negative).
            &quot;score&quot;: 3.14, # Sentiment score between -1.0 (negative sentiment) and 1.0 (positive sentiment).
          },
          &quot;text&quot;: { # Represents a text span in the input document. # The mention text.
            &quot;beginOffset&quot;: 42, # The API calculates the beginning offset of the content in the original document according to the EncodingType specified in the API request.
            &quot;content&quot;: &quot;A String&quot;, # The content of the text span, which is a substring of the document.
          },
          &quot;type&quot;: &quot;A String&quot;, # The type of the entity mention.
        },
      ],
      &quot;metadata&quot;: { # Metadata associated with the entity. For the metadata associated with other entity types, see the Type table below.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;name&quot;: &quot;A String&quot;, # The representative name for the entity.
      &quot;sentiment&quot;: { # Represents the feeling associated with the entire text or entities in the text. # For calls to AnalyzeEntitySentiment or if AnnotateTextRequest.Features.extract_entity_sentiment is set to true, this field will contain the aggregate sentiment expressed for this entity in the provided document.
        &quot;magnitude&quot;: 3.14, # A non-negative number in the [0, +inf) range, which represents the absolute magnitude of sentiment regardless of score (positive or negative).
        &quot;score&quot;: 3.14, # Sentiment score between -1.0 (negative sentiment) and 1.0 (positive sentiment).
      },
      &quot;type&quot;: &quot;A String&quot;, # The entity type.
    },
  ],
  &quot;languageCode&quot;: &quot;A String&quot;, # 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. See Document.language field for more details.
  &quot;languageSupported&quot;: True or False, # Whether the language is officially supported. The API may still return a response when the language is not supported, but it is on a best effort basis.
}</pre>
</div>

<div class="method">
    <code class="details" id="analyzeSentiment">analyzeSentiment(body=None, x__xgafv=None)</code>
  <pre>Analyzes the sentiment of the provided text.

Args:
  body: object, The request body.
    The object takes the form of:

{ # The sentiment analysis request message.
  &quot;document&quot;: { # Represents the input to API methods. # Required. Input document.
    &quot;content&quot;: &quot;A String&quot;, # The content of the input in string format. Cloud audit logging exempt since it is based on user data.
    &quot;gcsContentUri&quot;: &quot;A String&quot;, # The Google Cloud Storage URI where the file content is located. This URI must be of the form: gs://bucket_name/object_name. For more details, see https://cloud.google.com/storage/docs/reference-uris. NOTE: Cloud Storage object versioning is not supported.
    &quot;languageCode&quot;: &quot;A String&quot;, # Optional. The language of the document (if not specified, the language is automatically detected). Both ISO and BCP-47 language codes are accepted. [Language Support](https://cloud.google.com/natural-language/docs/languages) lists currently supported languages for each API method. If the language (either specified by the caller or automatically detected) is not supported by the called API method, an `INVALID_ARGUMENT` error is returned.
    &quot;type&quot;: &quot;A String&quot;, # Required. If the type is not set or is `TYPE_UNSPECIFIED`, returns an `INVALID_ARGUMENT` error.
  },
  &quot;encodingType&quot;: &quot;A String&quot;, # The encoding type used by the API to calculate sentence offsets.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The sentiment analysis response message.
  &quot;documentSentiment&quot;: { # Represents the feeling associated with the entire text or entities in the text. # The overall sentiment of the input document.
    &quot;magnitude&quot;: 3.14, # A non-negative number in the [0, +inf) range, which represents the absolute magnitude of sentiment regardless of score (positive or negative).
    &quot;score&quot;: 3.14, # Sentiment score between -1.0 (negative sentiment) and 1.0 (positive sentiment).
  },
  &quot;languageCode&quot;: &quot;A String&quot;, # 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. See Document.language field for more details.
  &quot;languageSupported&quot;: True or False, # Whether the language is officially supported. The API may still return a response when the language is not supported, but it is on a best effort basis.
  &quot;sentences&quot;: [ # The sentiment for all the sentences in the document.
    { # Represents a sentence in the input document.
      &quot;sentiment&quot;: { # Represents the feeling associated with the entire text or entities in the text. # For calls to AnalyzeSentiment or if AnnotateTextRequest.Features.extract_document_sentiment is set to true, this field will contain the sentiment for the sentence.
        &quot;magnitude&quot;: 3.14, # A non-negative number in the [0, +inf) range, which represents the absolute magnitude of sentiment regardless of score (positive or negative).
        &quot;score&quot;: 3.14, # Sentiment score between -1.0 (negative sentiment) and 1.0 (positive sentiment).
      },
      &quot;text&quot;: { # Represents a text span in the input document. # The sentence text.
        &quot;beginOffset&quot;: 42, # The API calculates the beginning offset of the content in the original document according to the EncodingType specified in the API request.
        &quot;content&quot;: &quot;A String&quot;, # The content of the text span, which is a substring of the document.
      },
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="annotateText">annotateText(body=None, x__xgafv=None)</code>
  <pre>A convenience method that provides all features in one call.

Args:
  body: object, The request body.
    The object takes the form of:

{ # The request message for the text annotation API, which can perform multiple analysis types in one call.
  &quot;document&quot;: { # Represents the input to API methods. # Required. Input document.
    &quot;content&quot;: &quot;A String&quot;, # The content of the input in string format. Cloud audit logging exempt since it is based on user data.
    &quot;gcsContentUri&quot;: &quot;A String&quot;, # The Google Cloud Storage URI where the file content is located. This URI must be of the form: gs://bucket_name/object_name. For more details, see https://cloud.google.com/storage/docs/reference-uris. NOTE: Cloud Storage object versioning is not supported.
    &quot;languageCode&quot;: &quot;A String&quot;, # Optional. The language of the document (if not specified, the language is automatically detected). Both ISO and BCP-47 language codes are accepted. [Language Support](https://cloud.google.com/natural-language/docs/languages) lists currently supported languages for each API method. If the language (either specified by the caller or automatically detected) is not supported by the called API method, an `INVALID_ARGUMENT` error is returned.
    &quot;type&quot;: &quot;A String&quot;, # Required. If the type is not set or is `TYPE_UNSPECIFIED`, returns an `INVALID_ARGUMENT` error.
  },
  &quot;encodingType&quot;: &quot;A String&quot;, # The encoding type used by the API to calculate offsets.
  &quot;features&quot;: { # All available features. Setting each one to true will enable that specific analysis for the input. # Required. The enabled features.
    &quot;classifyText&quot;: True or False, # Optional. Classify the full document into categories.
    &quot;extractDocumentSentiment&quot;: True or False, # Optional. Extract document-level sentiment.
    &quot;extractEntities&quot;: True or False, # Optional. Extract entities.
    &quot;moderateText&quot;: True or False, # Optional. Moderate the document for harmful and sensitive categories.
  },
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The text annotations response message.
  &quot;categories&quot;: [ # Categories identified in the input document.
    { # Represents a category returned from the text classifier.
      &quot;confidence&quot;: 3.14, # The classifier&#x27;s confidence of the category. Number represents how certain the classifier is that this category represents the given text.
      &quot;name&quot;: &quot;A String&quot;, # The name of the category representing the document.
    },
  ],
  &quot;documentSentiment&quot;: { # Represents the feeling associated with the entire text or entities in the text. # The overall sentiment for the document. Populated if the user enables AnnotateTextRequest.Features.extract_document_sentiment.
    &quot;magnitude&quot;: 3.14, # A non-negative number in the [0, +inf) range, which represents the absolute magnitude of sentiment regardless of score (positive or negative).
    &quot;score&quot;: 3.14, # Sentiment score between -1.0 (negative sentiment) and 1.0 (positive sentiment).
  },
  &quot;entities&quot;: [ # Entities, along with their semantic information, in the input document. Populated if the user enables AnnotateTextRequest.Features.extract_entities or AnnotateTextRequest.Features.extract_entity_sentiment.
    { # Represents a phrase in the text that is a known entity, such as a person, an organization, or location. The API associates information, such as probability and mentions, with entities.
      &quot;mentions&quot;: [ # The mentions of this entity in the input document. The API currently supports proper noun mentions.
        { # Represents a mention for an entity in the text. Currently, proper noun mentions are supported.
          &quot;probability&quot;: 3.14, # Probability score associated with the entity. The score shows the probability of the entity mention being the entity type. The score is in (0, 1] range.
          &quot;sentiment&quot;: { # Represents the feeling associated with the entire text or entities in the text. # For calls to AnalyzeEntitySentiment or if AnnotateTextRequest.Features.extract_entity_sentiment is set to true, this field will contain the sentiment expressed for this mention of the entity in the provided document.
            &quot;magnitude&quot;: 3.14, # A non-negative number in the [0, +inf) range, which represents the absolute magnitude of sentiment regardless of score (positive or negative).
            &quot;score&quot;: 3.14, # Sentiment score between -1.0 (negative sentiment) and 1.0 (positive sentiment).
          },
          &quot;text&quot;: { # Represents a text span in the input document. # The mention text.
            &quot;beginOffset&quot;: 42, # The API calculates the beginning offset of the content in the original document according to the EncodingType specified in the API request.
            &quot;content&quot;: &quot;A String&quot;, # The content of the text span, which is a substring of the document.
          },
          &quot;type&quot;: &quot;A String&quot;, # The type of the entity mention.
        },
      ],
      &quot;metadata&quot;: { # Metadata associated with the entity. For the metadata associated with other entity types, see the Type table below.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;name&quot;: &quot;A String&quot;, # The representative name for the entity.
      &quot;sentiment&quot;: { # Represents the feeling associated with the entire text or entities in the text. # For calls to AnalyzeEntitySentiment or if AnnotateTextRequest.Features.extract_entity_sentiment is set to true, this field will contain the aggregate sentiment expressed for this entity in the provided document.
        &quot;magnitude&quot;: 3.14, # A non-negative number in the [0, +inf) range, which represents the absolute magnitude of sentiment regardless of score (positive or negative).
        &quot;score&quot;: 3.14, # Sentiment score between -1.0 (negative sentiment) and 1.0 (positive sentiment).
      },
      &quot;type&quot;: &quot;A String&quot;, # The entity type.
    },
  ],
  &quot;languageCode&quot;: &quot;A String&quot;, # 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. See Document.language field for more details.
  &quot;languageSupported&quot;: True or False, # Whether the language is officially supported by all requested features. The API may still return a response when the language is not supported, but it is on a best effort basis.
  &quot;moderationCategories&quot;: [ # Harmful and sensitive categories identified in the input document.
    { # Represents a category returned from the text classifier.
      &quot;confidence&quot;: 3.14, # The classifier&#x27;s confidence of the category. Number represents how certain the classifier is that this category represents the given text.
      &quot;name&quot;: &quot;A String&quot;, # The name of the category representing the document.
    },
  ],
  &quot;sentences&quot;: [ # Sentences in the input document. Populated if the user enables AnnotateTextRequest.Features.extract_document_sentiment.
    { # Represents a sentence in the input document.
      &quot;sentiment&quot;: { # Represents the feeling associated with the entire text or entities in the text. # For calls to AnalyzeSentiment or if AnnotateTextRequest.Features.extract_document_sentiment is set to true, this field will contain the sentiment for the sentence.
        &quot;magnitude&quot;: 3.14, # A non-negative number in the [0, +inf) range, which represents the absolute magnitude of sentiment regardless of score (positive or negative).
        &quot;score&quot;: 3.14, # Sentiment score between -1.0 (negative sentiment) and 1.0 (positive sentiment).
      },
      &quot;text&quot;: { # Represents a text span in the input document. # The sentence text.
        &quot;beginOffset&quot;: 42, # The API calculates the beginning offset of the content in the original document according to the EncodingType specified in the API request.
        &quot;content&quot;: &quot;A String&quot;, # The content of the text span, which is a substring of the document.
      },
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="classifyText">classifyText(body=None, x__xgafv=None)</code>
  <pre>Classifies a document into categories.

Args:
  body: object, The request body.
    The object takes the form of:

{ # The document classification request message.
  &quot;document&quot;: { # Represents the input to API methods. # Required. Input document.
    &quot;content&quot;: &quot;A String&quot;, # The content of the input in string format. Cloud audit logging exempt since it is based on user data.
    &quot;gcsContentUri&quot;: &quot;A String&quot;, # The Google Cloud Storage URI where the file content is located. This URI must be of the form: gs://bucket_name/object_name. For more details, see https://cloud.google.com/storage/docs/reference-uris. NOTE: Cloud Storage object versioning is not supported.
    &quot;languageCode&quot;: &quot;A String&quot;, # Optional. The language of the document (if not specified, the language is automatically detected). Both ISO and BCP-47 language codes are accepted. [Language Support](https://cloud.google.com/natural-language/docs/languages) lists currently supported languages for each API method. If the language (either specified by the caller or automatically detected) is not supported by the called API method, an `INVALID_ARGUMENT` error is returned.
    &quot;type&quot;: &quot;A String&quot;, # Required. If the type is not set or is `TYPE_UNSPECIFIED`, returns an `INVALID_ARGUMENT` error.
  },
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The document classification response message.
  &quot;categories&quot;: [ # Categories representing the input document.
    { # Represents a category returned from the text classifier.
      &quot;confidence&quot;: 3.14, # The classifier&#x27;s confidence of the category. Number represents how certain the classifier is that this category represents the given text.
      &quot;name&quot;: &quot;A String&quot;, # The name of the category representing the document.
    },
  ],
  &quot;languageCode&quot;: &quot;A String&quot;, # 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. See Document.language field for more details.
  &quot;languageSupported&quot;: True or False, # Whether the language is officially supported. The API may still return a response when the language is not supported, but it is on a best effort basis.
}</pre>
</div>

<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="moderateText">moderateText(body=None, x__xgafv=None)</code>
  <pre>Moderates a document for harmful and sensitive categories.

Args:
  body: object, The request body.
    The object takes the form of:

{ # The document moderation request message.
  &quot;document&quot;: { # Represents the input to API methods. # Required. Input document.
    &quot;content&quot;: &quot;A String&quot;, # The content of the input in string format. Cloud audit logging exempt since it is based on user data.
    &quot;gcsContentUri&quot;: &quot;A String&quot;, # The Google Cloud Storage URI where the file content is located. This URI must be of the form: gs://bucket_name/object_name. For more details, see https://cloud.google.com/storage/docs/reference-uris. NOTE: Cloud Storage object versioning is not supported.
    &quot;languageCode&quot;: &quot;A String&quot;, # Optional. The language of the document (if not specified, the language is automatically detected). Both ISO and BCP-47 language codes are accepted. [Language Support](https://cloud.google.com/natural-language/docs/languages) lists currently supported languages for each API method. If the language (either specified by the caller or automatically detected) is not supported by the called API method, an `INVALID_ARGUMENT` error is returned.
    &quot;type&quot;: &quot;A String&quot;, # Required. If the type is not set or is `TYPE_UNSPECIFIED`, returns an `INVALID_ARGUMENT` error.
  },
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The document moderation response message.
  &quot;languageCode&quot;: &quot;A String&quot;, # 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. See Document.language field for more details.
  &quot;languageSupported&quot;: True or False, # Whether the language is officially supported. The API may still return a response when the language is not supported, but it is on a best effort basis.
  &quot;moderationCategories&quot;: [ # Harmful and sensitive categories representing the input document.
    { # Represents a category returned from the text classifier.
      &quot;confidence&quot;: 3.14, # The classifier&#x27;s confidence of the category. Number represents how certain the classifier is that this category represents the given text.
      &quot;name&quot;: &quot;A String&quot;, # The name of the category representing the document.
    },
  ],
}</pre>
</div>

</body></html>