読者です 読者をやめる 読者になる 読者になる

プロクラシスト

みんなのProcrastination(先延ばし、回り道)を少しでも有意義に。

MENU

【日本版MNIST】江戸時代の古典くずし字データセットが面白そう

機械学習関連 技術ログ

こんにちは!ほけきよです٩( ᐛ )و

こんな記事を発見!!

internet.watch.impress.co.jp

NII(国立情報学研究所)が、くずし字のデータセットを公開したようです

今回は、その内容について詳しく紹介します

この記事を読むだけで

  • どういうデータなの?
  • サンプルコードどうやって動かすの?

がわかるので、興味がある方は是非

なんのデータなの?

現在収録されているのは下記の古典籍。いずれも料理のレシピ本みたいな感じです

f:id:imslotter:20161119231052p:plain

2016年11月現在、日本古典籍字形データセットの規模は、 日本古典籍データセットの8点の画像データから切り取った くずし字1,521文字種の字形データ86,176文字です(文字種のリスト)。 2016年度中には約40万字に規模を拡大する計画ですので、どうぞご期待下さい。

ほう、ということは料理本意外もそのうち出てくるのかな??期待です

どういうデータなの?人間編

料理本、原本をスキャンしたやつを見ることができます。例えばさっきの画像の一番上にある「当世料理」

当世料理 | 日本古典籍字形データセット

ここの,『 デジタル画像の閲覧(IIIF Curation Viewer)』というところで,原本のスキャンが見れます.こんな感じ

f:id:imslotter:20161119231535p:plain

よ、読めぬい...

でも大丈夫、そんな人のために,人間用学習データまで用意してくれています

すごい...!作った人たちの温かみを 画面越しに感じます!!!

f:id:imslotter:20161119231854p:plain

これは『そ』だけをまとめたやつ.ほらほら,たまにお蕎麦やさんの暖簾に謎の文字あるでしょ?これ『きそば』と読むんですよ!(最近読めるようになった)

f:id:imslotter:20161120002105j:plain

どういうデータなの?機械編

もちろん、機械学習用のデータセットなので、それ用のデータもございます

ダウンロード

f:id:imslotter:20161119232350p:plain

この一番上のところからデータセットを落としましょう。

中身

ファイルの構成は下記画像

f:id:imslotter:20161119232828p:plain

  • 200021637_coordinate.csv
    こんな感じのデータが入っている
    f:id:imslotter:20161119232928p:plain
    どうやら,対象の文字と原本を対応させているもののようだ

  • 200021637_report.csv
    読めなかった単語のリストとその理由のよう

  • characters
    一文字一文字切り抜いた,温もり溢れる画像データ

  • images
    原本の画像

サンプルコードの使い方(手順説明)

なんと、大盤振る舞いであらかじめ画像認識のプログラムを配布してくれています!

下ページの最下部からサンプルコードを取得できます

書名一覧 | 日本古典籍字形データセット

必要な3つのモジュール

Keras

使っているのはKerasにあるMNISTのExampleコードのままらしい. なので,使うにはKerasをまずインストールしましょう.

pip install keras

でOK!

OpenCV

no module cv2

と怒られた.opencvがいるようだ.

macのhomebrewの人は↓コマンドでOKです

brew tap homebrew/science
brew install opencv

h5pyのインストール

HDF5形式のファイルの読み書き(train_test_file_listがこの形式)に必要

pip install h5py

でOK

英語が苦手な人のため、Readmeを噛み砕く

あとはReadmeを読めばいいのですが、それもめんどいという人のために、READMEを要約(読める人はちゃんと読んでね)

  • 使い方
    • python run.pyで実行
    • 基本的な設定をいじりたければconfig.pyをいじってね
    • データのロードのところをいじりたければload.pyをいじってね
  • 何をやっているか
    • もっともたくさん使われている文字10個を集めている(train_test_file_list.h5に入っている.全部で23423枚の画像)
    • 10個の文字を正しく分類できるか
    • データセットをtraining用85%とtest用15%に分割
    • 画像を28*28にする→グレースケールにする
    • Deeeeeeep Learningで学習する

python run.py した

学習の結果。へえ〜Kerasってこんな感じで学習過程も見られるのね、分かりやすい

f:id:imslotter:20161120001248p:plain

  • lossとaccが,training用データの損失誤差と精度
  • val_lossとval_accがtest用データの損失誤差と精度

94%で当てられるって。もうこれでいいやん...!

データ量が少ない文字でどうなるかが気になるところですね!狙うならそういう領域な気もします。

まとめ

昔から古文書とかには興味があって、俺得なデータセット様なので、 今後自分で改良して色々とやってみたいなと思ってます。

個人的にはVAEとかの生成モデルを使って、古典〜現代の字の変遷とか見れたら面白そうだな〜とか妄想中

皆さんもこの記事をよめば使えるはず! 是非是非使ってみてください!ではでは٩( ᐛ )و

関連書籍(ディープラーニングの実装系)

Chainerによる実践深層学習

Chainerによる実践深層学習