2
votes

@ sys.person - Précisez le prénom et le nom

Depuis le 18 avril 2019, l'entité système @ sys.person a été ajoutée: https://cloud.google.com/dialogflow/docs/release-notes# avril_18_2019

Il renvoie une chaîne Object: name qui contient le prénom et le nom.

Je souhaite extraire le prénom et le nom de la chaîne Object: name.

Je ne cherche pas le moyen le plus simple qui consiste à diviser la chaîne au premier espace "".

Je recherche quelque chose qui serait conforme aux noms composites tels que "Bree Van de Kamp".

Pour info, le traitement doit être effectué dans un webhook.

Modifier : problème résolu avec "Bree Van de Kamp" Maintenant, comment le faire avec des noms composites français par exemple: "Jean Yves de la Héronière" où "Jean Yves" est le prénom.


2 commentaires

Avez-vous déjà résolu ce problème @ clément-beaujoin


Oui, je demande le prénom et le nom séparément


3 Réponses :


0
votes

Supposons que votre exécution de webhook reçoive un objet, sys.person , contenant {"name": "Bree Van de Kamp"} .

Dans ce la casse, le prénom et le nom ne sont pas encore définis. Vous pouvez définir les valeurs en divisant la chaîne de nom sur chaque caractère d'espace, puis en exécutant une boucle for pour réassembler le nom, comme ...

let person = { name: "Bree Van de Kamp" };
let split_name = person.name.split(" ");

function splitName(full_name){

  let name = {
    given_name: "",
    last_name: ""
  };

  for(let i = 0; i < full_name.length; i++){
    if (i == 0) {
      name.given_name = full_name[i];
    } else {
      if (i > 1){
        name.last_name = name.last_name + " ";
      }
      name.last_name = name.last_name + full_name[i];
    }
  }

  return name;

}

// returns { given_name: 'Bree', last_name: 'Van de Kamp' }

Vous pouvez tester le code ci-dessus bloquer à https://repl.it/repls/HopefulFirstUnix


2 commentaires

Merci pour votre réponse, c'est ce que j'ai fait. Mais mon problème est toujours là avec les noms composites français par exemple: "Jean Yves de la Héronière" où "Jean Yves" est le prénom. La seule solution de contournement que j'ai trouvée est de demander à l'utilisateur d'écrire «Jean-Yves», mais cela ne le fait pas avec la voix.


Dans ce cas, il peut être plus facile de demander le nom et le nom de famille séparément.



0
votes

En java, j'ai fait comme ceci:

    LinkedTreeMap person = (LinkedTreeMap) request.getParameter("name");
    String fullname = (String) person.get("name");
    List<String> names = Splitter.on(" ").splitToList(fullname);
    String firstname = names.get(0);
    String lastname = Joiner.on(" ").skipNulls().join(names.stream().skip(1).collect(Collectors.toList()));


0 commentaires

1
votes

Je viens de trouver ce service: https://v2.namsor.com/NamSorAPIv2/ index.html

Vous pouvez écrire du code d'exécution pour votre intention et utiliser l'API NamSor pour analyser votre entité @ sys.person en un prénom et un nom. il tentera également de déduire le sexe du nom, ce qui vous permettra ensuite d'avoir une intention de suivi pour vérifier qu'il est correct.


1 commentaires

Intéressant mais cela implique un appel à l'API et à dépenser de l'argent pour un plan Pro de namsor. Quoi qu'il en soit, faites-nous savoir les résultats de votre utilisation