<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</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</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,</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.
    "encodingType": "A String", # The encoding type used by the API to calculate offsets.
    "document": { # ################################################################ # # Input document.
        #
        # Represents the input to API methods.
      "content": "A String", # The content of the input in string format.
          # Cloud audit logging exempt since it is based on user data.
      "type": "A String", # Required. If the type is not set or is `TYPE_UNSPECIFIED`,
          # returns an `INVALID_ARGUMENT` error.
      "language": "A String", # The language of the document (if not specified, the language is
          # automatically detected). Both ISO and BCP-47 language codes are
          # accepted.&lt;br&gt;
          # [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.
      "gcsContentUri": "A String", # 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.
    },
  }

  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.
    "entities": [ # 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.
        "mentions": [ # 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.
            "text": { # Represents an output piece of text. # The mention text.
              "content": "A String", # The content of the output text.
              "beginOffset": 42, # The API calculates the beginning offset of the content in the original
                  # document according to the EncodingType specified in the API request.
            },
            "type": "A String", # The type of the entity mention.
          },
        ],
        "salience": 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.
        "type": "A String", # The entity type.
        "name": "A String", # The representative name for the entity.
        "metadata": { # Metadata associated with the entity.
            #
            # Currently, Wikipedia URLs and Knowledge Graph MIDs are provided, if
            # available. The associated keys are "wikipedia_url" and "mid", respectively.
          "a_key": "A String",
        },
      },
    ],
    "language": "A String", # 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="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.
    "encodingType": "A String", # The encoding type used by the API to calculate sentence offsets for the
        # sentence sentiment.
    "document": { # ################################################################ # # Input document.
        #
        # Represents the input to API methods.
      "content": "A String", # The content of the input in string format.
          # Cloud audit logging exempt since it is based on user data.
      "type": "A String", # Required. If the type is not set or is `TYPE_UNSPECIFIED`,
          # returns an `INVALID_ARGUMENT` error.
      "language": "A String", # The language of the document (if not specified, the language is
          # automatically detected). Both ISO and BCP-47 language codes are
          # accepted.&lt;br&gt;
          # [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.
      "gcsContentUri": "A String", # 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.
    },
  }

  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.
    "documentSentiment": { # Represents the feeling associated with the entire text or entities in # The overall sentiment of the input document.
        # the text.
      "polarity": 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.
      "score": 3.14, # Sentiment score between -1.0 (negative sentiment) and 1.0
          # (positive sentiment).
      "magnitude": 3.14, # A non-negative number in the [0, +inf) range, which represents
          # the absolute magnitude of sentiment regardless of score (positive or
          # negative).
    },
    "language": "A String", # 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.
    "sentences": [ # The sentiment for all the sentences in the document.
      { # Represents a sentence in the input document.
        "text": { # Represents an output piece of text. # The sentence text.
          "content": "A String", # The content of the output text.
          "beginOffset": 42, # The API calculates the beginning offset of the content in the original
              # document according to the EncodingType specified in the API request.
        },
        "sentiment": { # Represents the feeling associated with the entire text or entities in # For calls to AnalyzeSentiment or if
            # AnnotateTextRequest.Features.extract_document_sentiment is set to
            # true, this field will contain the sentiment for the sentence.
            # the text.
          "polarity": 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.
          "score": 3.14, # Sentiment score between -1.0 (negative sentiment) and 1.0
              # (positive sentiment).
          "magnitude": 3.14, # A non-negative number in the [0, +inf) range, which represents
              # the absolute magnitude of sentiment regardless of score (positive or
              # negative).
        },
      },
    ],
  }</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.
    "encodingType": "A String", # The encoding type used by the API to calculate offsets.
    "document": { # ################################################################ # # Input document.
        #
        # Represents the input to API methods.
      "content": "A String", # The content of the input in string format.
          # Cloud audit logging exempt since it is based on user data.
      "type": "A String", # Required. If the type is not set or is `TYPE_UNSPECIFIED`,
          # returns an `INVALID_ARGUMENT` error.
      "language": "A String", # The language of the document (if not specified, the language is
          # automatically detected). Both ISO and BCP-47 language codes are
          # accepted.&lt;br&gt;
          # [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.
      "gcsContentUri": "A String", # 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.
    },
  }

  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.
    "tokens": [ # Tokens, along with their syntactic information, in the input document.
      { # Represents the smallest syntactic building block of the text.
        "text": { # Represents an output piece of text. # The token text.
          "content": "A String", # The content of the output text.
          "beginOffset": 42, # The API calculates the beginning offset of the content in the original
              # document according to the EncodingType specified in the API request.
        },
        "dependencyEdge": { # Represents dependency parse tree information for a token. # Dependency tree parse for this token.
          "headTokenIndex": 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.
          "label": "A String", # The parse label for the token.
        },
        "partOfSpeech": { # Represents part of speech information for a token. # Parts of speech tag for this token.
          "case": "A String", # The grammatical case.
          "reciprocity": "A String", # The grammatical reciprocity.
          "mood": "A String", # The grammatical mood.
          "form": "A String", # The grammatical form.
          "gender": "A String", # The grammatical gender.
          "number": "A String", # The grammatical number.
          "person": "A String", # The grammatical person.
          "tag": "A String", # The part of speech tag.
          "tense": "A String", # The grammatical tense.
          "aspect": "A String", # The grammatical aspect.
          "proper": "A String", # The grammatical properness.
          "voice": "A String", # The grammatical voice.
        },
        "lemma": "A String", # [Lemma](https://en.wikipedia.org/wiki/Lemma_%28morphology%29) of the token.
      },
    ],
    "language": "A String", # 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.
    "sentences": [ # Sentences in the input document.
      { # Represents a sentence in the input document.
        "text": { # Represents an output piece of text. # The sentence text.
          "content": "A String", # The content of the output text.
          "beginOffset": 42, # The API calculates the beginning offset of the content in the original
              # document according to the EncodingType specified in the API request.
        },
        "sentiment": { # Represents the feeling associated with the entire text or entities in # For calls to AnalyzeSentiment or if
            # AnnotateTextRequest.Features.extract_document_sentiment is set to
            # true, this field will contain the sentiment for the sentence.
            # the text.
          "polarity": 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.
          "score": 3.14, # Sentiment score between -1.0 (negative sentiment) and 1.0
              # (positive sentiment).
          "magnitude": 3.14, # A non-negative number in the [0, +inf) range, which represents
              # the absolute magnitude of sentiment regardless of score (positive or
              # negative).
        },
      },
    ],
  }</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.
    "encodingType": "A String", # The encoding type used by the API to calculate offsets.
    "document": { # ################################################################ # # Input document.
        #
        # Represents the input to API methods.
      "content": "A String", # The content of the input in string format.
          # Cloud audit logging exempt since it is based on user data.
      "type": "A String", # Required. If the type is not set or is `TYPE_UNSPECIFIED`,
          # returns an `INVALID_ARGUMENT` error.
      "language": "A String", # The language of the document (if not specified, the language is
          # automatically detected). Both ISO and BCP-47 language codes are
          # accepted.&lt;br&gt;
          # [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.
      "gcsContentUri": "A String", # 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.
    },
    "features": { # All available features for sentiment, syntax, and semantic analysis. # The enabled features.
        # Setting each one to true will enable that specific analysis for the input.
      "extractDocumentSentiment": True or False, # Extract document-level sentiment.
      "extractEntities": True or False, # Extract entities.
      "extractSyntax": 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.
    "tokens": [ # 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.
        "text": { # Represents an output piece of text. # The token text.
          "content": "A String", # The content of the output text.
          "beginOffset": 42, # The API calculates the beginning offset of the content in the original
              # document according to the EncodingType specified in the API request.
        },
        "dependencyEdge": { # Represents dependency parse tree information for a token. # Dependency tree parse for this token.
          "headTokenIndex": 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.
          "label": "A String", # The parse label for the token.
        },
        "partOfSpeech": { # Represents part of speech information for a token. # Parts of speech tag for this token.
          "case": "A String", # The grammatical case.
          "reciprocity": "A String", # The grammatical reciprocity.
          "mood": "A String", # The grammatical mood.
          "form": "A String", # The grammatical form.
          "gender": "A String", # The grammatical gender.
          "number": "A String", # The grammatical number.
          "person": "A String", # The grammatical person.
          "tag": "A String", # The part of speech tag.
          "tense": "A String", # The grammatical tense.
          "aspect": "A String", # The grammatical aspect.
          "proper": "A String", # The grammatical properness.
          "voice": "A String", # The grammatical voice.
        },
        "lemma": "A String", # [Lemma](https://en.wikipedia.org/wiki/Lemma_%28morphology%29) of the token.
      },
    ],
    "entities": [ # 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.
        "mentions": [ # 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.
            "text": { # Represents an output piece of text. # The mention text.
              "content": "A String", # The content of the output text.
              "beginOffset": 42, # The API calculates the beginning offset of the content in the original
                  # document according to the EncodingType specified in the API request.
            },
            "type": "A String", # The type of the entity mention.
          },
        ],
        "salience": 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.
        "type": "A String", # The entity type.
        "name": "A String", # The representative name for the entity.
        "metadata": { # Metadata associated with the entity.
            #
            # Currently, Wikipedia URLs and Knowledge Graph MIDs are provided, if
            # available. The associated keys are "wikipedia_url" and "mid", respectively.
          "a_key": "A String",
        },
      },
    ],
    "documentSentiment": { # Represents the feeling associated with the entire text or entities in # The overall sentiment for the document. Populated if the user enables
        # AnnotateTextRequest.Features.extract_document_sentiment.
        # the text.
      "polarity": 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.
      "score": 3.14, # Sentiment score between -1.0 (negative sentiment) and 1.0
          # (positive sentiment).
      "magnitude": 3.14, # A non-negative number in the [0, +inf) range, which represents
          # the absolute magnitude of sentiment regardless of score (positive or
          # negative).
    },
    "language": "A String", # 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.
    "sentences": [ # Sentences in the input document. Populated if the user enables
        # AnnotateTextRequest.Features.extract_syntax.
      { # Represents a sentence in the input document.
        "text": { # Represents an output piece of text. # The sentence text.
          "content": "A String", # The content of the output text.
          "beginOffset": 42, # The API calculates the beginning offset of the content in the original
              # document according to the EncodingType specified in the API request.
        },
        "sentiment": { # Represents the feeling associated with the entire text or entities in # For calls to AnalyzeSentiment or if
            # AnnotateTextRequest.Features.extract_document_sentiment is set to
            # true, this field will contain the sentiment for the sentence.
            # the text.
          "polarity": 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.
          "score": 3.14, # Sentiment score between -1.0 (negative sentiment) and 1.0
              # (positive sentiment).
          "magnitude": 3.14, # A non-negative number in the [0, +inf) range, which represents
              # the absolute magnitude of sentiment regardless of score (positive or
              # negative).
        },
      },
    ],
  }</pre>
</div>

</body></html>