name-divider

これはなに

姓名の分割されていない日本人の人名をそれっぽく分割するのに挑戦したもの。

教師データとしてネットで得られた4万件くらいの人名データを入れて、99%程度の精度になった。

準備するもの

日本人の名前がたくさんあるテキストファイル

姓名がタブ文字で分割された状態の1行1名がひたすら書かれているutf-8のテキストファイルが必要。

ファイルの中身は以下のようなものを期待する。 (\tはタブ文字)

織田\t信長
豊臣\t秀吉
徳川\t家康

サンプルとして、疑似個人情報データ生成サービスで10件生成したファイルを置いているが、そもそも疑似だしサンプル数が圧倒的に足りないので自分でなんとか用意すること。

使い方

map file の作り方

元の姓名のテキストデータを python から使いやすい形に変換する。

姓名のファイルを1文字ずつ分割したテキストに変換

$ python tsv2chars.py names.tsv > chars.tsv

1文字ずつのテキストからpythonソースファイルに変換

$ python chars2py.py chars.tsv > chars_map.py

独自プログラムからの使い方

  • 生成された chars_map.pydivider.py を同じディレクトリに配置
  • import divide して (fist_name, last_name) = divider.divide(name) のように利用

test.py を参照。