
Hmni
Нечеткое имя, сопоставленное с машинным обучением. Выполните общие нечеткие задачи сопоставления имен, включая оценку сходства, связь с записями, дедупликацию и нормализацию.
HMNI обучается на международном транслитере латинском наборе данных FirstName, где точность предоставляется приоритетом.
| Модель | Точность | Точность | Отзывать | F1-показатель |
|---|
| Hmni-latin | 0,9393 | 0,9255 | 0,7548 | 0,8315 |
Для введения в методологию и исследования HMNI, пожалуйста, обратитесь к моему сообщению в блоге.
Требования
Python 3.5–3,8
- Tensorflow
- Scikit-learn
- Fuzzywuzzy
- Абидос
- Unidecode
Руководство по быстрому использованию
Установка
Использование PIP через PYPI
Инициализировать объект Matchter
import hmni
matcher = hmni . Matcher ( model = 'latin' )
Сходство одиночной пары
matcher . similarity ( 'Alan' , 'Al' )
# 0.6838303319889133
matcher . similarity ( 'Alan' , 'Al' , prob = False )
# 1
matcher . similarity ( 'Alan Turing' , 'Al Turing' , surname_first = False )
# 0.6838303319889133
Записная связь
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' )Имя дедупликации и нормализации
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']
Параметры сопоставления
hmni.matcher ( model = 'latin', prefilter = true, alluct_alt_surname = true, alluct_initials = true, alluct_missing_components = true)
- Модель (STR) - Статистическая модель HMNI (по умолчанию латынь)
- Префильтер (Bool) - если предварительный фильтер Matchter маловероятно
- Alling_alt_surname (bool) - если бы совпадок рассмотрел фонетические соответствующие фамилии , например, Smith, Schmidt (True по умолчанию)
- Alling_Initials (bool) - если сочетание рассмотрит имена с инициалами (истинно по умолчанию)
- Alling_missing_components (bool) - если сочетание рассмотрит имена с отсутствующими компонентами (по умолчанию верно)
Методы сопоставления
сходство (name_a, name_b, prop = true, surname_first = false)
- name_a (str) - Имя для сравнения
- name_b (str) - второе имя для сравнения
- prob (bool) - если True вернуть прогнозируемую вероятность, иначе бинарная метка класса
- Порог (Float) - Порог вероятности прогнозирования для положительного соответствия (0,5 по умолчанию)
- surname_first (bool) - если строки имен начинаются с фамилии (по умолчанию false)
Fuzzymerge (df1, df2, how = 'inner', on = none, left_on = none, right_on = none, indoator = false, limit = 1, threshold = 0.5, allow_exact_matches = true, furname_first = false)
- DF1 (Pandas DataFrame или с именем серии) - первый/левый объект для объединения с
- DF2 (Pandas DataFrame или с именем серии) - второй/правый объект для объединения с
- Как (Str) - тип слияния, который будет выполнен
-
inner (по умолчанию): используйте пересечение ключей из обеих кадров, аналогично внутреннему соединению SQL; сохранить порядок левых ключей -
left : используйте только клавиши с левого кадра, аналогично внешнему соединению SQL; сохранить ключевой порядок -
right : используйте только клавиши с правой кадры, аналогичные правым внешнему соединению SQL; сохранить ключевой порядок -
outer : используйте союз ключей из обеих кадров, похожий на полное внешнее соединение SQL; Сортировать клавиши лексикографически
- ON (Метка или список) - имена уровней столбца или индекса для присоединения. Они должны быть найдены в обоих данных данных
- LEATE_ON (метка или список) - имена уровней столбца или индекса, чтобы присоединиться к левому DataFrame
- right_on (метка или список) - имена уровней столбца или индекса, чтобы присоединиться к правой DataFrame
- Индикатор (Bool) - если True, добавляет столбец для вывода DataFrame, называемого «_merge» с информацией о источнике каждой строки (по умолчанию false)
- Предел (int) - верхнее количество имен совпадает для рассмотрения (1 по умолчанию)
- Порог (Float) - Порог вероятности прогнозирования для положительного соответствия (0,5 по умолчанию)
- Alling_EXACT_MATCHES (BOOL) - если True All Alling слияние с точными именами совпадает, иначе не учитывайте точные совпадения (по умолчанию верно)
- surname_first (bool) - если строки имен начинаются с фамилии (по умолчанию false)
dedupe (имена, порог = 0,5, hepe = 'самые длинные', reverse = true, limit = 3, rypety = false, surname_first = false)
- имена (список) - Список имен для dedupe
- Порог (Float) - Порог вероятности прогнозирования для положительного соответствия (0,5 по умолчанию)
- сохранить (str) - определяет метод поддержания одного из нескольких альтернативных имен
-
longest (по умолчанию): сохраняет самое длинное имя -
frequent : сохраняет наиболее частые имена в списке имен
- Обратный (bool) - если True сортирует сопоставления порядок сбыта, иначе восходящий (по умолчанию верно)
- Предел (int) - верхнее количество имен совпадает для рассмотрения (3 по умолчанию)
- Заменить (bool) - если True вернуть нормализованный список имен, иначе вернуть список дедуплисных имен (по умолчанию false)
- surname_first (bool) - если строки имен начинаются с фамилии (по умолчанию false)
ussys_similality (name_a, name_b, счет)
- name_a (str) - Имя для назначения сходства
- name_b (str) - второе имя для назначения оценки сходства
- Оценка (float) - назначенный оценка сходства для пары имен
Внося
Приглашаются запросы. Для разработчиков, желающих построить модель, используя латинские или нелатиновые системы написания (китайский, кириллический, арабский), в папке dev используются ноутбуки Jupyter, используются для создания моделей с использованием аналогичных методов.
Лицензия
Грань