Open masayuki14 opened 2 years ago
issue から何やるか探す。
https://github.com/red-data-tools/red-datasets/issues
あたりが良さそうかなと思った。
青空文庫にしよう。
とりあえずRepository をclone して動かし方見てみる。
とりあえずFork
clone
ghq get masayuki14/red-datasets
ruby は最新の 3.0.2
にしておこう。
rbenv install 3.0.2
結構時間かかるぜやばい。さきにやっておけばよかった。 っていうか 2.7 でいいか。
rbenv local 3.0.2
rbenv rehash
ruby -v
yeah
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.
らしいぞ。
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
とりあえず動いたからこれでいいのかしら。
example/
ディレクトリのコードをうごかす。
lib/
ディレクトリをLOADPATHに追加してやれば動く。
% ruby -I lib example/iris.rb
やるべきこと。
lib/datasets/
に青空文庫のClassを追加test/
にテストを追加余力があったら(相談して)
example/
にサンプルコード追加かなぁ。
How to contribute 的なドキュメントもあったほうがよいだろうなぁ。
Datasets::Dataset
クラスは基底クラスだから見ておく。initialize()
で @metadata
を設定each()
DLしたデータにBlockを受け取ってまわしてる。ってあたりは基本的な要素として実装すればいいっぽい。
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/
拡充版とは?
CIFARみたいにどちらも選べるように実装するのが良さそう。
Metadataのdescription の実装は lambda わたせるようにってことかぁ。なるほど。
データのダウンロードには 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にして読み込めばいい。 解答したデータはメモリで持つ(キャッシュ)ようにしたほうが良いかな。
https://docs.ruby-lang.org/ja/latest/class/Zlib=3a=3aGzipReader.html
標準ライブラリでGzipReaderはあるんだけどなー。
postal-code-japan でも zip を扱っておる。
これこのまま同じコードでいいか、という感じ。
"\xEF" from ASCII-8BIT to UTF-8 (Encoding::UndefinedConversionError)
エラー出た。
BOM付きUTF8である。
csv_file_stream.read.force_encoding(Encoding::UTF_8)
bom付きUTF8の指定ほうほうがわからんので、force_encoding にした。
test 単体で動かしたいけど。。。
% ruby -I lib -I test -rhelper test/test-aozora-bunko.rb
これでいける。
https://spdx.org/licenses/ ライセンスのフォーマットはこれ
プロジェクトにさんかする。
https://red-data-tools.github.io/ja/ https://gitter.im/red-data-tools/ja