Fakerの紹介

こんにちは、ksr_cyclです。

最近使ったPythonライブラリで面白いものがあったので、それを紹介します。

Faker

Ruby版やPerl版、PHP版は元々あり、それらに影響を受けて、Python版は作られたとのことです。

自分は「特定のエンティティを疑似的に生成したい」、というようなシーンですごく役立ちました。

簡単な機能の紹介をします。


デフォルトは英語ですが、日本語にも対応しています。

日本語として使用する場合は以下のように定義します。

from faker import Faker

faker = Faker(['ja_JP'])


氏名、会社名、住所を生成してみます。

for _ in range(3):
    print(faker.name())
    print(faker.company())
    print(faker.address())
    print()
[output]

後藤 学
佐藤情報株式会社
宮城県武蔵野市台東5丁目16番14号

山本 拓真
石井保険合同会社
京都府大田区日本堤15丁目6番11号 九段南コート380

伊藤 美加子
有限会社中村印刷
北海道東久留米市長間12丁目27番10号 押上シティ985


ジェネレーターのシードを固定することも出来ます。その場合は以下のような使い方になります。

for _ in range(3):
    Faker.seed(42)
    for __ in range(2):
        print(faker.name())
        print(faker.company())
        print(faker.address())
        print()
    print('*' * 50)
[output]

佐藤 淳
株式会社高橋農林
山口県白井市箪笥町3丁目1番3号 アーバン天神島838

伊藤 裕美子
岡田水産株式会社
兵庫県台東区脚折10丁目7番11号 ハイツ前弥六南町155

**************************************************
佐藤 淳
株式会社高橋農林
山口県白井市箪笥町3丁目1番3号 アーバン天神島838

伊藤 裕美子
岡田水産株式会社
兵庫県台東区脚折10丁目7番11号 ハイツ前弥六南町155

**************************************************
佐藤 淳
株式会社高橋農林
山口県白井市箪笥町3丁目1番3号 アーバン天神島838

伊藤 裕美子
岡田水産株式会社
兵庫県台東区脚折10丁目7番11号 ハイツ前弥六南町155

**************************************************


シードを共有せず、個別に分けたい場合は以下のような固定方法もあります。

for i in range(2):
    print(f'\nround {i}\n')
    for j in range(2):
        print(f'set seed: {j}')
        faker.seed_instance(j)
        for __ in range(2):
            print(faker.name())
            print(faker.company())
            print(faker.address())
            print()
[output]

round 0

set seed: 0
前田 舞
有限会社藤原ガス
長野県川崎市宮前区雷門23丁目19番7号 日本堤コーポ219

岡本 結衣
有限会社鈴木農林
静岡県江戸川区南赤田23丁目14番11号 アーバン雷門840

set seed: 1
木村 陽一
有限会社鈴木保険
鳥取県稲城市芝浦14丁目4番16号 轟シティ907

山下 千代
有限会社佐藤水産
山口県我孫子市芝浦14丁目14番1号 コート神明内783


round 1

set seed: 0
前田 舞
有限会社藤原ガス
長野県川崎市宮前区雷門23丁目19番7号 日本堤コーポ219

岡本 結衣
有限会社鈴木農林
静岡県江戸川区南赤田23丁目14番11号 アーバン雷門840

set seed: 1
木村 陽一
有限会社鈴木保険
鳥取県稲城市芝浦14丁目4番16号 轟シティ907

山下 千代
有限会社佐藤水産
山口県我孫子市芝浦14丁目14番1号 コート神明内783

再現性を持たせたい場合等に役に立つと思います。


文章を生成してみます。

for _ in range(5):
    print(faker.paragraph(nb_sentences=3))
[output]

試してみる呼ぶクロスコピーは楽しんで評議会。販売緩む販売編組ブレーキ。
鉱山トス助けてサラダヒット。アクセルペダルトレーナー文言数字。脊椎建築日曜日通行料金今目的。
軸虐待擁するコミュニケーション教授コミュニティ職人。彼品質転倒ささやき催眠術。
狐癌バスケット持ってる持っていました持つブラケットログ。あった大統領証言する探査。普通の中央電池花嫁。
風景パンタワー欠乏評議会試してみる文言。あったサラダデッド副状況。

他国語?な文章も一部生成されていますが、活用方法が何かあるかもしれません。


以上でFakerの紹介を終わります。