webpack入門_Getting Started

このところのjavascriptは発展が著しくECMAscript6が出たりAngularやReact,vueといったフレームワークが登場しています。新規の開発であればこれらの導入を検討しても良さそうですがビルドツールなどの環境整備の情報がまとまっていなかったりしてその分敷居が高くなっているような気がします。
最近はVue.jsが人気のようですがクライアントツールであるvue-cliを使った開発環境の構築が容易であったりしてその分敷居が低くなっているのにも助けられているように思っています。
今回は代表的なビルドツールであるwebpackの公式ドキュメントを触りながら試してみたいと思います。

事前にnodeとnpmはインストールしておく必要があります。

続きを読む

Pyhonでアフィン変換をつかって2次元の画像を回転、平行移動させる

座標(x,y)のピクセルをアフィン変換で回転させる場合、変換後の座標(x', y')は以下の式で表すことができます。
f:id:steavevaivai:20180715125722p:plain

それからx軸にx_t, y軸にy_t平行移動も加える場合、は以下の式になります。 f:id:steavevaivai:20180715125738p:plain

これをPythonで実装する場合、変換対象の画像が2次元の配列で表せられるのであれば以下のようになります。

続きを読む

PythonでCannyエッジを検出してみる

画像から枠線を取り出す手法としてエッジ検出について、代表的な手法としてCannyエッジ検出が有ります。Cannyエッジ検出の方法は以下の資料で確認できます。
http://www.cse.iitd.ernet.in/~pkalra/col783/canny.pdf http://www.massey.ac.nz/~mjjohnso/notes/59731/presentations/img_proc.PDF
OpenCVを使うのであれば具体的な処理の内容を知らなくても大丈夫かもしれませんが、知っておいて損はないと思いますのでCannyエッジ検出の手法をおさらいしてみたいと思います。

Cannyエッジ検出

Cannyエッジ検出の流れは大きく以下のようになっています。
- ガウシアンフィルタで画像を平滑化
- ソーベルフィルタで勾配の大きさと方向を求める
- 勾配方向と大きさを元に細線化する
- 閾値化でエッジを検出する

続きを読む

Fessで集めた記事に対してPythonで実装したtf-idfを適用して特徴的な単語を取得する

事前作業

まずpythonにelasticsearchのクライアントをインストールします。

pip install elasticsearch

それからFessでWebサイトをクロールさせて記事を収集させます。

$ curl -XGET http://localhost:9201/_cat/indices/fess.20180701\*\?v
health status index         uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   fess.20180701 uclmK-llQcafFyuecoaaaA   5   0        116           21     14.7mb         14.7mb

現在116件の記事が集まっているので、これを使って記事の中から特徴的な単語を集めたいと思います。

続きを読む

Fessのクローラを機械学習に活用するための調査

機械学習のためのデータ収集にFessが使えるのか調査したいと思います。

Fessとは

Javaで作られApacheライセンスで提供されるオープンソース全文検索サーバです。検索エンジンとして以前はApache Solrが使われていましたが、現在ではElasticsearchが使われています。

Fessのインストール

Fessのセットアップは公式の手順で確認できます。
https://fess.codelibs.org/ja/setup.html

  • Javaのインストール
    FessではJavaの1.8以上のランタイムが必要になるので、入ってなければインストールしてJAVA_HOMEに設定を入れておきます。

  • Fessの起動
    Fessはgithubのページのreleaseからzipをダウンロードしてきます。
    https://github.com/codelibs/fess/releases
    ダウンロードしたら解答して中にある"bin/fess"を実行するとFessが立ち上がります。それからブ

ラウザで以下のURLにアクセスするとFessが起動しているのを確認できます。

http://localhost:8080/

管理者ページのURLは以下で初期ユーザのID,PASSWORDはadmin, adminとなります。

http://localhost:8080/admin/

続きを読む

TensorFlowのk平均法で文章をクラスタリングしてみた

TensorFlowのk平均法で文章をクラスタリングしてみた

TensorFlowでスポーツニュースと経済ニュースの文書をクラスタリングしてみたので、その時の手順をまとめてみたいと思います。

今回の大まかな流れとして以下のように進めたいと思います。
- 経済とスポーツのニュースをテキストで保存しておく
- Pythonでファイルを読み込む
- 読み込んだ文章を形態素解析し文書ごとで使われている単語の辞書を作成する
- 全ての文書で指定回数内使われている単語で辞書を作る
- ↑で作成した辞書を使って文書毎でベクトル化してk平均法の入力データを作成する
- TensorFlowでk平均法を実行する
- 文章のクラスタリング結果を表示する

続きを読む

Elasticserachのgetting startedを読んでみた

クラスターとノードについて

Elasticserachはクラスターの構築を想定しています。クラスターはクラスター名で識別し、クラスター内のノードを識別するためのUUIDはクラスター参加時にランダムな値が生成されます。ノード起動時に参加可能なクラスターが存在しない場合、デフォルトのクラスター名である"elasticsearch"でクラスターを自動で作成します。ローカルマシンでノード一つだけで動かす場合は、ノードが参加するデフォルトのクラスター名が"elasticsearch"なのでそれに参加します(シングルノークラスタ)。
クラスターの構築として気になる点としてメタ情報をどこで持ってどう管理しているのかがあると思いますが、以下のドキュメントとやり取りをみて見ると各ノード上のディレクトリ(デフォルトは$ES_HOME/data)にメタデータを保存といった感じなのでしょうか。
https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-node.html
https://discuss.elastic.co/t/where-cluster-metadata-is-stored/44540/12
とりあえずシングルノークラスタで動かしたいと思うのですが、クラスターを構築する場合はHigh Availability化どうするか、負荷分散はどうなるのかなど色々調査して考えなければいけないのかと思います。

続きを読む