21
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

テスト用にダミーデータを用意する手段色々

Last updated at Posted at 2018-09-02

会員制サービスのテストデータとして、いい感じの個人情報を入力したい。
また、クチコミや問い合わせメッセージなど、ある程度長文もダミーで用意したい。
姓名の欄が「あああ あああ」とか「テスト テスト」はやめたい。
実際にありそうなものは本物を使っていると誤解されかねないので、ある程度嘘っぽいのが良いかも

##ダミー個人情報の取得

###本番データを加工

本番データを特定の文字列で置換する。
「山田太郎」→「*田*郎」にする。
「山田太郎」→「黄井田太郎」と苗字だけ変える。
「山田太郎」→「鈴田次郎」とランダムで数文字変える。

ありえない文字が入ってしまっては、現実的ではない。
また、完全に個人情報を隠しきるのは難しいので漏れがある。
そもそも本番データを流用するのは厳しい場合が多い。

数字の連番にする

会員IDもしくは出力順に数字で「山田一郎」〜「山田一二三郎」と振っていく。
この場合、名前が長くなってしまうか。短く切ってしまうとダブりやすくなる。

###Fakerを使う


from faker import Factory
fake = Factory.create('ja_JP')

print(fake.name())
print(fake.last_name())
print(fake.first_name())
print(fake.last_kana_name())
print(fake.first_kana_name())

手軽にできるのがいい
パターンが少ないので被りやすいかも
それぞれランダムなので、氏名のふりがなと漢字が一致しない

###ダミーデータ一覧サービスから取得

以下のようなダミーデータを提供しているサービスからデータを取得する
https://hogehoge.tk/personal/


import pandas as pd
import random

df = pd.read_csv('personal_information.csv') 
# ランダムで行番号を取得
no = random.randint(0, len(df)-1) 
# 2列目 氏名
name = df.iloc[no, 1] 
# 3列目 氏名(カタカナ)
kana_name = df.iloc[no, 2]
print(name)
print(kana_name)

組み合わせが多い
氏名のふりがなと漢字が一致する
ただし、提供されているサービスがいつまであるかわからない
実際にありそうな内容なので、本番データと誤認されるかも

###本番データに見えないデータを使う

実際にありそうな名前を使うと、個人情報が雑に扱われていると誤解される恐れがある。
同姓同名の人がたまたま居て不快に思われるかもしれないので、ありそうにないデータを使う必要が出てくるケースもある。

すごい名前生成器
珍しい名前をランダムで生成してくれる。珍しいけど不自然でない名前を出してくれる。

三国志演義の人物の一覧
総計で1192人でいるらしい。データ量が多いのは良いが、日本の名前とかけ離れているので使い所が難しい。

Category:架空の人物の一覧
著作権問題があるし外には出せないかもしれないが、もしかしたら使うときがあるかもしれない。
<dt>〜</dt>の中に名前がある場合が多い。


import requests
from bs4 import BeautifulSoup

url = "https://ja.wikipedia.org/wiki/%E9%80%B2%E6%92%83%E3%81%AE%E5%B7%A8%E4%BA%BA%E3%81%AE%E7%99%BB%E5%A0%B4%E4%BA%BA%E7%89%A9"
response = requests.get(url)
bs = BeautifulSoup(response.content, "lxml")
items = bs.find_all("dt")

for item in items:
   if  item.string is not None:
    print (item.string)

##ダミー長文の取得

###Fakerを使う


from faker import Factory
fake = Factory.create('ja_JP')

print(fake.text())
print(fake.sentence())

###RSSフィードから取得する


import feedparser
import random
import re

# RSS ページのURL
url = "https://rss.msn.com/ja-jp/"
feed = feedparser.parse(url)
# ランダムで記事を取得する
index = random.randint(0, len(feed.entries)-1)
# 記事タイトル
title = feed.entries[index].title
print(title)
# リンク
link = feed.entries[index].link
print(link)
# 記事
description = feed.entries[index].description
# HTMLタグを除いて出力
print(re.compile(r"<[^>]*?>").sub("",description))




ダミーじゃない文章なので、リアリティがある。
納品物とか第三者に渡すデータには適していない。

青空文庫から取得

青空文庫のような著作権フリーのデータを使う。
取得方法は下記を参考
http://newtechnologylifestyle.net/711-2/

著作権フリーの内容なので安心。
50年以上前の文章なので、日本語の文体がちょっと古い。
マルコフ連鎖と組み合わせて、LoremIpsumのジェネレーターぽく出来るかも。

WikiPediaを利用する手もあるが、第三者に提供する場合は、著作権の確認が必要。
https://webtan.impress.co.jp/e/2014/04/11/16643

英語の情報を丸パクリで和訳するのも
https://sirabee.com/2014/09/03/2404/

21
23
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?