どうも、nippa です。
膨大なテストデータを生成するために、人名のデータセットを使ってみようと思います。
今回試してみるのは、names-datasetになります。
README を見る限り、結構充実してるように思います。
このデータセットは Facebook からリークされた情報から生成されていますが、個人が特定できません。
ライセンス部分には、一般的には”名前の一覧”には著作権はないとのことですが、必要なら弁護士に確認取ってねと書かれてます。
環境
ライブラリのインストール
- pip インストール
pip install names-dataset
- poetry インストール
poetry add names-dataset
依存関係は pycountry のみです。
使い方
データセットを初期化して、名前の検索、データの詳細確認、国ごとの名前を上位から表示ができます。
コードを見る限り、他の使い方はなさそうです。
名前の検索
from names_dataset import NameDataset, NameWrapper # データセットの初期化 nd = NameDataset() # 名前の検索 print(nd.search("Taro"))
結果 (整形済)は以下のようになります。
{ "first_name": { "country": { "France": 0.05, "United Kingdom": 0.063, "Hong Kong": 0.046, "Iraq": 0.031, "Italy": 0.059, "Japan": 0.463, "Malaysia": 0.091, "Netherlands": 0.044, "Singapore": 0.041, "United States": 0.112, }, "gender": {"Female": 0.11, "Male": 0.89}, "rank": { "United Kingdom": 9740, "Hong Kong": 6121, "Japan": 156, "Malaysia": 13690, "Netherlands": 7182, "Singapore": 7227, "France": None, "Iraq": None, "Italy": None, "United States": None, }, }, "last_name": { "country": { "France": 0.106, "India": 0.054, "Italy": 0.147, "Japan": 0.038, "Morocco": 0.059, "Malaysia": 0.439, "Nigeria": 0.03, "Saudi Arabia": 0.036, "Singapore": 0.032, "United States": 0.059, }, "gender": {}, "rank": { "India": 9676, "Japan": 1748, "Malaysia": 4161, "Singapore": 6564, "France": None, "Italy": None, "Morocco": None, "Nigeria": None, "Saudi Arabia": None, "United States": None, }, }, }
日本での first_name で 156 位と表示されています。first_name で性別の割合も出てます。
名前を Wrapper して詳細表示
NameWrapper を使うと、
print(NameWrapper(nd.search("Taro")).describe) # 出力 Male, Japan
Taro は日本人男性というような形で表示されます。
国別の名前ランキング
日本人の男性トップ 5 を表示します。
print(nd.get_top_names(n=5, gender='Male', country_alpha2='JP')) # 出力 (整形済) { "JP": { "M": [ "Takashi", "Hiroshi", "Yusuke", "Daisuke", "Akira", ] }, }
日本の男女トップ 3 をそれぞれ表示すると、
print(nd.get_top_names(n=3, country_alpha2="JP")) # 結果(整形済) { "JP": { "M": ["Takashi", "Hiroshi", "Yusuke"], "F": ["Yuki", "Yuka", "Yuko"], }, }
のようになります。
フルデータセット
インストール時は、50MB 程度のファイルしかないためフルデータを利用する場合は、
Github の README のフルデータセットのダウンロードからデータをダウンロードして、ライブラリの中の
names_dataset/v3/
に配置すればフルサイズ(2.3GB)で利用できます。
ただし、50MB でも実行時間が少しかかるので、フルサイズは時間がかかることが予想されるのでご注意ください。
感想
データセットから、ランダムで人名生成するときには使えそうなライブラリです。
テストデータ生成などで役に立ちそうです。
ではでは、また次回。