
機械学習と一致するファジー名。類似性スコアリング、レコードリンケージ、重複排除、正規化など、一般的なファジー名マッチングタスクを実行します。
HMNIは、国際的に翻訳されたラテン語のファースト名データセットで訓練されており、精度が優先されます。
| モデル | 正確さ | 精度 | 想起 | F1スコア |
|---|---|---|---|---|
| hmni-latin | 0.9393 | 0.9255 | 0.7548 | 0.8315 |
HMNIの背後にある方法論と調査の紹介については、私のブログ投稿を参照してください。
Pypi経由でPIPを使用します
pip install hmni 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、aopt_alt_surname = true、awtow_initials = true 、appro_missing_components = true)
類似性(name_a、name_b、prob = true、surname_first = false)
fuzzymerge (df1、df2、how = 'inner'、on = none、left_on = none、right_on = none、indicator = false、limit = 1、threshold = 0.5、aople_exact_matches = true、surname_first = false)
inner (デフォルト):SQLインナー結合と同様に、両方のフレームからキーの交差点を使用します。左キーの順序を保存しますleft :左フレームからのキーのみを使用して、SQLの左外の結合と同様に使用します。キーオーダーを保持しますright :SQL右外の結合と同様に、右フレームからキーのみを使用します。キーオーダーを保持しますouter :SQLフルアウター結合と同様に、両方のフレームからキーの組合を使用します。辞書編集的にキーをソートしますdedupe (名前、しきい値= 0.5、keep = 'longest'、reverse = true、limit = 3、置換= false、surname_first = false)
longest (デフォルト):最長の名前を保持しますfrequent :最も頻繁な名前を名前リストに保持しますassile_similarity (name_a、name_b、score)
プルリクエストは大歓迎です。ラテン語または非ラチンライティングシステム(中国語、キリル語、アラビア語)を使用してモデルを構築したい開発者のために、Jupyterノートブックはdevフォルダーで共有され、同様の方法を使用してモデルを構築します。
mit