Introduction à l'API NLP Cloud en utilisant le client Python

NLP Cloud est une API qui facilite l'utilisation du NLP en production. L'API est basée sur les meilleurs modèles open-source pré-entraînés, et vous pouvez également utiliser vos propres modèles et entraîner vos modèles sur la plateforme. NLP Cloud prend en charge la plupart des grandes fonctionnalités liées à la compréhension et la génération de texte : extraction d'entités (NER), analyse de sentiment, classification de texte, résumé de texte, réponse aux questions, génération de texte, étiquetage morpho-syntaxique... et plus encore !

L'API est disponible gratuitement jusqu'à 3 requêtes par minute, ce qui est un bon moyen de tester facilement la qualité des modèles. Ensuite, le premier forfait payant coûte 29 $ par mois (pour 15 requêtes par minute).

Voyons comment utiliser l'API dans ce tutoriel.

Pourquoi NLP Cloud ?

Déployer des modèles d'IA en production est une source fréquente d'échec des projets. Les modèles NLP sont très exigeants en ressources, et assurer une haute disponibilité de ces modèles en production, tout en ayant de bons temps de réponse, est un défi.

L'objectif de NLP Cloud est d'aider les entreprises à exploiter rapidement leurs modèles en production, sans aucun compromis sur la qualité, et à des prix abordables.

Créez un compte

L'inscription est très rapide. Allez sur la page d'inscription et renseignez email + mot de passe.

S'inscrire sur NLP Cloud

Vous êtes maintenant sur votre dashboard et vous pouvez voir votre token API. Gardez ce token en toute sécurité, vous en aurez besoin pour tous les appels API que vous ferez.

Plusieurs extraits de code sont fournis dans votre tableau de bord afin que vous puissiez rapidement passer à la vitesse supérieure. Pour plus de détails, vous pouvez ensuite lire la documentation.

NLP Cloud documentation

Bibliothèques clientes de l'API NLP Cloud

NLP Cloud vous fournit, clé en main, la plupart des fonctionnalités NLP existantes à ce jour, soit via des modèles pré-entraînés, soit en uploadant vos propres modèles.

Afin de faciliter l'utilisation de l'API, NLP Cloud vous fournit des bibliothèques clientes en plusieurs langages (Python, Ruby, PHP, Go, Node.js). Dans le reste de ce tutoriel, nous allons utiliser la lib Python.

Utilisez PIP afin d'installer la lib Python:

pip install nlpcloud

Extraction d'entités (NER)

L'extraction d'entités se fait via spaCy. Tous les modèles spaCy "large" pré-entraînés sont disponibles, ce qui signifie que 15 langues sont disponibles (plus de détails sur tous ces modèles sur le site de spaCy). Vous pouvez également uploader des modèles spaCy personnalisés que vous avez annotés par vous-même afin de les utiliser en production. Si c'est ce que vous souhaitez, rendez-vous simplement à la section "Custom Models" de votre dashboard :

Upload custom models NLP

Maintenant imaginons que vous voulez extraire des entités de la phrase "John Doe travaille pour Microsoft à Seattle depuis 1999." grâce au modèle spaCy pré-entraîné pour l'anglais ("en_core_web_lg"). Voici comment vous devrez procéder :

import nlpcloud

client = nlpcloud.Client("en_core_web_lg", "")
client.entities("John Doe has been working for Microsoft in Seattle since 1999.")

Cela retournera le contenu de chaque entité extraite et sa position dans la phrase.

Analyse de sentiments

L'analyse de sentiments est réalisée via les transformers to Hugging Face et le modèle Distilbert Base Uncased Finetuned SST 2 English. Voici un exemple :

import nlpcloud

client = nlpcloud.Client("distilbert-base-uncased-finetuned-sst-2-english", "")
client.sentiment("NLP Cloud proposes an amazing service!")

Cela vous dira si le sentiment général dans ce texte est plutôt positif ou négatif, et sa probabilité.

Classification de texte

La classification de texte est réalisée via les transformers Hugging Face et le modèle Facebook Bart Large MNLI. Voici un exemple :

import nlpcloud

client = nlpcloud.Client("bart-large-mnli", "")
client.classification("""John Doe is a Go Developer at Google. 
    He has been working there for 10 years and has been 
    awarded employee of the year.""",
    ["job", "nature", "space"],
    True)

Comme vous pouvez le voir, nous passons un bloc de texte que nous essayons de classer, ainsi que des catégories possibles. Le dernier argument est un booléen qui définit si une seule catégorie ou plusieurs peuvent s'appliquer.

Cela retournera la probabilité de chaque catégorie.

Résumé de texte

Le résumé de texte est réalisé via les transformers Hugging Face et le modèle Facebook Bart Large CNN. Voici un exemple :

import nlpcloud

client = nlpcloud.Client("bart-large-cnn", "")
client.summarization("""The tower is 324 metres (1,063 ft) tall, 
about the same height as an 81-storey building, and the tallest structure in Paris. 
Its base is square, measuring 125 metres (410 ft) on each side. During its construction, 
the Eiffel Tower surpassed the Washington Monument to become the tallest man-made 
structure in the world, a title it held for 41 years until the Chrysler Building 
in New York City was finished in 1930. It was the first structure to reach a 
height of 300 metres. Due to the addition of a broadcasting aerial at the top of 
the tower in 1957, it is now taller than the Chrysler Building by 5.2 metres (17 ft). 
Excluding transmitters, the Eiffel Tower is the second tallest free-standing structure 
in France after the Millau Viaduct.""")

Cela retournera un résumé de ce qui précède. Il s'agit d'un résumé «abstractif» et non d'un résumé «extractif», ce qui signifie que de nouvelles phrases peuvent être générées et que celles qui ne sont pas importantes sont supprimées.

Réponse aux questions

La réponse aux questions est réalisée via les transformers Hugging Face et le modèle Deepset Roberta Base Squad 2. Voici un exemple :

import nlpcloud

client = nlpcloud.Client("roberta-base-squad2", "")
client.question("""French president Emmanuel Macron said the country was at war
    with an invisible, elusive enemy, and the measures were unprecedented,
    but circumstances demanded them.""",
    "Who is the French president?")

Ici, il s'agit de répondre à une question grâce à un contexte.

Par exemple, l'exemple ci-dessus retournera "Emmanuel Macron".

Étiquetage morpho-syntaxique

L'étiquetage morpho-syntaxique est réalisé via les mêmes modèles spaCy que ceux que nous utilisons pour l'extraction d'entités. Donc, par exemple, si vous voulez utiliser le modèle anglais pré-entraîné, voici comment vous devriez faire :

import nlpcloud

client = nlpcloud.Client("en_core_web_lg", "")
client.dependencies("John Doe is a Go Developer at Google")

Cela retournera le rôle grammatical associé à chaque token dans la phrase, et sa dépendance avec d'autres tokens.

Conclusion

NLP Cloud est une API pour le NLP qui est facile à utiliser et qui vous permet d'économiser beaucoup de temps en production.

D'autres modèles sont disponibles, comme la traduction, la détection de langue, la génération de texte... Et bien plus !

Notons également que, si le temps de réponse est critique pour votre application, des plans GPU sont également proposés.

J'espère que cet article a été utile à certains d'entre vous ! Si vous avez des questions, n'hésitez pas à nous contacter.

Julien Salinas
CTO chez NLP Cloud