masayuki14 / worklog

Record working log by issues.
MIT License
0 stars 0 forks source link

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

Open masayuki14 opened 2 years ago

masayuki14 commented 2 years ago

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

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

masayuki14 commented 2 years ago

issue から何やるか探す。

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

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

masayuki14 commented 2 years ago

青空文庫にしよう。

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

masayuki14 commented 2 years ago

とりあえずFork

masayuki14 commented 2 years ago

clone

ghq get masayuki14/red-datasets
masayuki14 commented 2 years ago

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

rbenv install 3.0.2
masayuki14 commented 2 years ago

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

masayuki14 commented 2 years ago
rbenv local 3.0.2
rbenv rehash
ruby -v

yeah

masayuki14 commented 2 years ago
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 commented 2 years ago

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 commented 2 years ago

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

% ruby -I lib example/iris.rb
masayuki14 commented 2 years ago

やるべきこと。

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

かなぁ。

masayuki14 commented 2 years ago

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

やっていくぞ。

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

masayuki14 commented 2 years ago

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

masayuki14 commented 2 years ago

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

masayuki14 commented 2 years ago

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 commented 2 years ago

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

ここんとこにあった。

masayuki14 commented 2 years ago

拡充版とは?

masayuki14 commented 2 years ago

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

masayuki14 commented 2 years ago

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

masayuki14 commented 2 years ago

データのダウンロードには 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 commented 2 years ago

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

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

masayuki14 commented 2 years ago

https://github.com/red-data-tools/red-datasets/blob/76cc543c78bbeb731df1ba74031a62a59a47b3a8/red-datasets.gemspec#L39

rubyzip はいっている!!

masayuki14 commented 2 years ago

https://www.rubydoc.info/github/rubyzip/rubyzip/Zip/File

masayuki14 commented 2 years ago

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

masayuki14 commented 2 years ago

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

masayuki14 commented 2 years ago

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

エラー出た。

masayuki14 commented 2 years ago

BOM付きUTF8である。

masayuki14 commented 2 years ago
csv_file_stream.read.force_encoding(Encoding::UTF_8)

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

masayuki14 commented 2 years ago
masayuki14 commented 2 years ago

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

masayuki14 commented 2 years ago
% ruby -I lib -I test -rhelper test/test-aozora-bunko.rb

これでいける。

masayuki14 commented 2 years ago

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