Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RedDataTools の red-datasets にデータセットを追加する #23

Open
masayuki14 opened this issue Sep 15, 2021 · 32 comments
Open

Comments

@masayuki14
Copy link
Owner

プロジェクトにさんかする。

https://red-data-tools.github.io/ja/
https://gitter.im/red-data-tools/ja

@masayuki14
Copy link
Owner Author

issue から何やるか探す。

https://github.com/red-data-tools/red-datasets/issues

  • DBPediaJapanese
  • AozoraBunko

あたりが良さそうかなと思った。

@masayuki14
Copy link
Owner Author

青空文庫にしよう。

とりあえずRepository をclone して動かし方見てみる。

@masayuki14
Copy link
Owner Author

とりあえずFork

@masayuki14
Copy link
Owner Author

clone

ghq get masayuki14/red-datasets

@masayuki14
Copy link
Owner Author

ruby は最新の 3.0.2 にしておこう。

rbenv install 3.0.2

@masayuki14
Copy link
Owner Author

結構時間かかるぜやばい。さきにやっておけばよかった。
っていうか 2.7 でいいか。

@masayuki14
Copy link
Owner Author

rbenv local 3.0.2
rbenv rehash
ruby -v

yeah

@masayuki14
Copy link
Owner Author

bundle install
Post-install message from rubyzip:
RubyZip 3.0 is coming!
**********************

The public API of some Rubyzip classes has been modernized to use named
parameters for optional arguments. Please check your usage of the
following classes:
  * `Zip::File`
  * `Zip::Entry`
  * `Zip::InputStream`
  * `Zip::OutputStream`

Please ensure that your Gemfiles and .gemspecs are suitably restrictive
to avoid an unexpected breakage when 3.0 is released (e.g. ~> 2.3.0).
See https://github.com/rubyzip/rubyzip for details. The Changelog also
lists other enhancements and bugfixes that have been implemented since
version 2.3.0.

らしいぞ。

@masayuki14
Copy link
Owner Author

test 実行する

% bundle exec rake
/Users/morisaki/.rbenv/versions/3.0.2/bin/ruby test/run-test.rb
Loaded suite test
Started
adult.names - 100.0% [  5.23KB/  5.23KB] 00:00:00  76KB/s
adult.test - 100.0% [  2.00MB/  2.00MB] 00:00:00 484KB/s
adult.data - 100.0% [  3.97MB/  3.97MB] 00:00:00   5KB/s
communities.data - 100.0% [  1.10MB/  1.10MB] 00:00:00  15KB/s
communities.names - 100.0% [ 27.18KB/ 27.18KB] 00:00:00  23KB/s
t10k-images-idx3-ubyte.gz - 100.0% [  4.42MB/  4.42MB] 00:00:00  62KB/s
t10k-labels-idx1-ubyte.gz - 100.0% [  5.15KB/  5.15KB] 00:00:00  54KB/s
train-images-idx3-ubyte.gz - 100.0% [ 26.42MB/ 26.42MB] 00:00:00 235KB/s
train-labels-idx1-ubyte.gz - 100.0% [ 29.52KB/ 29.52KB] 00:00:00  12KB/s
hepatitis.data - 100.0% [  7.54KB/  7.54KB] 00:00:00  68KB/s
hepatitis.names - 100.0% [  3.10KB/  3.10KB] 00:00:00  26KB/s
iris.data - 100.0% [  4.55KB/  4.55KB] 00:00:00  46KB/s
iris.names - 100.0% [  3.00KB/  3.00KB] 00:00:00  29KB/s
datasets - 100.0% [ 34.65KB/ 34.65KB] 00:00:00  51KB/s
binary.html - 100.0% [ 45.64KB/ 45.64KB] 00:00:00  53KB/s
a1a - 100.0% [114.82KB/114.82KB] 00:00:00  65KB/s
a1a.t - 100.0% [  2.22MB/  2.22MB] 00:00:00  65KB/s
multiclass.html - 100.0% [ 25.48KB/ 25.48KB] 00:00:00  38KB/s
regression.html - 100.0% [  8.46KB/  8.46KB] 00:00:00  46KB/s
multilabel.html - 100.0% [ 12.89KB/ 12.89KB] 00:00:00  80KB/s
train-exp1.svm.bz2 - 100.0% [ 14.00MB/ 14.00MB] 00:00:00  81KB/s
abalone - 100.0% [258.70KB/258.70KB] 00:00:00  47KB/s
t10k-images-idx3-ubyte.gz - 100.0% [  1.65MB/  1.65MB] 00:00:00 303KB/s
t10k-labels-idx1-ubyte.gz - 100.0% [  4.54KB/  4.54KB] 00:00:00  49KB/s
train-images-idx3-ubyte.gz - 100.0% [  9.91MB/  9.91MB] 00:00:00 195KB/s
train-labels-idx1-ubyte.gz - 100.0% [ 28.88KB/ 28.88KB] 00:00:00  61KB/s
agaricus-lepiota.data - 100.0% [373.70KB/373.70KB] 00:00:00  20KB/s
agaricus-lepiota.names - 100.0% [  6.82KB/  6.82KB] 00:00:00  66KB/s
dataviewer - 100.0% [ 23.76KB/ 23.76KB] 00:00:00  12KB/s
dataviewer - 100.0% [ 11.26KB/ 11.26KB] 00:00:00  91KB/s
dataviewer - 100.0% [ 18.87KB/ 18.87KB] 00:00:00  14KB/s
ken_all.zip - 100.0% [  1.69MB/  1.69MB] 00:00:00 114KB/s/s..
ken_all_rome.zip - 100.0% [  1.76MB/  1.76MB] 00:00:00 120KB/s
ken_all.zip - 100.0% [  1.69MB/  1.69MB] 00:00:00  26KB/s
wine.data - 100.0% [ 10.78KB/ 10.78KB] 00:00:00 127KB/s
wine.names - 100.0% [  3.04KB/  3.04KB] 00:00:00  34KB/s
.
Finished in 154.717525 seconds.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
118 tests, 154 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
0.76 tests/s, 1.00 assertions/s

とりあえず動いたからこれでいいのかしら。

@masayuki14
Copy link
Owner Author

example/ ディレクトリのコードをうごかす。
lib/ ディレクトリをLOADPATHに追加してやれば動く。

% ruby -I lib example/iris.rb

@masayuki14
Copy link
Owner Author

やるべきこと。

  • lib/datasets/ に青空文庫のClassを追加
  • test/ にテストを追加

余力があったら(相談して)

  • READMEの更新
  • example/ にサンプルコード追加

かなぁ。

@masayuki14
Copy link
Owner Author

おっけー、これで準備は整った。

やっていくぞ。

red-data-tools/red-datasets#46

@masayuki14
Copy link
Owner Author

How to contribute 的なドキュメントもあったほうがよいだろうなぁ。

@masayuki14
Copy link
Owner Author

  • Datasets::Dataset クラスは基底クラスだから見ておく。
  • initialize()@metadata を設定
  • each() DLしたデータにBlockを受け取ってまわしてる。

ってあたりは基本的な要素として実装すればいいっぽい。

@masayuki14
Copy link
Owner Author

https://www.aozora.gr.jp/guide/kijyunn.html

 あなたは、図書カードや書架情報(作家別作品一覧CSVファイル)のデータを、ダウンロードして利用することができます。
 データは、有償・無償であるかを問わず、データベースや読書ソフトウェアにおける書誌情報として、活用できます。
 こうしたデータは、「クリエイティブ・コモンズ 表示 2.1 日本 ライセンス」のもとで提供いたします。

どこだ?


ライセンスは
表示 2.1 日本 (CC BY 2.1 JP)
https://creativecommons.org/licenses/by/2.1/jp/

@masayuki14
Copy link
Owner Author

https://www.aozora.gr.jp/index_pages/person_all.html

ここんとこにあった。

@masayuki14
Copy link
Owner Author

拡充版とは?

@masayuki14
Copy link
Owner Author

CIFARみたいにどちらも選べるように実装するのが良さそう。

@masayuki14
Copy link
Owner Author

Metadataのdescription の実装は lambda わたせるようにってことかぁ。なるほど。

@masayuki14
Copy link
Owner Author

データのダウンロードには Datasets::Downloader クラスでやってる。
ダウンロード先はキャッシュのディレクトリで cache_dir_path でえられる
cache_dir_path + 'aozora.zip' な感じで指定すればいい。
んでURLで指定してダウンロード

      data_path = cache_dir_path + 'normal.zip'
      unless data_path.exist?
        data_url = 'https://www.aozora.gr.jp/index_pages/list_person_all_extended_utf8.zip'
        data_url = 'https://www.aozora.gr.jp/index_pages/list_person_all_utf8.zip'
        download(data_path, data_url)
      end

つぎはこいつを解凍してCSVにして読み込めばいい。
解答したデータはメモリで持つ(キャッシュ)ようにしたほうが良いかな。

@masayuki14
Copy link
Owner Author

https://docs.ruby-lang.org/ja/latest/class/Zlib=3a=3aGzipReader.html

標準ライブラリでGzipReaderはあるんだけどなー。

@masayuki14
Copy link
Owner Author

@masayuki14
Copy link
Owner Author

@masayuki14
Copy link
Owner Author

postal-code-japan でも zip を扱っておる。

@masayuki14
Copy link
Owner Author

これこのまま同じコードでいいか、という感じ。

@masayuki14
Copy link
Owner Author

"\xEF" from ASCII-8BIT to UTF-8 (Encoding::UndefinedConversionError)

エラー出た。

@masayuki14
Copy link
Owner Author

BOM付きUTF8である。

@masayuki14
Copy link
Owner Author

csv_file_stream.read.force_encoding(Encoding::UTF_8)

bom付きUTF8の指定ほうほうがわからんので、force_encoding にした。

  • レビューで見てもらう。

@masayuki14
Copy link
Owner Author

  • 項目数が多い
  • 項目名を英訳するのが大変

@masayuki14
Copy link
Owner Author

test 単体で動かしたいけど。。。

@masayuki14
Copy link
Owner Author

% ruby -I lib -I test -rhelper test/test-aozora-bunko.rb

これでいける。

@masayuki14
Copy link
Owner Author

https://spdx.org/licenses/
ライセンスのフォーマットはこれ

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant