自然言語処理の国際学会 ACL2018 @メルボルンに参加してきました!
Japanese

自然言語処理の国際学会 ACL2018 @メルボルンに参加してきました!

7月10日~15日 で オーストラリアのメルボルンで開催されました 56th Annual Meeting of the Association for Computational Linguistics (ACL2018) に参加してきました。 経緯 ACL は一言で言うと「自然言語処理の世界トップコンファレンス」です。 私は最先端の対話システムはどうなっているのか気になって参加にいきました。今回はトップコンファレンス初参加です。 ACL の日程と構成 日程は以下のと通りです。 7/15 (日) チュートリアル 7/16 (月) ~ 7/

  • Huy Van
    Huy Van
7 min read
TensorFlow

AnacondaによるTensorFlowインストール手順

Anacondaによるインストールは大変楽という噂がありますので試してみました。 AnacondaはデフォルトNumPy、 Pandas、 SciPy、 Matplotlib、 Jupyterなどが入っています。 他のパッケージ、例えばTensorFlow、 OpenCVも簡単にインストールでき、pyenv/virtualenvがいらなくなるのでおすすめです。 環境: Ubuntu 16.04 Anacondaインストール スクリプトダウンロード URL変える可能性があるのでまずHP確認してください。 https://www.continuum.io/downloads#linux $ wget https://repo.continuum.io/archive/Anaconda3-4.2.0-Linux-x86_

  • Huy Van
    Huy Van
1 min read
Machine Learning

最尤推定は何ができるの?

英語: Maximum Likelihood Estimation (MLE) 最近仕事で確率モデルを扱う機会があって、パラメータ推定には最尤推定を使うことがありました。 でもわかるような、わからないような状態なので、式を立てて一度整理したいと思います。 例1 問題 データ $D= { x^{(1)},..., x^{(N)} }$(母集団) が与えられるとします。 このデータが正規分布に従うと仮定したら、最尤推定でパラメータを推定しましょう。 回答 まず正規分布の式です。 $$ p(x) = \frac{1}{\sqrt{2\pi\sigma^2}

  • Huy Van
    Huy Van
3 min read
Japanese

MeCabをLambdaに動かすメモ

絶対忘れるので覚えるうちにメモをとります。 基本的はhttp://dev.classmethod.jp/cloud/aws-lambda-with-mecab/に沿って進めますが、ダウンロードURLが死んだり、pipのインストールパス変わったりしました。 0. Lambdaと同じ環境のEC2インスタンスを作る https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/current-supported-versions.html サポートAMIが時々変わるようなので作るときは必ずチェックしておきましょう。 これからはEC2上に作業します。 LambdaはPython2.7しか使えないのでPython2.7.12を使いました。 1. プロジェクトの作成 $ mkdir

  • Huy Van
    Huy Van
2 min read
MongoDB

MacでMongoDBメモ

機械学習で大量のデータを扱いにはデータベースが欲しくなります。SQLデータベースは設計が面倒なので今回はNoSQLのMongoDBを選択しました。 設定編 インストール $ brew update $ brew install mongodb データベースの保存先のディレクトリを作る $ sudo mkdir -p /data/db $ sudo chown -R 777 /data /data/dbはデフォルトなのでおすすめです。 777は多分危ないかもしれませんので、正しい権限を教えてください :bow: 起動 サーバー $ mongod クライエント $ mongo MongoDB shell version:

  • Huy Van
    Huy Van
1 min read
TIL

MeCabに人名辞書を追加

生成された辞書(バイナリ)はどこでも使えますので、辞書生成はMac側で行います。 インストール $ brew install mecab mecab-ipadic 構成 ## /usr/local/Cellar/mecab └── 0.996 ├── AUTHORS ├── COPYING ├── ChangeLog ├── INSTALL_RECEIPT.json ├── NEWS ├── README ├── bin │   ├── mecab │   └── mecab-config ├── include │   └── mecab.h ├── lib │   ├── libmecab.2.

  • Huy Van
    Huy Van
2 min read
TIL

Elasticsearchのbool queryを利用してAND OR NOTを書いてみる

※ この記事をQiitaにも載せました! 初めてElasticsearchのクエリをビルドしたのでいろいろハマりました。SQLの世界観とちょっと違っていて、なれるまで時間がかかると思います。でも、なれたら複雑な検索条件をSQLより簡単に書けるかも知れません。 では、Elasticsearchの基礎クエリの一つ、Bool Queryを解説してみます。 Bool Queryについて Elasticsearch 2.0からandクエリとorクエリは全部非推奨になり、その代わりにboolクエリの方が推奨されます。Boolクエリは複数のクエリを組み合わせる(つまりAND、OR、NOTで結合)のに使います。 Boolクエリは4種類があります:must、 filter、 should、 must_ notです。 クエリ 説明 must ANDとして使います。小クエリは総合スコアに影響を与えます

  • Huy Van
    Huy Van
2 min read
Machine Learning

Coursera 機械学習 - プログラミング課題8解答例

ソースコード: https://github.com/vanhuyz/coursera-ml/tree/master/machine-learning-ex8/ex8 概要 今回の課題は2パートに分かれています。前半は異常検出アルゴリズム(anomaly detection)を用いて障害が発生したサーバーを検出、後半は映画おすすめシステムを作ります。 1. 異常検出 サーバーは2つのフィーチャーがあります:レスポンスのスループット(mb/s)とレイテンシ(ms)です。m = 307 examplesのデータがあって、その中少し異常点があります。 1.

  • Huy Van
    Huy Van
4 min read
Machine Learning

Coursera 機械学習 - プログラミング課題6解答例

ソースコード:https://github.com/vanhuyz/coursera-ml/tree/master/machine-learning-ex6/ex6 0. 概要 今回の課題はSupport Vector Machines(SVM)を使って迷惑メールを識別することです (spam classifier)。パート1はSVMをいろいろ試すのと、パート2は迷惑メールの課題になります。 1. Support Vector Machines (SVM) SVM with Gaussian Kernels Gaussian

  • Huy Van
    Huy Van
4 min read
Machine Learning

Coursera 機械学習 - プログラミング課題4解答例

解答例:https://github.com/vanhuyz/coursera-ml/tree/master/machine-learning-ex4/ex4 概要 今回の課題は前回と続き手書き数字の判定問題です。前回はニューラルネットワークで、与えられたパラメータからフィードフォワード・プロパゲイションを行うところまででした。今回はbackpropagationアルゴリズムを使って、パラメータを抽出することです(学習過程)。 1. ニューラルネットワーク 1.1 データを可視化 5000学習データがあり、各データは20x20ピックセルグレースケールの数字画像です。 1.2 モデル表現 ニューラルネットワークは3つのレイヤーがあります:input layer, hidden

  • Huy Van
    Huy Van
6 min read
Machine Learning

Coursera 機械学習 - プログラミング課題2解答例

課題について 今回の課題はLogistic Regression(分類)に関するものです。 https://www.coursera.org/learn/machine-learning/programming/ixFof/logistic-regression ソースコードはgithubに上げました。 https://github.com/vanhuyz/coursera-ml/tree/master/machine-learning-ex2/ex2 問題1 Logistic regressionモデルで学生の過去の2つテスト結果から大学入試に合格・不合格を予測します。 学習データは以下の図の通りです。+は合格、◯は不合格です。 1.

  • Huy Van
    Huy Van
4 min read
Machine Learning

Coursera 機械学習 - プログラミング課題1解答例

課題のページ https://www.coursera.org/learn/machine-learning/programming/8f3qT/linear-regression プログラミング課題はちょっと重いので今回の解答例を上げます。 わからないことや別の解答がありましたらコメントをお願いします。 必須課題 1. Computing Cost (for One Variable) Gradient DescentのCost function $J(\theta)$ は以下の通り $$ J(\theta) = \frac{1}{2m}\sum_ {i=1}

  • Huy Van
    Huy Van
4 min read
TIL

メンテナンス本格入門のまとめ

メンテナンスは必要? メンテナンスなんてない方がよい それでも行う必要があるとき 歴史的かつ技術的な負債 作業難度のトレードオフ メンテナンスの種類 計画メンテナンス 事前に計画し、ユーザー告知を行って作業を行う。これに当たる主だった作業としては ハードウェアの保留/入れ替え データベースの設定変更 ネットワークの保留 手順: 作業手順作成 事前準備:Sorryサーバーの準備 テスト環境での予行演習 作業実施:作業チェック、問題発生時の対処 確認作業:モニタリング、作業の振り返り 緊急メンテナンス 障害が発生した場合などに原因を解決/追求品ケラバサービス継続が難しい場合などに行う。内容は 障害復旧 障害の現状保存 障害の詳細調査 手順

  • Huy Van
    Huy Van
1 min read
TIL

Fluentd導入してからエラーログを全部Slackに通知する

やりたいこと サーバーが落ちるときすぐ管理者に通知する 設計イメージ Fluentdで全部のエラーログをまとめてSlackに送信する。 Fluentd導入 Fluentdとは ログ収集ミドルウェアである。Fluentdにインプットされた、すべてのログをJSONに変換し、アウトプットする。 Fluentdのインストール (Ubuntu 14.04) 事前準備 ntpをインストールする $ sudo apt-get install ntp ファイルディスクリプタの上限を増やす 現在のファイルディスクリプタ数を確認 $ ulimit -n 1024 もし1024なら不十分なので上限を増やす。/etc/security/limits.conf に以下の行を追加する root soft

  • Huy Van
    Huy Van
1 min read
TIL

MySQLで大量のデータを挿入して、SELECTパーフォマンスを比較する

大量のデータを扱う機会があるため、データが非常に多いときMySQLのパフォーマンスはどうなるかを検討した。 検討するテーブル: 検討したいquery: SELECT * FROM activity_records WHERE date BETWEEN '2014-01-01' AND '2014-04-10'; なのでdateコラムにindexをつけた。このテーブルに5億ぐらいのレコードがあるとき、レスポンス時間はどのぐらいなのか検討したい。 環境: SSD: 256GB テーブルに5億レコードを挿入する この記事は大変参考になりました:Mass inserting data in Rails without killing your performance 単純の(5*

  • Huy Van
    Huy Van
2 min read
TIL

API開発用必要なGemのまとめ(2015/08更新)

初めてRailsプロジェクトに入ったとき、Gemfileを見ても全くわからなかった。Rails初心者のため必要なGemをまとめました。良いGemを発見したらどんどん更新していこうと思います。 2015/08/13時点 データベース関連 mysql2 MySQLアダプタ MySQLを使うなら必須 redis Ruby client library for Redis cache, session保存用 ar-octopus レプリケーション (master+slave管理) switch_point (※ 2015/08/13追加) ar-octopusの代替。機能はar-octopusまで高くないが、master+slave切り替えぐらいなら十分 paranoia

  • Huy Van
    Huy Van
2 min read
TIL

Docker経由Swagger UIを入れてみた

はじめに 目的:SwaggerUIを開発環境に入れて、Railsと組み合わせたい Railsのswagger-ui gemもありますが、あれはSwaggerUIが古い。最新版のSwaggerUIを使いたい。 手動で構築するのがちょっと面倒だから、Dockerを使って入れてみた 作業 Docker HubにSwagger UIを探してこういうイメージを見つけた https://registry.hub.docker.com/u/capoferro/swagger-ui/ capoferro / swagger-ui Simple docker container to serve the Swagger UI インストールする方法は以下となります

  • Huy Van
    Huy Van
1 min read
TIL

Docker + Figを使ってRailsの開発環境を構築する

前回はDockerで構築したアプリを使うのを述べました。今回は実際どうやってそのRailsアプリを構築するのかを紹介します。 構築したい環境 Ruby 2.2 Rails 4.2.0 MySQL Redis シナリオ 以上の条件でコンテナを3つ準備します。 web : Railsアプリ。もちろんRubyが入ってるので今回はofficial ruby imageをベースにコンテナを作ります db : official MySQL imageを採用します redis: official Redis imageを採用します 気づいたのは使った3つのofficial imagesは全部Debian (Ubuntuと似ているLinux OS)

  • Huy Van
    Huy Van
2 min read
TIL

魔法のDockerを使ってみよう

前回はDockerをインストールするまで記述しました。今回は実際Dockerで構築したRailsアプリを動かしましょう。 前提 Mac OS Xにboot2dockerが起動された状態、またはLinuxにDockerインストール済み 作業 まずFigというコンテナ管理ツールをインストールします $ curl -L https://github.com/docker/fig/releases/download/1.0.1/fig-`uname -s`-`uname -m` > /usr/local/bin/fig; chmod

  • Huy Van
    Huy Van
1 min read
TIL

Dockerをインストールする(Yosemite編)

Docker導入する理由 開発環境を一気構築できる コンテナ型仮想化なので軽い Vagrant/Chefより学習コストが低い 小さいコンテナから構成されるので安定性が高まる Amazon EC2 Container Serviceが発表されたから本番構築でも可能に! Yosemiteにインストールしてみよう インストール方法は非常に簡単です。 Boot2dockerパッケージをダウンロードする ダウンロードしたパッケージをダブルクリックしてインストールする Boot2Dockerアプリを起動する どのターミナルにも使いたい場合は以下のコマンドを~/.bash_profileに追加する $(boot2docker shellinit) 終わり! 参考:公式サイト Boot2dockerを分解してみよう ではBoot2dockerは何が入っているのかを調べてみた。 VirtualBox:仮装化ソフトウェア Boot2Docker:小さいLinuxベースOS。DockerはLinuxベースで動作するから、Macに動作する場合は仮装マシンが必要。インストールできたらboot2docker-vmがVirtualBoxに入っているはず

  • Huy Van
    Huy Van
1 min read