
Hmni
Nombre difuso coincidir con aprendizaje automático. Realice tareas comunes de coincidencia de nombres difusos, incluida la puntuación de similitud, enlace de registro, deduplicación y normalización.
HMNI está capacitado en un conjunto de datos de primer nombre latino transmitido internacionalmente, donde la precisión tiene prioridad.
| Modelo | Exactitud | Precisión | Recordar | Puntaje F1 |
|---|
| Hmni-latina | 0.9393 | 0.9255 | 0.7548 | 0.8315 |
Para obtener una introducción a la metodología e investigación detrás de HMNI, consulte mi publicación de blog.
Requisitos
Python 3.5–3.8
- flujo tensor
- lear
- Fuzzywuzzy
- abydos
- unidecode
Guía de uso rápido
Instalación
Usando PIP a través de Pypi
Inicializar un objeto Matcher
import hmni
matcher = hmni . Matcher ( model = 'latin' )
Similitud de un solo par
matcher . similarity ( 'Alan' , 'Al' )
# 0.6838303319889133
matcher . similarity ( 'Alan' , 'Al' , prob = False )
# 1
matcher . similarity ( 'Alan Turing' , 'Al Turing' , surname_first = False )
# 0.6838303319889133
Enlace de registro
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' )Deduplicación de nombre y normalización
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']
Parámetros de Matcher
hmni.matcher (model = 'Latin', prefilter = true, tampón_alt_surname = true, teaw_initials = true , tampising_components = true)
- Modelo (STR) - Modelo estadístico HMNI (latín por defecto)
- Prefilter (BOOL) : si el prefilter de Matcher es poco probable (verdadero de forma predeterminada)
- persod_alt_surname (bool) : si el matcher considera apellidos fonéticos coincidentes , por ejemplo, Schmidt (verdadero por defecto)
- tampable_initials (bool) : si el matcher considera nombres con iniciales (verdadero de forma predeterminada)
- persod_missing_components (bool) : si el matcher considera nombres con componentes faltantes (verdadero de forma predeterminada)
Métodos Matcher
Simility (name_a, name_b, prob = true, Surname_first = false)
- name_a (str) - Nombre para la comparación
- name_b (str) - segundo nombre para la comparación
- prob (bool) : si el rendimiento verdadero es una probabilidad predicha, de lo contrario, etiqueta de clase binaria
- Umbral (FLOAT) : umbral de probabilidad de predicción para una coincidencia positiva (0.5 por defecto)
- Surname_first (bool) : si las cadenas de nombre comienzan con el nombre de apellido (falso de forma predeterminada)
FuzzyMerge (DF1, DF2, How = 'Inner', ON = None, Left_on = None, Right_on = None, Indicator = False, Limit = 1, Umbral = 0.5, Dign_Exact_Matches = True, Surname_First = False)
- DF1 (Pandas DataFrame o Serie nombrada) - Objeto primero/izquierda para fusionar con
- DF2 (Pandas DataFrame o Serie nombrada) - Segundo/correcto Objeto para fusionar con
- Cómo (str) - tipo de fusión a realizar
-
inner (predeterminado): use la intersección de claves de ambos cuadros, similar a una unión interna SQL; preservar el orden de las teclas izquierdas -
left : use solo teclas del marco izquierdo, similar a una unión externa izquierda SQL; Preservar el orden de las claves -
right : use solo claves del marco derecho, similar a una unión externa derecha SQL; Preservar el orden de las claves -
outer : Use unión de claves de ambos cuadros, similar a una unión externa SQL completa; ordenar claves lexicográficamente
- ON (etiqueta o lista) : nombres de nivel de columna o índice para unirse. Estos deben encontrarse en ambos marcos de datos
- Left_on (etiqueta o lista) : nombres de nivel de columna o índice para unirse en el marco de datos de la izquierda
- Right_on (etiqueta o lista) : nombres de nivel de columna o índice para unirse en el marco de datos correcto
- Indicador (bool) : si es verdadero, agrega una columna a la salida de datos de datos llamado "_merge" con información sobre la fuente de cada fila (falso por defecto)
- Límite (int) : el número superior de coincidencias de nombre a considerar (1 por defecto)
- Umbral (FLOAT) : umbral de probabilidad de predicción para una coincidencia positiva (0.5 por defecto)
- persod_exact_matches (bool) : si es verdadero permitirse fusionar en coincidencias de nombre exactos, de lo contrario no considere coincidencias exactas (verdadero de forma predeterminada)
- Surname_first (bool) : si las cadenas de nombre comienzan con el nombre de apellido (falso de forma predeterminada)
dedupe (nombres, umbral = 0.5, keep = 'longest', reverse = true, limit = 3, reemplazar = falso, lema_first = falso)
- nombres (lista) - Lista de nombres para dedupe
- Umbral (FLOAT) : umbral de probabilidad de predicción para una coincidencia positiva (0.5 por defecto)
- Keep (STR) : especifica el método para mantener uno de los múltiples nombres alternativos
-
longest (predeterminado): mantiene el nombre más largo -
frequent : mantiene el nombre más frecuente en la lista de nombres
- Reverse (bool) : si True ordenará las coincidencias del orden descendente, de lo contrario ascendente (verdadero de forma predeterminada)
- Límite (int) : el número superior de coincidencias de nombre a considerar (3 por defecto)
- Reemplazar (bool) : si la lista de nombres normalizadas de regreso verdadero, de lo contrario, devuelve la lista de nombres deduplicado (falso de forma predeterminada)
- Surname_first (bool) : si las cadenas de nombre comienzan con el nombre de apellido (falso de forma predeterminada)
asigne_similarity (name_a, name_b, stork)
- name_a (str) - Nombre para la asignación de puntaje de similitud
- name_b (STR) - Segundo nombre para la asignación de puntaje de similitud
- Puntuación (FLOAT) - Puntuación de similitud asignada para un par de nombres
Que contribuye
Las solicitudes de extracción son bienvenidas. Para los desarrolladores que desean construir un modelo utilizando sistemas de escritura latina o no latina (chino, cirílico, árabe), los cuadernos Jupyter se comparten en la carpeta dev para construir modelos utilizando métodos similares.
Licencia
MIT