Ce document est un guide présentant les principes de base de l'utilisation de l'API Cloud Natural Language. Dans ce guide conceptuel, vous découvrirez les types de requêtes que vous pouvez envoyer à l'API Natural Language. Vous apprendrez également à construire de telles requêtes et à gérer leurs réponses. Nous recommandons à tous les utilisateurs de l'API Natural Language de lire à la fois ce guide et l'un des tutoriels associés avant de se plonger dans l'API elle-même.
Fonctionnalités de l'API Natural Language
L'API Natural Language a recours à plusieurs méthodes d'analyse et d'annotation des textes. Chaque niveau d'analyse livre des informations précieuses permettant de comprendre le langage. Ces méthodes sont décrites ci-dessous :
L'analyse des sentiments examine le texte donné et identifie l'opinion émotionnelle dominante qui s'en dégage, en particulier pour déterminer si l'attitude de l'auteur est positive, négative ou neutre. L'analyse des sentiments est effectuée avec la méthode
analyzeSentiment
.L'analyse des entités inspecte le texte donné pour y rechercher des entités connues (des noms propres, c'est-à-dire des personnages publics ou des points de repère, par exemple, et des noms communs tels que restaurant, stade, etc.), puis renvoie des informations sur ces entités. L'analyse d'entités est effectuée avec la méthode
analyzeEntities
.L'analyse des sentiments d'entités examine le texte donné pour y rechercher des entités connues (noms propres et noms communs), renvoie des informations sur ces entités, et identifie l'opinion émotionnelle dominante dans le texte, en particulier pour déterminer si l'attitude de l'auteur est positive, négative ou neutre. L'analyse d'entités est effectuée avec la méthode
analyzeEntitySentiment
.L'analyse syntaxique extrait les informations linguistiques en divisant le texte donné en une série de phrases et de jetons (qui correspondent généralement aux mots) et en procédant à une analyse approfondie de ces jetons. L'analyse syntaxique est effectuée avec la méthode
analyzeSyntax
.La classification de contenus analyse le contenu d'un texte et renvoie une catégorie de contenu lui correspondant. La classification de contenus est effectuée avec la méthode
classifyText
.
Chaque appel d'API détecte et renvoie également la langue, si celle-ci n'a pas été spécifiée par l'appelant dans la requête initiale.
De plus, si vous souhaitez effectuer plusieurs opérations liées au langage naturel sur un texte donné à l'aide d'un seul appel d'API, la requête annotateText
peut également servir à effectuer une analyse des sentiments et une analyse des entités.
Faites l'essai
Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de Natural Language en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
Profiter d'un essai gratuit de Natural LanguageRequêtes Natural Language de base
L'API Natural Language est une API REST, et elle comprend des requêtes et réponses JSON. Une requête JSON simple d'analyse des entités Natural Language est donnée en exemple ci-dessous :
{ "document":{ "type":"PLAIN_TEXT", "language_code": "EN", "content":"'Lawrence of Arabia' is a highly rated film biography about British Lieutenant T. E. Lawrence. Peter O'Toole plays Lawrence in the film." }, "encodingType":"UTF8" }
Expliquons chacun de ces champs :
document
contient les données de cette requête et comprend les sous-champs suivants :type
: type de document (HTML
ouPLAIN_TEXT
).language
: (facultatif) la langue du texte inclus dans la requête. Si ce champ n'est pas renseigné, la langue sera automatiquement détectée. Pour plus d'informations sur les langues acceptées par l'API Natural Language, consultez la page Langues acceptées. Les langues non acceptées renverront une erreur dans la réponse JSON.content
ougcsContentUri
: le texte à évaluer. Si vous transmettezcontent
, ce texte est inclus directement dans la requête JSON (comme indiqué plus haut). Si vous transmettezgcsContentUri
, ce champ doit inclure un URI pointant vers des contenus textuels situés dans Google Cloud Storage.
- encodingType : (obligatoire) le schéma de codage dans lequel les décalages de caractères renvoyés dans le texte doivent être calculés, qui doit correspondre au codage du texte transmis.
Si ce paramètre n'est pas défini, la requête ne générera pas d'erreur, mais tous les décalages de ce type seront définis sur
-1
.
Spécifier les contenus textuels
Lorsque vous transmettez une requête d'API Natural Language, vous spécifiez le texte à traiter de l'une des deux manières suivantes :
- En transmettant le texte directement dans un champ
content
. - En transmettant un URI Google Cloud Storage dans un champ
gcsContentUri
.
Dans les deux cas, vous devez vous assurer de ne pas dépasser les limites de contenus. Notez que ces limites de contenus s'appliquent par octet et non par caractère ; la longueur des caractères dépend donc de l'encodage de votre texte.
La requête ci-dessous fait référence à un fichier Google Cloud Storage contenant le discours de Gettysburg :
{ "document":{ "type":"PLAIN_TEXT", "language": "EN", "gcsContentUri":"gs://cloud-samples-tests/natural-language/gettysburg.txt" }, }
Analyse des sentiments
L'analyse des sentiments tente de déterminer l'attitude globale (positive ou négative) exprimée dans le texte. Le sentiment est représenté par des valeurs numériques : score
et magnitude
.
Champs d'une réponse d'analyse des sentiments
Un exemple de réponse analyzeSentiment
au discours de Gettysburg est présenté ci-dessous :
{ "documentSentiment": { "score": 0.2, "magnitude": 3.6 }, "language_code": "en", "sentences": [ { "text": { "content": "Four score and seven years ago our fathers brought forth on this continent a new nation, conceived in liberty and dedicated to the proposition that all men are created equal.", "beginOffset": 0 }, "sentiment": { "magnitude": 0.8, "score": 0.8 } }, ... }
Les valeurs de ces champs sont décrites ci-dessous :
documentSentiment
contient le sentiment général du document et comprend les sous-champs suivants :- Le
score
du sentiment est compris entre-1.0
(négatif) et1.0
(positif). Il correspond à la tendance émotionnelle générale du texte. - La
magnitude
indique l'intensité générale de l'émotion (positive ou négative) exprimée dans le texte en question. Elle est comprise entre0.0
et+inf
. Contrairement auscore
, lamagnitude
n'est pas normalisée pourdocumentSentiment
; chaque expression d'une émotion dans le texte (positive ou négative) contribue à lamagnitude
du texte (de sorte que les blocs de texte plus longs peuvent avoir des magnitudes supérieures).
- Le
- Le champ
language_code
contient la langue du document, laquelle est soit transmise dans la requête initiale, soit détectée automatiquement en cas de champ non renseigné. language_supported
contient une valeur booléenne pour identifier si la langue est officiellement prise en charge.- Le champ
sentences
contient une liste des phrases extraites du document original. Il inclut l'élément suivant :- Le champ
sentiment
, qui contient les valeurs de sentiment au niveau de chaque phrase, lesquelles contiennent des valeursscore
comprises entre-1.0
(négatif) et1.0
(positif), ainsi que des valeursmagnitude
comprises entre0.0
et1.0
. Notez quemagnitude
poursentences
est normalisé.
- Le champ
Une valeur de sentiment 0.2
pour le discours de Gettysburg indique une légère positivité au niveau de l'émotion, tandis que la valeur de magnitude 3.6
indique un document relativement émotionnel étant donné sa petite taille (environ un paragraphe). Notez que la première phrase du discours de Gettysburg présente un score
positif très élevé de 0.8
.
Interpréter les valeurs d'analyse des sentiments
Le score du sentiment d'un document indique l'émotion globale de ce document. La magnitude du sentiment d'un document indique la quantité de contenu émotionnel présente dans le document. Cette valeur est souvent proportionnelle à la longueur du document.
Il est important de noter que l'API Natural Language indique les différences entre les émotions positives et négatives dans un document, mais qu'elle n'identifie pas d'émotions positives et négatives spécifiques. Par exemple, "en colère" et "triste" sont toutes deux considérées comme des émotions négatives. Toutefois, lorsque l'API Natural Language analyse un texte considéré comme étant "en colère" ou un texte considéré comme étant "triste", la réponse indique seulement que le sentiment dans le texte est négatif, et non pas qu'il s'agit de tristesse ou de colère.
Un score neutre (environ 0.0
) peut indiquer qu'il s'agit d'un document à faible émotion, ou peut indiquer des émotions mélangées, avec des valeurs positives et négatives élevées qui s'annulent entre elles. De manière générale, vous pouvez utiliser les valeurs de magnitude
pour lever les ambiguïtés. En effet, les documents qui sont réellement neutres ont une valeur de magnitude
faible, tandis que les documents mixtes ont des valeurs de magnitude plus élevées.
Lorsque vous comparez des documents entre eux (particulièrement des documents de longueurs différentes), assurez-vous de calibrer vos scores avec les valeurs de magnitude
, car elles vous aideront à évaluer la quantité pertinente de contenu émotionnel.
Le graphique ci-dessous illustre quelques exemples de valeurs et la manière dont elles doivent être interprétées :
Sentiment | Exemples de valeurs |
---|---|
Clairement positif* | "score" : 0.8, "magnitude" : 3.0 |
Clairement négatif* | "score" : -0.6, "magnitude" : 4.0 |
Neutre | "score" : 0.1, "magnitude" : 0.0 |
Mixte | "score" : 0.0, "magnitude" : 4.0 |
* Les sentiments "clairement positif" et "clairement négatif" varient selon les cas d'utilisation et les clients. Vous pourriez parvenir à des résultats différents dans le contexte spécifique que vous utiliserez. Nous vous recommandons de définir un seuil qui convient à vos besoins, puis de l'ajuster après avoir testé et vérifié les résultats. Par exemple, vous pouvez définir tout résultat supérieur à 0.25 comme étant clairement positif, puis modifier le seuil de score à 0.15 après avoir examiné vos données et vos résultats, et en avoir conclu que les résultats compris entre 0.15 et 0.25 doivent également être considérés comme des sentiments positifs.
Analyse des entités
L'analyse des entités fournit des informations sur les entités présentes dans le texte, lesquelles font généralement référence à des "choses" nommées, telles que des personnages célèbres, des points de repère, des objets courants, etc.
Les entités appartiennent généralement à l'une de ces deux catégories : aux noms propres, qui correspondent à des entités uniques (personnes spécifiques, lieux spécifiques, etc.) ou aux noms communs (également appelés "nominaux" dans le traitement du langage naturel). Partez généralement du principe que si quelque chose est un nom, il est considéré comme une "entité". Les entités sont renvoyées sous forme de décalages indexés dans le texte d'origine.
Une requête d'analyse des entités doit transmettre un argument encodingType
, afin que les décalages renvoyés puissent être interprétés correctement.
Champs d'une réponse d'analyse des entités
L'analyse des entités renvoie un ensemble d'entités détectées ainsi que les paramètres qui leur sont associés, tels que le type d'entité, la pertinence de l'entité par rapport au texte global et les emplacements dans le texte qui font référence à la même entité.
Une réponse analyzeEntities
à la requête d'entité est présentée ci-dessous :
{ "entities": [ { "name": "British", "type": "LOCATION", "metadata": {}, "mentions": [ { "text": { "content": "British", "beginOffset": 58 }, "type": "PROPER", "probability": 0.941 } ] }, { "name": "Lawrence", "type": "PERSON", "metadata": {}, "mentions": [ { "text": { "content": "Lawrence", "beginOffset": 113 }, "type": "PROPER", "probability": 0.914 } ] }, { "name": "Lawrence of Arabia", "type": "WORK_OF_ART", "metadata": {}, "mentions": [ { "text": { "content": "Lawrence of Arabia", "beginOffset": 0 }, "type": "PROPER", "probability": 0.761 } ] }, { "name": "Lieutenant", "type": "PERSON", "metadata": {}, "mentions": [ { "text": { "content": "Lieutenant", "beginOffset": 66 }, "type": "COMMON", "probability": 0.927 } ] }, { "name": "Peter O Toole", "type": "PERSON", "metadata": {}, "mentions": [ { "text": { "content": "Peter O Toole", "beginOffset": 93 }, "type": "PROPER", "probability": 0.907 } ] }, { "name": "T. E. Lawrence", "type": "PERSON", "metadata": {}, "mentions": [ { "text": { "content": "T. E. Lawrence", "beginOffset": 77 }, "type": "PROPER", "probability": 0.853 } ] }, { "name": "film", "type": "WORK_OF_ART", "metadata": {}, "mentions": [ { "text": { "content": "film", "beginOffset": 129 }, "type": "COMMON", "probability": 0.805 } ] }, { "name": "film biography", "type": "WORK_OF_ART", "metadata": {}, "mentions": [ { "text": { "content": "film biography", "beginOffset": 37 }, "type": "COMMON", "probability": 0.876 } ] } ], "languageCode": "en", "languageSupported": true }
Notez que l'API Natural Language renvoie des entités pour "Lawrence d'Arabie" (le film) et "T.E. Lawrence" (l'homme). L'analyse des entités est utile pour lever l'ambiguïté sur les entités similaires, telles que "Lawrence" dans ce cas particulier.
Les champs utilisés pour stocker les paramètres de l'entité sont énumérés ci-dessous :
type
indique le type de l'entité (par exemple, si l'entité est une personne, un lieu, un bien de consommation, etc.). Ces informations aident à distinguer et/ou à lever les ambiguïtés sur certaines entités, et peuvent être utilisées pour créer des modèles ou extraire des informations. Par exemple, une valeurtype
peut aider à distinguer des entités portant un nom similaire, telles que "Lawrence d'Arabie", étiquetée en tant queWORK_OF_ART
(film) et "T.E. Lawrence", étiquetée en tant quePERSON
. (Voir les types d'entités pour plus d'informations.)metadata
contient des informations sources sur le référentiel de connaissances de l'entité. D'autres référentiels pourront éventuellement être exposés à l'avenir.mentions
indique les positions de décalage dans le texte où une entité est mentionnée. Cette information peut être utile si vous voulez trouver toutes les mentions de la personne "Lawrence" dans le texte, mais pas les mentions évoquant le titre du film. Vous pouvez également utiliser les mentions pour recueillir une liste des alias d'entités, tels que "Lawrence", qui font référence à la même entité "T.E Lawrence". Une mention d'entité peut être de deux types :PROPER
ouCOMMON
. Une entité sous forme de nom propre pour "Lawrence d'Arabie", par exemple, pourrait être directement mentionnée en tant que titre du film, ou en tant que nom commun ("film biographique" sur T.E. Lawrence).
Analyse des sentiments d'entités
L'analyse des sentiments d'entités combine l'analyse des entités et l'analyse des sentiments pour tenter de déterminer le sentiment (positif ou négatif) exprimé à propos des entités dans le texte. Le sentiment de l'entité est représenté par des valeurs numériques de score et de magnitude, et il est déterminé pour chaque mention d'une entité. Ces scores sont ensuite agrégés pour former un score et une magnitude de sentiment globaux pour une entité.
Requêtes d'analyse des sentiments d'entités
Les requêtes d'analyse des sentiments d'entités sont envoyées à l'API Natural Language via la méthode analyzeEntitySentiment
sous la forme suivante :
{ "document":{ "type":"PLAIN_TEXT", "content":"I love R&B music. Marvin Gaye is the best. 'What's Going On' is one of my favorite songs. It was so sad when Marvin Gaye died." }, "encodingType":"UTF8" }
Dans votre requête, vous pouvez spécifier un paramètre language
facultatif qui identifie le code de langue du texte dans le paramètre content
.
Si vous ne spécifiez pas de paramètre language
, l'API Natural Language détecte automatiquement la langue du contenu de la requête.
Pour plus d'informations sur les langues acceptées par l'API Natural Language, consultez la page Langues acceptées.
Réponses d'analyse des sentiments d'entités
L'API Natural Language traite le texte donné pour en extraire les entités et en déterminer le sentiment. Une requête d'analyse des sentiments d'entités renvoie une réponse contenant les entités (entities
) trouvées dans le contenu du document, une entrée mentions
pour chaque mention de l'entité, et les valeurs numériques de score
et de magnitude
pour chaque mention, comme décrit à la section Interpréter les valeurs d'analyse des sentiments. Les valeurs globales de score
et de magnitude
d'une entité sont un agrégat des valeurs de score
et de magnitude
spécifiques à chaque mention de l'entité. Les valeurs de score
et de magnitude
d'une entité peuvent être égales à 0
. Si le texte contient peu de sentiment, cela donne une magnitude
de 0. Si le sentiment est mixte, cela donne un score
de 0.
{ "entities": [ { "name": "R&B music", "type": "WORK_OF_ART", "metadata": {}, "salience": 0.5306305, "mentions": [ { "text": { "content": "R&B music", "beginOffset": 7 }, "type": "COMMON", "sentiment": { "magnitude": 0.9, "score": 0.9 } } ], "sentiment": { "magnitude": 0.9, "score": 0.9 } }, { "name": "Marvin Gaye", "type": "PERSON", "metadata": { "mid": "/m/012z8_", "wikipedia_url": "http://en.wikipedia.org/wiki/Marvin_Gaye" }, "salience": 0.21584158, "mentions": [ { "text": { "content": "Marvin Gaye", "beginOffset": 18 }, "type": "PROPER", "sentiment": { "magnitude": 0.4, "score": 0.4 } }, { "text": { "content": "Marvin Gaye", "beginOffset": 138 }, "type": "PROPER", "sentiment": { "magnitude": 0.2, "score": -0.2 } } ], "sentiment": { "magnitude": 0.6, "score": 0.1 } }, ... ], "language": "en" }
Vous trouverez un exemple à la page Analyser les sentiments d'entités.
Analyse syntaxique
L'API Natural Language fournit de nombreux outils puissants permettant d'analyser des textes grâce à l'analyse syntaxique. Pour effectuer une analyse syntaxique, utilisez la méthode analyzeSyntax
.
L'analyse syntaxique comprend les opérations suivantes :
- L'extraction de phrases divise le flux de texte en une série de phrases.
- La tokenisation divise le flux de texte en une série de jetons, chaque jeton correspondant généralement à un seul mot.
- L'API Natural Language procède ensuite au traitement des jetons et y ajoute des informations syntaxiques, en se basant sur leur position au sein des phrases.
Une documentation complète sur l'ensemble des jetons syntaxiques peut être consultée dans le guide Arbres de morphologie et de dépendance.
Requêtes d'analyse syntaxique
Les requêtes d'analyse syntaxique sont envoyées à l'API Natural Language via la méthode analyzeSyntax
sous la forme suivante :
{ "document":{ "type":"PLAIN_TEXT", "content":"Ask not what your country can do for you, ask what you can do for your country." }, "encodingType":"UTF8" }
Réponses d'analyse syntaxique
L'API Natural Language traite le texte donné pour en extraire les phrases et les jetons. Une requête d'analyse syntaxique renvoie une réponse contenant ces phrases (sentences
) et jetons (tokens
) sous la forme suivante :
{ "sentences": [ ... Array of sentences with sentence information ], "tokens": [ ... Array of tokens with token information ] }
Extraction de phrase
Lors de l'analyse syntaxique, l'API Natural Language renvoie un tableau de phrases extraites du texte fourni, chaque phrase contenant les champs suivants au sein d'un élément parent text
:
beginOffset
, indiquant le décalage de caractère (basé sur zéro) dans le texte donné, à partir duquel commence la phrase. Ce décalage est calculé en utilisant la valeur de champencodingType
qui a été transmise.content
, contenant le texte intégral de la phrase extraite.
Par exemple, l'élément sentences
suivant est reçu pour une requête d'analyse syntaxique du discours de Gettysburg :
{ "sentences": [ { "text": { "content": "Four score and seven years ago our fathers brought forth on this continent a new nation, conceived in liberty and dedicated to the proposition that all men are created equal.", "beginOffset": 0 } }, { "text": { "content": "Now we are engaged in a great civil war, testing whether that nation or any nation so conceived and so dedicated can long endure.", "beginOffset": 175 } }, ... ... { "text": { "content": "It is rather for us to be here dedicated to the great task remaining before us--that from these honored dead we take increased devotion to that cause for which they gave the last full measure of devotion--that we here highly resolve that these dead shall not have died in vain, that this nation under God shall have a new birth of freedom, and that government of the people, by the people, for the people shall not perish from the earth.", "beginOffset": 1002 } } ], "language": "en" }
Une requête d'analyse syntaxique adressée à l'API Natural Language inclut également un ensemble de jetons. Vous pouvez utiliser les informations associées à chaque jeton pour effectuer une analyse plus poussée des phrases renvoyées. Pour plus d’informations sur ces jetons, consultez le guide Arbres de morphologie et de dépendance.
Tokenisation
La méthode analyzeSyntax
transforme également le texte en une série de jetons qui correspondent aux différents éléments textuels (c'est-à-dire les mots) du contenu transmis. Le processus par lequel l'API Natural Language crée cet ensemble de jetons est appelé la tokenisation.
Une fois ces jetons extraits, l'API Natural Language les traite pour déterminer les classes de mots (y compris les informations morphologiques) et les lemmes qui leur sont associés. Les jetons sont par ailleurs évalués et placés dans un arbre de dépendance, ce qui vous permet de déterminer la signification syntaxique des jetons et d'illustrer la relation entre les jetons et les phrases dont ils sont issus. Les informations syntaxiques et morphologiques associées à ces jetons sont utiles pour comprendre la structure syntaxique des phrases dans l'API Natural Language.
L'ensemble des champs de jetons renvoyés dans une réponse JSON d'analyse syntaxique est spécifié ci-dessous :
text
contient les données textuelles associées à ce jeton, avec les champs enfants suivants :beginOffset
contient le décalage de caractère (basé sur zéro) dans le texte fourni. Sachez que bien que les dépendances (décrites ci-dessous) n'existent que dans les phrases, le positionnement des décalages de jetons se fait dans l'ensemble du texte. Ce décalage est calculé en utilisant la valeur de champencodingType
qui a été transmise.content
contient le contenu textuel réel du texte d'origine.
partOfSpeech
fournit des informations grammaticales sur le jeton, y compris des informations morphologiques, telles que son temps, sa personne, son nombre, son genre, etc. (Pour des informations plus complètes sur ces champs, consultez le guide Arborescences de morphologies et de dépendances.)lemma
contient le mot "racine" sur lequel ce mot est basé, ce qui vous permet de définir l'utilisation canonique du mot dans le texte. Par exemple, les mots "écrire" et "écrit" sont basés sur le même lemme ("écrire"). De même, les formes du pluriel et du singulier sont basées sur les lemmes : "maison" et "maisons" désignent toutes deux une même forme. (Voir Lemme (linguistique).)Les champs
dependencyEdge
identifient la relation entre les mots d'une phrase contenant un jeton, au moyen d'arêtes dans une arborescence orientée. Ces informations peuvent être utiles pour la traduction, l'extraction d'informations et la synthèse. (Le guide Arbres de morphologie et de dépendance contient des informations plus détaillées sur l'analyse des dépendances.) Chaque champdependencyEdge
contient les champs enfants suivants :headTokenIndex
fournit la valeur d'index (basée sur zéro) du "jeton parent" de ce jeton, dans la phrase d'encapsulation du jeton. Un jeton sans parent s'indexe lui-même.label
fournit le type de dépendance de ce jeton par rapport à son jeton principal.
La citation suivante issue du discours inaugural de Franklin D. Roosevelt produira les jetons suivants :
REMARQUE : Toutes les balises partOfSpeech
contenant les valeurs *_UNKNOWN
ont été supprimées par souci de clarté.
"tokens": [ { "text": { "content": "The", "beginOffset": 4 }, "partOfSpeech": { "tag": "DET", }, "dependencyEdge": { "headTokenIndex": 2, "label": "DET" }, "lemma": "The" }, { "text": { "content": "only", "beginOffset": 8 }, "partOfSpeech": { "tag": "ADJ", }, "dependencyEdge": { "headTokenIndex": 2, "label": "AMOD" }, "lemma": "only" }, { "text": { "content": "thing", "beginOffset": 13 }, "partOfSpeech": { "tag": "NOUN", "number": "SINGULAR", }, "dependencyEdge": { "headTokenIndex": 7, "label": "NSUBJ" }, "lemma": "thing" }, { "text": { "content": "we", "beginOffset": 19 }, "partOfSpeech": { "tag": "PRON", "case": "NOMINATIVE", "number": "PLURAL", "person": "FIRST", }, "dependencyEdge": { "headTokenIndex": 4, "label": "NSUBJ" }, "lemma": "we" }, { "text": { "content": "have", "beginOffset": 22 }, "partOfSpeech": { "tag": "VERB", "mood": "INDICATIVE", "tense": "PRESENT", }, "dependencyEdge": { "headTokenIndex": 2, "label": "RCMOD" }, "lemma": "have" }, { "text": { "content": "to", "beginOffset": 27 }, "partOfSpeech": { "tag": "PRT", }, "dependencyEdge": { "headTokenIndex": 6, "label": "AUX" }, "lemma": "to" }, { "text": { "content": "fear", "beginOffset": 30 }, "partOfSpeech": { "tag": "VERB", }, "dependencyEdge": { "headTokenIndex": 4, "label": "XCOMP" }, "lemma": "fear" }, { "text": { "content": "is", "beginOffset": 35 }, "partOfSpeech": { "tag": "VERB", "mood": "INDICATIVE", "number": "SINGULAR", "person": "THIRD", "tense": "PRESENT", }, "dependencyEdge": { "headTokenIndex": 7, "label": "ROOT" }, "lemma": "be" }, { "text": { "content": "fear", "beginOffset": 38 }, "partOfSpeech": { "tag": "NOUN", "number": "SINGULAR", }, "dependencyEdge": { "headTokenIndex": 7, "label": "ATTR" }, "lemma": "fear" }, { "text": { "content": "itself", "beginOffset": 43 }, "partOfSpeech": { "tag": "PRON", "case": "ACCUSATIVE", "gender": "NEUTER", "number": "SINGULAR", "person": "THIRD", }, "dependencyEdge": { "headTokenIndex": 8, "label": "NN" }, "lemma": "itself" }, { "text": { "content": ".", "beginOffset": 49 }, "partOfSpeech": { "tag": "PRON", "case": "ACCUSATIVE", "gender": "NEUTER", "number": "SINGULAR", "person": "THIRD", }, "dependencyEdge": { "headTokenIndex": 8, "label": "NN" }, "lemma": "itself" }, { "text": { "content": ".", "beginOffset": 49 }, "partOfSpeech": { "tag": "PUNCT", }, "dependencyEdge": { "headTokenIndex": 7, "label": "P" }, "lemma": "." } ],
Classification de contenu
Vous pouvez demander à l'API Natural Language d'analyser un document et de renvoyer une liste des catégories de contenu qui s'appliquent au texte du document. Pour classifier le contenu d'un document, appelez la méthode classifyText
.
La liste complète des catégories de contenu renvoyées pour la méthode classifyText
figure ici.
L'API Natural Language filtre les catégories renvoyées par la méthode classifyText
pour n'inclure que les catégories les plus pertinentes pour une requête. Par exemple, si /Science
et /Science/Astronomy
s'appliquent toutes deux à un document, seule la catégorie /Science/Astronomy
est renvoyée, car il s'agit du résultat le plus spécifique.
Pour obtenir un exemple de classification de contenu avec l'API Natural Language, consultez la page Classifier des contenus.
Effectuer plusieurs opérations dans une même requête
Si vous souhaitez effectuer un ensemble d'opérations Natural Language en un seul appel de méthode, utilisez annotateText
comme requête de l'API Natural Language à usage général. Une requête JSON d'annotation textuelle est semblable à une requête d'analyse des entités standard, à ceci près qu'elle requiert en plus qu'un ensemble de fonctionnalités soient transmises pour indiquer les opérations à effectuer sur le texte. Ces fonctionnalités sont énumérées ci-dessous :
extractDocumentSentiment
effectue une analyse des sentiments, comme décrit dans la section Analyse des sentiments.extractEntities
effectue une analyse des entités, comme décrit dans la section Analyse des entités.extractSyntax
indique que le texte donné doit être traité pour pouvoir effectuer une analyse syntaxique, comme décrit dans la section Analyse syntaxique.
La requête suivante appelle l'API pour annoter les fonctionnalités (features
) dans une phrase courte.
{ "document":{ "type":"PLAIN_TEXT", "content":"The windy, cold weather was unbearable this winter." }, "features":{ "extractSyntax":true, "extractEntities":true, "extractDocumentSentiment":true }, "encodingType":"UTF8" }