<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_v1beta1.html">Cloud Natural Language API</a> . <a href="language_v1beta1.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, salience, 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="#analyzeSyntax">analyzeSyntax(body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Analyzes the syntax of the text and provides sentence boundaries and tokenization along with part of speech tags, dependency trees, and other properties.</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 the features that analyzeSentiment, analyzeEntities, and analyzeSyntax provide in one call.</p>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</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, salience, 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;encodingType&quot;: &quot;A String&quot;, # The encoding type used by the API to calculate offsets.
    &quot;document&quot;: { # ################################################################ # Represents the input to API methods. # Input document.
      &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;language&quot;: &quot;A String&quot;, # 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;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;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 entity analysis response message.
    &quot;language&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;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 salience and mentions, with entities.
        &quot;type&quot;: &quot;A String&quot;, # The entity type.
        &quot;metadata&quot;: { # Metadata associated with the entity. Currently, Wikipedia URLs and Knowledge Graph MIDs are provided, if available. The associated keys are &quot;wikipedia_url&quot; and &quot;mid&quot;, respectively.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;name&quot;: &quot;A String&quot;, # The representative name for the entity.
        &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;type&quot;: &quot;A String&quot;, # The type of the entity mention.
            &quot;text&quot;: { # Represents an output piece of text. # The mention text.
              &quot;content&quot;: &quot;A String&quot;, # The content of the output 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;salience&quot;: 3.14, # The salience score associated with the entity in the [0, 1.0] range. The salience score for an entity provides information about the importance or centrality of that entity to the entire document text. Scores closer to 0 are less salient, while scores closer to 1.0 are highly salient.
      },
    ],
  }</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. # Input document.
      &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;language&quot;: &quot;A String&quot;, # 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;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;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 for the sentence sentiment.
  }

  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;language&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;sentences&quot;: [ # The sentiment for all the sentences in the document.
      { # Represents a sentence in the input document.
        &quot;text&quot;: { # Represents an output piece of text. # The sentence text.
          &quot;content&quot;: &quot;A String&quot;, # The content of the output 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;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;polarity&quot;: 3.14, # DEPRECATED FIELD - This field is being deprecated in favor of score. Please refer to our documentation at https://cloud.google.com/natural-language/docs for more information.
          &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;documentSentiment&quot;: { # Represents the feeling associated with the entire text or entities in the text. # The overall sentiment of the input document.
      &quot;polarity&quot;: 3.14, # DEPRECATED FIELD - This field is being deprecated in favor of score. Please refer to our documentation at https://cloud.google.com/natural-language/docs for more information.
      &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).
    },
  }</pre>
</div>

<div class="method">
    <code class="details" id="analyzeSyntax">analyzeSyntax(body=None, x__xgafv=None)</code>
  <pre>Analyzes the syntax of the text and provides sentence boundaries and tokenization along with part of speech tags, dependency trees, and other properties.

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

{ # The syntax analysis request message.
    &quot;encodingType&quot;: &quot;A String&quot;, # The encoding type used by the API to calculate offsets.
    &quot;document&quot;: { # ################################################################ # Represents the input to API methods. # Input document.
      &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;language&quot;: &quot;A String&quot;, # 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;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;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 syntax analysis response message.
    &quot;tokens&quot;: [ # Tokens, along with their syntactic information, in the input document.
      { # Represents the smallest syntactic building block of the text.
        &quot;dependencyEdge&quot;: { # Represents dependency parse tree information for a token. # Dependency tree parse for this token.
          &quot;label&quot;: &quot;A String&quot;, # The parse label for the token.
          &quot;headTokenIndex&quot;: 42, # Represents the head of this token in the dependency tree. This is the index of the token which has an arc going to this token. The index is the position of the token in the array of tokens returned by the API method. If this token is a root token, then the `head_token_index` is its own index.
        },
        &quot;lemma&quot;: &quot;A String&quot;, # [Lemma](https://en.wikipedia.org/wiki/Lemma_%28morphology%29) of the token.
        &quot;text&quot;: { # Represents an output piece of text. # The token text.
          &quot;content&quot;: &quot;A String&quot;, # The content of the output 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;partOfSpeech&quot;: { # Represents part of speech information for a token. # Parts of speech tag for this token.
          &quot;proper&quot;: &quot;A String&quot;, # The grammatical properness.
          &quot;form&quot;: &quot;A String&quot;, # The grammatical form.
          &quot;mood&quot;: &quot;A String&quot;, # The grammatical mood.
          &quot;aspect&quot;: &quot;A String&quot;, # The grammatical aspect.
          &quot;reciprocity&quot;: &quot;A String&quot;, # The grammatical reciprocity.
          &quot;voice&quot;: &quot;A String&quot;, # The grammatical voice.
          &quot;tag&quot;: &quot;A String&quot;, # The part of speech tag.
          &quot;number&quot;: &quot;A String&quot;, # The grammatical number.
          &quot;gender&quot;: &quot;A String&quot;, # The grammatical gender.
          &quot;tense&quot;: &quot;A String&quot;, # The grammatical tense.
          &quot;person&quot;: &quot;A String&quot;, # The grammatical person.
          &quot;case&quot;: &quot;A String&quot;, # The grammatical case.
        },
      },
    ],
    &quot;language&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;sentences&quot;: [ # Sentences in the input document.
      { # Represents a sentence in the input document.
        &quot;text&quot;: { # Represents an output piece of text. # The sentence text.
          &quot;content&quot;: &quot;A String&quot;, # The content of the output 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;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;polarity&quot;: 3.14, # DEPRECATED FIELD - This field is being deprecated in favor of score. Please refer to our documentation at https://cloud.google.com/natural-language/docs for more information.
          &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).
        },
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="annotateText">annotateText(body=None, x__xgafv=None)</code>
  <pre>A convenience method that provides all the features that analyzeSentiment, analyzeEntities, and analyzeSyntax provide 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 (sentiment, entities, and syntax) in one call.
    &quot;document&quot;: { # ################################################################ # Represents the input to API methods. # Input document.
      &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;language&quot;: &quot;A String&quot;, # 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;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;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 for sentiment, syntax, and semantic analysis. Setting each one to true will enable that specific analysis for the input. # The enabled features.
      &quot;extractDocumentSentiment&quot;: True or False, # Extract document-level sentiment.
      &quot;extractEntities&quot;: True or False, # Extract entities.
      &quot;extractSyntax&quot;: True or False, # Extract syntax information.
    },
  }

  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;tokens&quot;: [ # Tokens, along with their syntactic information, in the input document. Populated if the user enables AnnotateTextRequest.Features.extract_syntax.
      { # Represents the smallest syntactic building block of the text.
        &quot;dependencyEdge&quot;: { # Represents dependency parse tree information for a token. # Dependency tree parse for this token.
          &quot;label&quot;: &quot;A String&quot;, # The parse label for the token.
          &quot;headTokenIndex&quot;: 42, # Represents the head of this token in the dependency tree. This is the index of the token which has an arc going to this token. The index is the position of the token in the array of tokens returned by the API method. If this token is a root token, then the `head_token_index` is its own index.
        },
        &quot;lemma&quot;: &quot;A String&quot;, # [Lemma](https://en.wikipedia.org/wiki/Lemma_%28morphology%29) of the token.
        &quot;text&quot;: { # Represents an output piece of text. # The token text.
          &quot;content&quot;: &quot;A String&quot;, # The content of the output 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;partOfSpeech&quot;: { # Represents part of speech information for a token. # Parts of speech tag for this token.
          &quot;proper&quot;: &quot;A String&quot;, # The grammatical properness.
          &quot;form&quot;: &quot;A String&quot;, # The grammatical form.
          &quot;mood&quot;: &quot;A String&quot;, # The grammatical mood.
          &quot;aspect&quot;: &quot;A String&quot;, # The grammatical aspect.
          &quot;reciprocity&quot;: &quot;A String&quot;, # The grammatical reciprocity.
          &quot;voice&quot;: &quot;A String&quot;, # The grammatical voice.
          &quot;tag&quot;: &quot;A String&quot;, # The part of speech tag.
          &quot;number&quot;: &quot;A String&quot;, # The grammatical number.
          &quot;gender&quot;: &quot;A String&quot;, # The grammatical gender.
          &quot;tense&quot;: &quot;A String&quot;, # The grammatical tense.
          &quot;person&quot;: &quot;A String&quot;, # The grammatical person.
          &quot;case&quot;: &quot;A String&quot;, # The grammatical case.
        },
      },
    ],
    &quot;entities&quot;: [ # Entities, along with their semantic information, in the input document. Populated if the user enables AnnotateTextRequest.Features.extract_entities.
      { # 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 salience and mentions, with entities.
        &quot;type&quot;: &quot;A String&quot;, # The entity type.
        &quot;metadata&quot;: { # Metadata associated with the entity. Currently, Wikipedia URLs and Knowledge Graph MIDs are provided, if available. The associated keys are &quot;wikipedia_url&quot; and &quot;mid&quot;, respectively.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;name&quot;: &quot;A String&quot;, # The representative name for the entity.
        &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;type&quot;: &quot;A String&quot;, # The type of the entity mention.
            &quot;text&quot;: { # Represents an output piece of text. # The mention text.
              &quot;content&quot;: &quot;A String&quot;, # The content of the output 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;salience&quot;: 3.14, # The salience score associated with the entity in the [0, 1.0] range. The salience score for an entity provides information about the importance or centrality of that entity to the entire document text. Scores closer to 0 are less salient, while scores closer to 1.0 are highly salient.
      },
    ],
    &quot;sentences&quot;: [ # Sentences in the input document. Populated if the user enables AnnotateTextRequest.Features.extract_syntax.
      { # Represents a sentence in the input document.
        &quot;text&quot;: { # Represents an output piece of text. # The sentence text.
          &quot;content&quot;: &quot;A String&quot;, # The content of the output 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;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;polarity&quot;: 3.14, # DEPRECATED FIELD - This field is being deprecated in favor of score. Please refer to our documentation at https://cloud.google.com/natural-language/docs for more information.
          &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;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;polarity&quot;: 3.14, # DEPRECATED FIELD - This field is being deprecated in favor of score. Please refer to our documentation at https://cloud.google.com/natural-language/docs for more information.
      &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;language&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.
  }</pre>
</div>

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

</body></html>