部分の個人名を分割するためのアルゴリズム
-
06-07-2019 - |
質問
名前の分離に関するリファレンスを探しています:" John A. Doe"部分的に、first = John、middle = A.、last = Doe。メキシコには、父方、母方、名、姓があり、異なる順列で記述できるため、問題は非常に複雑です。
データに依存するため、すべての単語のスコアを計算するマッチングソフトウェアを使用して、決定を下すことができます(大きなデータベースに基づいています)。入力データはクリーンではなく、一部の政府のWebページからインポートされ、人間がフィルタリングしているため、ジャンクが認識される必要がある場合があります。提案はありますか?
[編集] 例:
name: Javier Abdul Córdoba Gándara common permutations (or as it may appear in gvt data referring to same person): Córdoba Gándara Javier Abdul Javier A. Córdoba Gándara Javier Abdul Córdoba G. paternal=Córdoba maternal=Gándara first given:Javier second given:Abdul
name: María de la Luz Sánchez Martínez paternal:Sánchez maternal: Martínez first given: María de la Luz
name: Paloma Viridiana Alin Arias Medina paternal: Arias maternal: Medina first given: Paloma second given: Viridiana Alin
私が言ったように、各単語の意味はスコアに依存します。スコアからではない場合、
Viridianaと
Alinに名前が付けられていることを知る方法はありません。
非常に強力なデータベース(8,000万レコード程度)があるため、スコアリングシステムをある程度使用できます。私はそれを使用するアルゴリズムを設計していますが、他の参照を探しています。
解決
残念なことに、この作業のかなりの部分を自分でやったので、理想的なアルゴリズムは非常にデータ固有であり、特定の状況ではこれを解決する必要があります。
このアルゴリズムを開発するための総時間と努力のうち、時間はおおよそ次のように分割されると思います:
- 一般的な文字列操作の10%
- 30%の特定の性質 データ(メキシコの名前の形式、データ入力の癖)
- データ品質/不足に対応するために60% 品質
そして、それは一般的な文字列操作に対して非常に寛大だと思います。もちろん、すべてのレコードの品質結果が必要か、「クリーン」レコードのみが必要かによって異なります。「難しい」レコードを無視できる場合は、より簡単になります。
一般的なヒント
- 不要な場合は、英数字以外の空白文字を削除してください
- スペースで分割
- ハイフン/句読点を使用して姓または姓を識別する
- 初期(一般的にシングル 文字)は姓ではありません。すなわち彼ら 最初/中間でなければなりません
- プログラムで各名前を特定した自信のレベルを決定します(これを徹底的にテストします)。個別に提供する必要のある類似のパターンを含むデータのサブセットがある場合があります(それらは異なるソースなどから提供される場合があります)
他のヒント
チェックするには、自然言語または機械学習を追加する必要がある場合があります。著者名(科学論文など)を特定する問題は、異なる順序、略語の程度、省略などで報告される可能性があるため困難です。