Extraire les noms de l'adresse e-mail
Disons que j'ai deux adresses e-mail et je voudrais voir s'il est probable qu'elles appartiennent à la même personne. Par exemple, [email protected]et [email protected]est susceptible de provenir de la même personne (cela n'a pas à être certain, à condition que la probabilité soit suffisante).
J'avais deux directions en tête pour y parvenir, l'une est une comparaison de chaînes entre les deux adresses e-mail et l'autre consiste à extraire d'abord les noms des adresses e-mail, puis à comparer si elles peuvent être la même personne. Comme dans l'exemple ci-dessus, les noms extraits doivent être Cameron M Thompsonet c thompson.
Je me demande également si, étant donné que l'une des adresses e-mail est garantie de contenir le nom complet (généralement les adresses e-mail de l'entreprise ont le nom complet), cela aiderait-il l'extraction du nom dans l'autre adresse e-mail (les adresses e-mail personnelles peuvent ne pas toujours contenir le nom complet), ou cela aiderait-il à comparer les deux adresses e-mail.
J'ai eu du mal à essayer de comprendre si l'une des deux directions ci-dessus serait réalisable. Surtout lorsque les adresses e-mail peuvent ne pas avoir de séparateurs et que les noms peuvent beaucoup varier qu'une liste peut ne pas être suffisante pour trouver une correspondance.
Comment dois-je procéder pour résoudre ce problème? L'apprentissage automatique / apprentissage en profondeur serait-il utile ou devrais-je opter pour autre chose de simple comme l'expression régulière et la correspondance de chaîne floue?
MISE À JOUR: J'ai un ensemble de données qui a deux colonnes, l'adresse e-mail et le nom, et environ 2k lignes. Je pense que cela pourrait être utilisé pour la deuxième direction (extraction de nom). Pour la première direction (similarité de comparaison de chaînes), je pense à modifier l'ensemble de données en trois colonnes (adresse e-mail 1, adresse e-mail 2, libellé indiquant s'il s'agit de la même personne), ce qui devrait donner environ 1k lignes de données.
Réponses
Avant de parler de la solution, pourquoi ne vous concentrez-vous pas plutôt sur le contenu? Je pense qu'il serait plus utile de résoudre votre problème, étant donné que la plupart des adresses e-mail se terminent par le signe de l'expéditeur, Nom Prénom. En outre, la probabilité de ne pas obtenir ces informations à partir d'une adresse e-mail est beaucoup plus élevée que la probabilité de ne pas les obtenir à partir du contenu. En particulier, c'est le cas des adresses e-mail d'entreprise qui peuvent ne pas contenir le nom complet dans l'adresse e-mail (première lettre du nom et du prénom par exemple John Travolta - [email protected]), mais elle doit contenir le nom complet de l'auteur (au moins le nom) à la fin. De plus, sachez que de nombreuses adresses e-mail ne contiendront que le nom ou le prénom ou aucun des deux, mais des mots de substitution comme superboy122133@+++.com: D. Mais la plupart des applications de messagerie contiennent un signe par défaut qui inclut le nom et le prénom. De plus, vous pouvez combiner ces deux techniques. Autrement dit, combinez les données d'adresse e-mail avec les données de contenu e-mail afins'il est impossible ou impossible d'obtenir des données à partir de l'un d'entre eux, vous pouvez en utiliser un autre.
Cependant, si vous ne devez le faire qu'avec une adresse e-mail, je pense que l'utilisation de techniques d'apprentissage automatique surestimerait ou surestimerait le problème. De plus, l'utilisation de techniques non-machine learning ne signifie pas que vous simplifiez la solution, toutes ces techniques donnent les meilleurs résultats lorsqu'elles sont appliquées dans le bon contexte. Imaginons une situation simple: si vous savez ou pouvez facilement déduire que [impôt] = 0,2 * [salaire] + 20 $, pourquoi trouveriez-vous (ou adapteriez) cette équation en utilisant le Machine Learning?
À moins que vous ne disposiez de données au format | adresse e-mail, nom complet |, vous ne devriez pas commencer par utiliser le Machine Learning. (Si vous aviez | adresse e-mail, nom complet | données, en option, vous entraîneriez un modèle pour apprendre la relation générale entre l'adresse e-mail et le nom complet, ainsi vous identifieriez des adresses e-mail similaires).
Cependant, dans cette situation actuelle, une approche consisterait à trouver tous les modèles possibles dans les adresses e-mail. Qui peut être
- première lettre du nom et du prénom jtravolta@+++.com
- nom, caractères spéciaux et nom john_travolta@+++.com
- nom et numéros john1954@+++.com
- ...
Ensuite, ces fonctionnalités extraites d'adresses e-mail à l'aide de modèles identifiés peuvent être comparées à d'autres e-mails, soit par hachage, soit à l'aide d'algorithmes de distance de chaîne.
Une autre approche serait d'avoir un dictionnaire haché de tous disponibles noms et prénoms , alors vous pouvez couper des morceaux (sous - chaînes) à l'adresse e - mail puis hachage eux pour trouver les noms et prénoms de l'adresse (Bien sûr, vice serait versa être très inefficace ). Les adresses e-mail qui ont les propriétés les plus similaires seront mises en correspondance.
Une autre solution serait, en utilisant les modèles mentionnés ci-dessus, vous pouvez générer un tas d'adresses e-mail artificielles. Étant donné qu'il est hautement probable qu'il n'y ait pas un ensemble de données comprenant le nom et le prénom des personnes et leur une ou plusieurs adresses e-mail, l'augmentation des données est la première priorité. (Je ne suis pas sûr que le terme d'augmentation des données corresponde à cette situation. Si ce n'est pas le cas, disons la génération de données). Ainsi, votre entrée serait Nom Prénom (vous pouvez inclure le deuxième prénom, le numéro, etc.), et la sortie serait des adresses e-mail générées de manière aléatoire en fonction des modèles prédéfinis. Le nombre d'e-mails générés pour une seule entrée doit également être sélectionné au hasard, mais faites attention à la génération de la même adresse e-mail plusieurs fois. Par exemple entrée -> John Travolta -> sortie -> j_travolta12@+++.com,john.t.99@+++.com, john.travolta@+++.com (Supposons pour cet exemple que nous choisissions au hasard 3 e-mails à générer).
Ensuite, une fois que vous avez créé des adresses e-mail avec tous les modèles (presque) possibles, vous pouvez obtenir de l'aide des techniques d'apprentissage automatique. Ainsi, le modèle peut vous donner une probabilité avec le nom et le prénom pertinents. (En outre, vous pouvez configurer la sortie de sorte qu'elle vous donne les n premiers noms et noms de famille qui ont une probabilité plus élevée)
Une autre chose à considérer est la possibilité que deux personnes différentes aient le même nom et prénom. Enfin, indépendamment de l'utilisation de l'approche, votre solution ne peut pas être parfaite car, par exemple, il n'est pas possible de comprendre si le caractère «j» représente John ou Jake dans l'adresse e-mail. Ainsi, si vous pouvez intégrer le contenu de l'e-mail dans votre solution, cela augmentera considérablement les performances.
Mettre à jour en conséquence: Cochez cette réponse qui ne répond pas exactement à votre problème, mais le contexte est le même.