Comment analyser le langage naturel ?

how-to
natural language processing
NLP
textrazor

Avec l’émergence des réseaux sociaux et du contenu produit par les internautes à foison, il devient difficile d’analyser les données pour en extraire des informations pertinentes.

Afin de régler ce problème nous avons intégré un worker TextRazor qui permet d’analyser tout champ texte produit dans votre application Apiloop.

1. Le modèle de données

Besoin : Je veux créer un site sur lequel n’importe qui peut poster n’importe quoi et ensuite analyser automatiquement le contenu.

Commençons par créer l’application Reddit Light. Créons une entité Post qui a pour attributs title, content et contentAnalysis.

2. Les permissions

Besoin : N’importe qui doit pouvoir créer et lister les posts

Créons une permission au niveau de Post disant que les utilisateurs anonymes peuvent LIST et une autre indiquant qu’ils peuvent CREATE.

3. Le workflow

Maintenant que notre modèle de données est en place et que nous avons défini les permissions, modifions le workflow.

Besoin : Analyser chaque post envoyé

Vous l’aurez compris, nous allons modifier le workflow relatif à l’action CREATE de l’entité Post. Créons donc le workflow assoocié en ajoutant une étape ayant les caractéristiques suivantes :

  • title : Analyze message
  • order : 10

L’ordre est défini à 10 afin de laisser de la place pour une étape future avant. Et il est inférieur à 500 car cette valeur caractéristique représente la sauvegarde en base de données.

Puis renseignons les données demandées par le worker chargé d’analyser le commentaire Analyser un texte avec TextRazor.

  • apiKey : créez un compte sur TextRazor et copiez/collez votre clé API
  • sourceField : {{content}}
  • destinationField : contentAnalysis

Vous remarquez que la syntaxe du champ sourceField est particulière. Elle permet en fait d’identifier la valeur du champ content que nous avons défini dans le modèle dans le contexte d’execution du workflow.

Ainsi, cette syntaxe indique au workflow de substituer cette valeur avec la réelle valeur postée par l’utilisateur.

À l’inverse, le destinationField indique simplement le nom de l’attribut, sa valeur étant nulle par définition quand on crée le Post.

4. Le frontend

Jusqu’à présent, rien de tout ce que nous avons fait n’est visible de nos utilisateurs. Et pourtant nous avons fait beaucoup, c’est là dedans que réside toute la puissance d’Apiloop.

Rendons nous sur le dashboard de notre application afin de générer le frontend. Une fois que cela est fait, après quelques minutes, notre site est accessible via le bouton Prévisualiser. Comme nous pouvons le voir, il est relativement vide, c’est une pièce blanche.

Rendons nous dans l’onglet Personnaliser afin d’ajouter la liste des Post.

Ajouter une fonctionnalité :

  1. Lister les objets
  2. Post
  3. Site web

Ajouter une fonctionnalité :

  1. Créer un objet
  2. Post
  3. Site web

Retournons dans le dashboard afin de publier notre application. Une fois le déploiement fini, prévisualisons le site à nouveau. Surprise : rien n’a changé !

En réalité si. Si vous changez l’URL dans votre navigateur en ajoutant /posts, vous obtenez la page listant les Post. À nouveau si vous rajoutez /posts/new vous obtenez le formulaire permettant de créer un post avec les champs liés automatiquement aux attributs que nous avons défini dans le modèle de données.

5. Faisons joujou

Allons-y, n’ayons pas peur, créons un post. Une fois que c’est fait, lorsque nous nous rendons dans notre console Apiloop, et que nous visualisons les données nous voyons bien que le workflow a analysé le contenu de notre Post afin d’en extraire des données.

6. Pistes d’évolution

Maintenant que nous avons mis tout cela en place, il y a de nombreuses pistes d’amélioration :

  1. Améliorer le frontend pour lister les Post directement sur la page d’accueil
  2. Créer un bouton call to action Créer un nouveau post
  3. Ajouter un système d’utilisateurs
  4. Désactiver un Post lors de la création afin de le faire valider par un administrateur
  5. Notifier l’administrateur lors de la création d’un post
  6. Ajouter une entité Comment liée aux Post afin de permettre aux utilisateurs de commenter
  7. Analyser les commentaires de la même façon

Et cette liste est loin d’être exhaustive.

À vous de jouer ;)

Apiloopement,
Chafik