Downloading Aozorabunko data and make it a usable corpus

Author

Masaki EGUCHI, Ph.D.

Modified

July 28, 2025

What is aozorabunko?

Let’s download the data from Huggingface

We will use the data from the following repository

Show code
import pandas as pd

df = pd.read_json("hf://datasets/globis-university/aozorabunko-clean/aozorabunko-dedupe-clean.jsonl.gz", lines=True)
Show code
df
text footnote meta
0 深いおどろきにうたれて、\n名高いウェストミンスターに\n真鍮や石の記念碑となって\nすべて... 底本:「スケッチ・ブック」新潮文庫、新潮社\n   1957(昭和32)年5月20日発行\n... {'作品ID': '059898', '作品名': 'ウェストミンスター寺院', '作品名読...
1 いざ、これより樂しまむ、\n仕置を受くる憂なく、\n遊びたのしむ時ぞ來ぬ、\n時ぞ來ぬれば、... 底本:「スケッチ・ブック」岩波文庫、岩波書店\n   1935(昭和10)年9月15日第1刷... {'作品ID': '056078', '作品名': '駅伝馬車', '作品名読み': 'えき...
2 すべてよし。\n何して遊ぼと\n叱られない。\n時はきた。\nさっさと\n本など投げだそう。... 底本:「スケッチ・ブック」新潮文庫、新潮社\n   1957(昭和32)年5月20日発行\n... {'作品ID': '060224', '作品名': '駅馬車', '作品名読み': 'えきば...
3 年老いた人をいたわりなさい。その銀髪は、\n名誉と尊敬をつねに集めてきたのです。\n――マー... 底本:「スケッチ・ブック」新潮文庫、新潮社\n   1957(昭和32)年5月20日発行\n... {'作品ID': '060225', '作品名': '寡婦とその子', '作品名読み': '...
4 だが、あのなつかしい、思い出ふかいクリスマスのお爺さんはもう逝ってしまったのだろうか。あと... 底本:「スケッチ・ブック」新潮文庫、新潮社\n   1957(昭和32)年5月20日発行\n... {'作品ID': '060231', '作品名': 'クリスマス', '作品名読み': 'ク...
... ... ... ...
16946 夢の話をするのはあまり気のきいたことではない。確か痴人夢を説くという言葉があったはずだ。そ... 底本:「和辻哲郎全集 補遺」岩波書店\n   1978(昭和53)年6月16日第1刷発行\n... {'作品ID': '055622', '作品名': '夢', '作品名読み': 'ゆめ', ...
16947 自分は現代の画家中に岸田君ほど明らかな「成長」を示している人を知らない。誇張でなく岸田君は... 底本:「和辻哲郎随筆集」岩波文庫、岩波書店\n   1995(平成7)年9月18日第1刷発行... {'作品ID': '049876', '作品名': '『劉生画集及芸術観』について', '作...
16948 一\n\n 荒漠たる秋の野に立つ。星は月の御座を囲み月は清らかに地の花を輝らす。花は紅と咲き... 底本:「偶像再興・面とペルソナ 和辻哲郎感想集」講談社文芸文庫、講談社\n   2007(平... {'作品ID': '049913', '作品名': '霊的本能主義', '作品名読み': '...
16949 関東大震災の前数年の間、先輩たちにまじって露伴先生から俳諧の指導をうけたことがある。その時... 底本:「和辻哲郎随筆集」岩波文庫、岩波書店\n   1995(平成7)年9月18日第1刷発行... {'作品ID': '049914', '作品名': '露伴先生の思い出', '作品名読み':...
16950 訳者序\n\n 一九〇九年、レオン・ワルラスの七十五歳の齢を記念して、ローザンヌ大... 底本:「純粹經濟學要論 上卷」岩波文庫、岩波書店\n   1953(昭和28)年11月25日... {'作品ID': '045210', '作品名': '純粋経済学要論', '作品名読み': ...

16951 rows × 3 columns

Show code
df['meta'][1]
{'作品ID': '056078',
 '作品名': '駅伝馬車',
 '作品名読み': 'えきでんばしゃ',
 'ソート用読み': 'えきてんはしや',
 '副題': '',
 '副題読み': '',
 '原題': '',
 '初出': '',
 '分類番号': 'NDC 933',
 '文字遣い種別': '旧字旧仮名',
 '作品著作権フラグ': 'なし',
 '公開日': '2013-09-20',
 '最終更新日': '2014-09-16',
 '図書カードURL': 'https://www.aozora.gr.jp/cards/001257/card56078.html',
 '人物ID': '001257',
 '姓': 'アーヴィング',
 '名': 'ワシントン',
 '姓読み': 'アーヴィング',
 '名読み': 'ワシントン',
 '姓読みソート用': 'ああういんく',
 '名読みソート用': 'わしんとん',
 '姓ローマ字': 'Irving',
 '名ローマ字': 'Washington',
 '役割フラグ': '著者',
 '生年月日': '1783-04-03',
 '没年月日': '1859-11-28',
 '人物著作権フラグ': 'なし',
 '底本名1': 'スケッチ・ブック',
 '底本出版社名1': '岩波文庫、岩波書店',
 '底本初版発行年1': '1935(昭和10)年9月15日',
 '入力に使用した版1': '2010(平成22)年2月23日第31刷',
 '校正に使用した版1': '1992(平成4)年2月26日第30刷',
 '底本の親本名1': '',
 '底本の親本出版社名1': '',
 '底本の親本初版発行年1': '',
 '底本名2': '',
 '底本出版社名2': '',
 '底本初版発行年2': '',
 '入力に使用した版2': '',
 '校正に使用した版2': '',
 '底本の親本名2': '',
 '底本の親本出版社名2': '',
 '底本の親本初版発行年2': '',
 '入力者': '雀',
 '校正者': '小林繁雄',
 'テキストファイルURL': 'https://www.aozora.gr.jp/cards/001257/files/56078_ruby_51155.zip',
 'テキストファイル最終更新日': '2013-09-03',
 'テキストファイル符号化方式': 'ShiftJIS',
 'テキストファイル文字集合': 'JIS X 0208',
 'テキストファイル修正回数': '0',
 'XHTML/HTMLファイルURL': 'https://www.aozora.gr.jp/cards/001257/files/56078_51422.html',
 'XHTML/HTMLファイル最終更新日': '2013-09-03',
 'XHTML/HTMLファイル符号化方式': 'ShiftJIS',
 'XHTML/HTMLファイル文字集合': 'JIS X 0208',
 'XHTML/HTMLファイル修正回数': '0'}
Show code
import os

# Set random seed for reproducibility
random_seed = 42

# Sample 1000 files from the dataframe
df_sample = df.sample(n=500, random_state=random_seed)

# Create directory if it doesn't exist
output_dir = "../../../corpus_data/aozora_500"
os.makedirs(output_dir, exist_ok=True)

# Save each text to a file named by 作品ID
for idx, (_, row) in enumerate(df_sample.iterrows()):
    # Get the 作品ID from meta field
    sakuhin_id = row['meta']['作品ID']
    
    # Get the text content
    text_content = row['text']
    
    # Create filename based on 作品ID
    filename = f"{sakuhin_id}.txt"
    filepath = os.path.join(output_dir, filename)
    
    # Write text to file
    with open(filepath, 'w', encoding='utf-8') as f:
        f.write(text_content)
    
    # Print progress every 100 files
    if (idx + 1) % 100 == 0:
        print(f"Processed {idx + 1} files...")

print(f"Completed! Saved {len(df_sample)} text files to {output_dir}")
Processed 100 files...
Processed 200 files...
Processed 300 files...
Processed 400 files...
Processed 500 files...
Completed! Saved 500 text files to ../../../corpus_data/aozora_500
Show code
# Sample 1000 files from the dataframe
df_sample = df.sample(n=50, random_state=random_seed)

# Create directory if it doesn't exist
output_dir = "../../../corpus_data/aozora_50"
os.makedirs(output_dir, exist_ok=True)

# Save each text to a file named by 作品ID
for idx, (_, row) in enumerate(df_sample.iterrows()):
    # Get the 作品ID from meta field
    sakuhin_id = row['meta']['作品ID']
    
    # Get the text content
    text_content = row['text']
    
    # Create filename based on 作品ID
    filename = f"{sakuhin_id}.txt"
    filepath = os.path.join(output_dir, filename)
    
    # Write text to file
    with open(filepath, 'w', encoding='utf-8') as f:
        f.write(text_content)
    
    # Print progress every 100 files
    if (idx + 1) % 100 == 0:
        print(f"Processed {idx + 1} files...")

print(f"Completed! Saved {len(df_sample)} text files to {output_dir}")
Completed! Saved 50 text files to ../../../corpus_data/aozora_50
Show code

df_sample = df

# Create directory if it doesn't exist
output_dir = "../../../corpus_data/aozorabunko"
os.makedirs(output_dir, exist_ok=True)

# Save each text to a file named by 作品ID
for idx, (_, row) in enumerate(df_sample.iterrows()):
    # Get the 作品ID from meta field
    sakuhin_id = row['meta']['作品ID']
    
    # Get the text content
    text_content = row['text']
    
    # Create filename based on 作品ID
    filename = f"{sakuhin_id}.txt"
    filepath = os.path.join(output_dir, filename)
    
    # Write text to file
    with open(filepath, 'w', encoding='utf-8') as f:
        f.write(text_content)
    
    # Print progress every 100 files
    if (idx + 1) % 100 == 0:
        print(f"Processed {idx + 1} files...")

print(f"Completed! Saved {len(df_sample)} text files to {output_dir}")
Processed 100 files...
Processed 200 files...
Processed 300 files...
Processed 400 files...
Processed 500 files...
Processed 600 files...
Processed 700 files...
Processed 800 files...
Processed 900 files...
Processed 1000 files...
Processed 1100 files...
Processed 1200 files...
Processed 1300 files...
Processed 1400 files...
Processed 1500 files...
Processed 1600 files...
Processed 1700 files...
Processed 1800 files...
Processed 1900 files...
Processed 2000 files...
Processed 2100 files...
Processed 2200 files...
Processed 2300 files...
Processed 2400 files...
Processed 2500 files...
Processed 2600 files...
Processed 2700 files...
Processed 2800 files...
Processed 2900 files...
Processed 3000 files...
Processed 3100 files...
Processed 3200 files...
Processed 3300 files...
Processed 3400 files...
Processed 3500 files...
Processed 3600 files...
Processed 3700 files...
Processed 3800 files...
Processed 3900 files...
Processed 4000 files...
Processed 4100 files...
Processed 4200 files...
Processed 4300 files...
Processed 4400 files...
Processed 4500 files...
Processed 4600 files...
Processed 4700 files...
Processed 4800 files...
Processed 4900 files...
Processed 5000 files...
Processed 5100 files...
Processed 5200 files...
Processed 5300 files...
Processed 5400 files...
Processed 5500 files...
Processed 5600 files...
Processed 5700 files...
Processed 5800 files...
Processed 5900 files...
Processed 6000 files...
Processed 6100 files...
Processed 6200 files...
Processed 6300 files...
Processed 6400 files...
Processed 6500 files...
Processed 6600 files...
Processed 6700 files...
Processed 6800 files...
Processed 6900 files...
Processed 7000 files...
Processed 7100 files...
Processed 7200 files...
Processed 7300 files...
Processed 7400 files...
Processed 7500 files...
Processed 7600 files...
Processed 7700 files...
Processed 7800 files...
Processed 7900 files...
Processed 8000 files...
Processed 8100 files...
Processed 8200 files...
Processed 8300 files...
Processed 8400 files...
Processed 8500 files...
Processed 8600 files...
Processed 8700 files...
Processed 8800 files...
Processed 8900 files...
Processed 9000 files...
Processed 9100 files...
Processed 9200 files...
Processed 9300 files...
Processed 9400 files...
Processed 9500 files...
Processed 9600 files...
Processed 9700 files...
Processed 9800 files...
Processed 9900 files...
Processed 10000 files...
Processed 10100 files...
Processed 10200 files...
Processed 10300 files...
Processed 10400 files...
Processed 10500 files...
Processed 10600 files...
Processed 10700 files...
Processed 10800 files...
Processed 10900 files...
Processed 11000 files...
Processed 11100 files...
Processed 11200 files...
Processed 11300 files...
Processed 11400 files...
Processed 11500 files...
Processed 11600 files...
Processed 11700 files...
Processed 11800 files...
Processed 11900 files...
Processed 12000 files...
Processed 12100 files...
Processed 12200 files...
Processed 12300 files...
Processed 12400 files...
Processed 12500 files...
Processed 12600 files...
Processed 12700 files...
Processed 12800 files...
Processed 12900 files...
Processed 13000 files...
Processed 13100 files...
Processed 13200 files...
Processed 13300 files...
Processed 13400 files...
Processed 13500 files...
Processed 13600 files...
Processed 13700 files...
Processed 13800 files...
Processed 13900 files...
Processed 14000 files...
Processed 14100 files...
Processed 14200 files...
Processed 14300 files...
Processed 14400 files...
Processed 14500 files...
Processed 14600 files...
Processed 14700 files...
Processed 14800 files...
Processed 14900 files...
Processed 15000 files...
Processed 15100 files...
Processed 15200 files...
Processed 15300 files...
Processed 15400 files...
Processed 15500 files...
Processed 15600 files...
Processed 15700 files...
Processed 15800 files...
Processed 15900 files...
Processed 16000 files...
Processed 16100 files...
Processed 16200 files...
Processed 16300 files...
Processed 16400 files...
Processed 16500 files...
Processed 16600 files...
Processed 16700 files...
Processed 16800 files...
Processed 16900 files...
Completed! Saved 16951 text files to ../../../corpus_data/aozorabunko