6
votes

Meilleure stratégie pour diviser les noms de style anglais dans le prénom et le nom de famille

J'ai une liste de noms et j'ai besoin de les diviser en premier et dernier noms. Comme certains noms ont 2-3 espaces, une division simple pour un espace ne fera pas.

Quel type d'heuristique utilise-t-il pour effectuer la scission?

Notez que ce n'est pas un duplicata de questions qui demandent efficacement à se séparer dans un espace; Je cherche des heuristiques et des algorithmes, pas d'aide de code réel.

mise à jour : Je limite le problème défini sur les noms de style anglais. C'est tout ce dont j'ai besoin pour résoudre et probablement tout ce que quiconque s'approche de cette question (langue anglaise) aura besoin aussi bien.


6 commentaires

Ceci est généralement résolu en conservant les données de prénom et de nom de famille séparément à tout moment, car il est tout à fait impossible d'obtenir ce droit pour toutes les langues / pays / local / etc. Pas que cela vous aide.


Cela dépend beaucoup de la langue: pouvez-vous essayer cela avec un dictionnaire de prénoms? Je suppose que ce n'est pas en chinois ni en japonais, n'est-ce pas?


Les noms de fractionnement vous-même vont généralement faire pisser quelqu'un. Comment Bobby de Luca ou Bobbie Lee Jensen devraient-ils se séparer? Ou chow yun-gras, à cette affaire? (Chow est son dernier nom. Eh bien ... c'est d'abord, mais dernier. Oh, enfer, vous avez le point.)


Si vous utilisez la stratégie de dictionnaire, vous devez savoir que pour une langue, un prénom peut également être un nom de famille. Comme Patrick Robert et Robert Patrick


Dans certains cas cependant, vous pour fournir des noms séparés. L'API de LinkedIn, par exemple, vous oblige à scinder le nom ou à ne pas vous laisser faire une recherche hors réseau.


@Mattball dans mon cas c'est une boîte de recherche, où avoir deux boîtes type d'odeur mal. En général, je suis d'accord.


4 Réponses :


1
votes

Différents pays et régions ont des formats différents pour les noms. Par exemple, l'Asie Le nom de la famille est généralement d'abord, puis des noms donnés suivent. L'Occident, vous avez le prénom et la convention de famille, mais sont compliqués lorsque les gens doublent le tonneau ou incluent des prénoms. Et puis quelques régions que les gens ne sont donnés qu'un seul nom.

Personnellement, je ne pense pas qu'il y ait un seul algorithme qui peut vous donner des résultats précis à 100%, j'ai peur.


0 commentaires

0
votes

Ce qui suit suppose des noms de famille en anglais. Si ce n'est pas le cas, veuillez mettre à jour votre question.

Il est généralement sûr de supposer que le dernier caractère spatial signale le début du nom de famille d'une personne. Mais comme il y a des exceptions, une stratégie serait de compiler une grande base de données de noms de famille multi-mots connus à partir d'une autre source. Vous pouvez ensuite tester ces noms de famille et les traiter comme des exceptions.


0 commentaires


3
votes

Deux approches peuvent aider, bien que cela ne résoudra pas complètement ce problème.

  1. Séparez de manière programmée par les celles faciles, celles qui ne sont pas faciles sont poussées dans une liste différente, "restant à la scission". Trier manuellement cette liste. Lorsque vous triez manuellement, certaines heuristiques peuvent émerger, ce qui pourrait être codé, réduisant ainsi la taille de la liste restante. S'il s'agit d'une chose unique et que la liste n'est pas super massive, cela fera le travail.
  2. Un problème étroitement associé est quand un nom est divisé, mais vous ne savez pas quel est le premier et lequel est le dernier. Certains systèmes travaillent autour de ce problème en faisant des recherches floues telles que si lors de la première tentative Aucun match ne se trouve, retournez le premier et le nom de famille et réessayez. Vous n'avez pas dit pourquoi vous devez diviser les noms. S'il s'agit de rechercher des données de référence, envisagez une sorte d'heuristique similaire sur la recherche floue qui permettent d'essayer différentes divisions au lieu d'essayer d'obtenir le front recto vers le haut.

    Pas vraiment une réponse, mais dans ce cas, il n'y a vraiment aucune réponse parfaite.


0 commentaires