どうも、nippa です。
膨大なテストデータを生成するために、人名のデータセットを使ってみようと思います。
今回試してみるのは、names-datasetになります。
README を見る限り、結構充実してるように思います。
このデータセットは Facebook からリークされた情報から生成されていますが、個人が特定できません。
ライセンス部分には、一般的には”名前の一覧”には著作権はないとのことですが、必要なら弁護士に確認取ってねと書かれてます。
環境
ライブラリのインストール
pip install names-dataset
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 でも実行時間が少しかかるので、フルサイズは時間がかかることが予想されるのでご注意ください。
感想
データセットから、ランダムで人名生成するときには使えそうなライブラリです。
テストデータ生成などで役に立ちそうです。
ではでは、また次回。