
HMNI
Nom flou correspondant à l'apprentissage automatique. Effectuer des tâches de correspondance de nom floues communes, notamment une notation de similitude, une liaison d'enregistrement, une déduplication et une normalisation.
HMNI est formé sur un ensemble de données latin de premier nom translitéré internationalement, où la précision est la priorité.
| Modèle | Précision | Précision | Rappel | F1-score |
|---|
| HMNI-Latin | 0,9393 | 0,9255 | 0,7548 | 0,8315 |
Pour une introduction à la méthodologie et à la recherche derrière HMNI, veuillez vous référer à mon article de blog.
Exigences
Python 3.5–3.8
- tensorflow
- scikit-apprend
- flou
- abydos
- unidecode
Guide d'utilisation rapide
Installation
Utilisation de PIP via PYPI
Initialiser un objet Matcher
import hmni
matcher = hmni . Matcher ( model = 'latin' )
Similitude de paire unique
matcher . similarity ( 'Alan' , 'Al' )
# 0.6838303319889133
matcher . similarity ( 'Alan' , 'Al' , prob = False )
# 1
matcher . similarity ( 'Alan Turing' , 'Al Turing' , surname_first = False )
# 0.6838303319889133
Enregistrer la liaison
import pandas as pd
df1 = pd . DataFrame ({ 'name' : [ 'Al' , 'Mark' , 'James' , 'Harold' ]})
df2 = pd . DataFrame ({ 'name' : [ 'Mark' , 'Alan' , 'James' , 'Harold' ]})
merged = matcher . fuzzymerge ( df1 , df2 , how = 'left' , on = 'name' )Nom de déduplication et de normalisation
names_list = [ 'Alan' , 'Al' , 'Al' , 'James' ]
matcher . dedupe ( names_list , keep = 'longest' )
# ['Alan', 'James']
matcher . dedupe ( names_list , keep = 'frequent' )
# ['Al, 'James']
matcher . dedupe ( names_list , keep = 'longest' , replace = True )
# ['Alan, 'Alan', 'Alan', 'James']
Paramètres du patrimoine
hmni.matcher ( modèle = 'latin', prefilter = true, allow_alt_surname = true, allow_inials = true, allow_missing_components = true)
- Modèle (STR) - Modèle statistique HMNI (latin par défaut)
- Préfiltre (bool) - Si le préfiltre du matchur est des candidats improbables (vrai par défaut)
- allow_alt_surname (bool) - si le Matcher est considéré comme des noms de famille de correspondance phonétiques , par exemple Smith, Schmidt (vrai par défaut)
- allow_initials (bool) - si le correspondant devait considérer les noms avec les initiales (vrai par défaut)
- allow_missing_components (bool) - si le matchur devait considérer les noms avec des composants manquants (vrai par défaut)
Méthodes de correspondance
similitude (name_a, name_b, prob = true, nom_first = false)
- name_a (str) - prénom pour la comparaison
- name_b (str) - deuxième nom pour la comparaison
- Prob (bool) - Si vrai renvoie une probabilité prévue, autre étiquette de classe binaire
- Seuil (flotteur) - Seuil de probabilité de prédiction pour une correspondance positive (0,5 par défaut)
- nom_first (bool) - Si les chaînes de noms commencent par nom de famille (false par défaut)
fuzzymerge (df1, df2, comment = 'inner', on = non, left_on = non, droite_on = aucun, indicateur = false, limite = 1, threshold = 0.5, allow_exact_matches = true, farname_first = false)
- DF1 (Pandas DataFrame ou Série nommée) - First / Left Object pour fusionner avec
- df2 (pandas dataframe ou série nommée) - deuxième objet droit / droit pour fusionner avec
- comment (str) - type de fusion à effectuer
-
inner (par défaut): utilisez l'intersection des clés à partir des deux cadres, similaire à une jointure intérieure SQL; préserver l'ordre des clés gauche -
left : utilisez uniquement les touches du cadre gauche, similaire à une jointure extérieure gauche SQL; préserver l'ordre clé -
right : utilisez uniquement les touches de la trame droite, similaire à une jointure extérieure droite SQL; préserver l'ordre clé -
outer : Utilisez l'union des clés des deux cadres, similaire à une jointure extérieure complète SQL; trier les clés lexicographiquement
- sur (étiquette ou liste) - Noms de niveau de colonne ou d'index à rejoindre. Ceux-ci doivent être trouvés dans les deux dataframes
- Left_on (étiquette ou liste) - Noms de niveau de colonne ou d'index pour se joindre à la longueur de données gauche
- Right_on (étiquette ou liste) - Noms de niveau de colonne ou d'index pour se joindre à la bonne dataframe
- Indicateur (bool) - Si vrai, ajoute une colonne pour sortir DataFrame appelé «_merge» avec des informations sur la source de chaque ligne (FALSE par défaut)
- Limit (int) - Numéro supérieur des correspondances de nom à considérer (1 par défaut)
- Seuil (flotteur) - Seuil de probabilité de prédiction pour une correspondance positive (0,5 par défaut)
- allow_exact_matches (bool) - Si vrai permettez la fusion sur les correspondances exactes, sinon ne considérez pas les correspondances exactes (vrai par défaut)
- nom_first (bool) - Si les chaînes de noms commencent par nom de famille (false par défaut)
Dedupe (noms, threshold = 0,5, keep = 'le plus long', inverse = true, limit = 3, remphaleux = false, nom_first = false)
- Noms (liste) - Liste des noms à Dedupe
- Seuil (flotteur) - Seuil de probabilité de prédiction pour une correspondance positive (0,5 par défaut)
- Keep (Str) - Spécifie la méthode pour conserver l'un des multiples noms alternatifs
-
longest (par défaut): maintient le nom le plus long -
frequent : garde le nom le plus fréquent dans la liste des noms
- inverse (bool) - Si True trie correspond à l'ordre descendant, sinon ascendant (vrai par défaut)
- Limit (int) - Numéro supérieur des correspondances de nom à considérer (3 par défaut)
- remplacer (bool) - Si True Return Normalized Name Name List, Else Return Deduplicated Name List (FALSE par défaut)
- nom_first (bool) - Si les chaînes de noms commencent par nom de famille (false par défaut)
Assign_similarity (name_a, name_b, score)
- name_a (str) - prénom pour une affectation de score de similitude
- name_b (str) - deuxième nom pour une affectation de score de similitude
- Score (flottant) - Score de similitude attribué pour la paire de noms
Contributif
Les demandes de traction sont les bienvenues. Pour les développeurs souhaitant construire un modèle à l'aide de systèmes d'écriture latine ou non latin (chinois, cyrillique, arabe), les cahiers de jupyter sont partagés dans le dossier dev pour créer des modèles en utilisant des méthodes similaires.
Licence
Mit