Fione 13.7.0のリリース

Fione 13.7.0をリリースしました。他にもまだ実装したかったものもあるのですが、h2o-3が次のバージョンがリリースされてしまっていたり、定期リリースは必要かなと思ったり、とかでリリースした感じです。今回のリリースではPythonモジュールがいろいろと追加したので、画面上からデータフレームの操作がいろいろとできるようになりました。あとはテキストをトークナイズすることもできるようになり、Word2Vecも実行することができるようになっています。任意のPythonを追加できるようになったので、helloworld.templateを参考に.pyファイルを作成して、システムからモジュールのアップロード実行することで追加されます(Fione>AutoMLでメニューに表示されるようになる)。

という感じで、今回はPythonモジュールを増やしましたが、もっと増やしていきたいとは考えています。まだドキュメントがないけど、興味がある方は作ってみてもらえると嬉しいです。次のリリースでは、実行したモジュール群を繋げてパイプライン実行できるようなバッチをダウンロードできるような機能を提供したいと考えています。これがあれば、Fioneでポチポチと画面で実行した内容をバッチ処理化できるようになるので、別なシステムに組み込んだりがしやすくなるかと考えています。

h2o-3で日本語のトークナイズ

h2o.aiのH2OFrameにtokenizeがあるけど、これは正規表現で区切って、単語分割を実現してくれる。がしかし、日本語だと全く持って役に立たない…。でも、日本語を何とかしたい、でググってもPythonの世界にデータを持ってきて処理したりするのはあるがイマイチ期待する解決策でもない…。

ということで、どうしたものかと思い、Fione環境であればElasticsearchもあるので、ElasticsearchのAnalyze APIを用いて、単語分割を実現することにした。Fione環境だと、さらにFessの設定も使えるので、japanese_analyzerとかもあるので、これを呼べるようにすれば解決なわけである。

H2OFrameに新たなメソッドを生やすのも面倒なので、既存のtokenizeにtokenize:elasticsearch:urlみたいな文字列を渡されたら、ElasticsearchのAnalyze APIを呼んで、単語分割することにした。ということをやってくれるElasticsearchTokeinzerパッチがこれ

という感じで、これで、Python側にデータを持ってこないで、h2oのMRTaskの世界で処理ができるようになったので、ひとまず、解決。これで、Fioneで日本語をWord2Vecできるようになったはず。(素のh2oで使う場合は別途elasticsearchを用意するか、tokenizerをそんな感じで作るかかな…)

Fione 13.6.3のリリース

Fione 13.6.3をリリースしました。細かい課題はまだいろいろとある気がしますが、定期的に区切りの良いところでリリースしながら改善していければということでリリースしました。

今回は次に繋がるPython統合を行ったことで、大幅な進化を遂げたと思います。任意のPythonスクリプトを追加して、拡張を行えるようになったので、どんどんPythonスクリプトが追加されていけば、画面からポチポチするだけで、機械学習を適用していくことができると思います。今のところは、K MeansとGLRMを実行するスクリプトを追加してあるので、AutoMLページにいけば、選択して実行することができます。ドキュメントとかはこれから少しずつ増やしていければと思います。

UIまわりも地道に整理してきていますが、直感的でないところは継続して改善していければと思っています。まぁ、概念的にわかりにくいところをどのように整理していくかという感じではありますが…。

という感じではありますが、クイックスタートあたりから試していっていただければと。

FioneでPython連携

Fioneでh2o-3との連携にはREST APIを使っていたのだけど、データフレーム操作の細かいことをやろうとすると、謎が多いRapidsのエンドポイントを使う必要があり、データフレームの加工が厳しい状態だった。ということで、FioneからPythonを実行して、Python経由でh2o-3連携をすることにした。(基本的な操作は引き続きREST APIを使う予定) 汎用定期にしておきたいなー、と思い、ここにあるような感じで、Pythonファイルを置くことで、Fione(Java)からPythonコマンドを実行する。必要なパラメータ等はFioneがiniファイルを作成して、設定を渡すので、それに合わせて処理すればOK。一応、Fioneの画面上から実行したいので、画面上の入力項目はそのpyファイルを引数なしで実行してprint_module()のようなJSONを出力することで、Fioneの画面に入力欄が表示され、それがiniファイルとしてPythonの実行時に渡される感じ。なので、入力項目を含めてpyファイルに書いておけば、Fioneの画面上に表示されるので、Pythonファイルで任意の機能が追加できるようになる。

という感じで、拡張性が格段にました感じですが、今までFioneを本番環境での運用にどのように組み込んで利用すればよいか、という悩みがあったのですが、Python連携ができるようになったことで、本番環境のバッチ的なフローに関しては、このpythonファイルとiniファイルを取得できればh2o-3と直接やりとりができるので、問題が解決できる感じです。なので、Fioneで画面上でポチポチやって分析・開発して、運用環境へはpyとiniファイルを引き渡すことで、スムーズに一連の流れを進めることができるようになるはず。

もう少し手直ししたら、リリースしよう…。

fione.codelibs.orgの更新

Fioneのサイトですが、Fessと同じ感じでSphinxベースで作っていたのですが、見た目を変えたいから、一新したいなーと思っていたときに、Eclipse Theiaのサイトを見ていてこんなサイトにしたいな、何で生成しているのだろうと思って調べたら、GatsbyJSで作られていたので、Fioneでも利用することにしてみました。

とはいえ、ドキュメントのところはMarkdownで書きたいなと思ったら、想定している感じのことをやっているサイトがあったので、それをベースにさせてもらいました。順調に作業していたところ、参考にしたサイトがGatsby V1ベースだったので、移行手順とかを見つつ、移行する羽目に…。Reactで作ったことなかったので、思った以上に時間がかかってしまった気もしますが、ひとまず、サイトのリニューアルができました。

Fessの場合は、商用でPDFのマニュアル生成とかにも利用しているので、Sphinxのままになると思いますが、Fioneは今っぽい仕組みにはなったと思うので、地道に更新していきたいと思います。