7

私は人々のデータベースの重複排除に取り組んでいます。最初のパスとして、文献に記載されているように、データベース全体で O(n^2) 操作を回避するために、基本的な 2 段階のプロセスに従っています。まず、データセット全体を「ブロック」し、名前に含まれる n グラムとイニシャルに基づいて各レコードをビンに入れます。次に、Jaro-Winkler を使用してビンごとのすべてのレコードを比較し、それらが同一人物である可能性を測定します。

私の問題-名前はUnicodeです。これらの名前の一部 (多くはありませんが) は CJK (中国語-日本語-韓国語) 言語です。これらの言語でイニシャルなどの単語の境界を見つける方法がわかりません。名前が 2 文字になる可能性がある言語の名前に対して n-gram 分析が有効かどうかはわかりません。また、このコンテキストで文字列編集距離または他の類似性メトリックが有効かどうかもわかりません。

言語学者のプログラマーやネイティブ スピーカーからのアイデアはありますか?

4

3 に答える 3

2

中国語の場合、ほとんどの名前は 3 文字で構成されます。最初の文字は苗字 (!)、残りの 2 文字は個人名
です。毛沢東 = 姓の毛沢東と個人名の沢東のように。2文字の名前もあり、1文字目が姓、2文字目が人名です。4 文字の名前はまれですが、分割は通常 2 対 2 です。

これを見ると、中国人の名前の n-gram 分析を行うことはあまり意味がありません。最も一般的な中国人の姓名/個人名は何かを調べているだけです。

于 2012-04-06T12:19:35.353 に答える
1

そのため、2 グラム スタイルのマッチングを行うことは、日本語で検索を行うための一般的なハックですが、単語の境界を決定するために使用できるより良い方法があります。私が過去に取り組んだプロジェクトでは、日本のブランド名やその他のテキストのmecabでかなり良い結果が得られました。日本語の名前のリストでトレーニングすることで、より良いパフォーマンスが得られると思います。残念ながら C でしたが、JNI を介して Java で使用することになりました。Python コードで同様のことを行うことができます。

于 2012-04-05T21:44:33.493 に答える