y_uti のブログ

統計、機械学習、自然言語処理などに興味を持つエンジニアの技術ブログです

『言語処理 100 本ノック』に PHP で挑む (問題 06 ~ 09)

『言語処理 100 本ノック』に PHP で挑戦しています。今回は問題 06 から第一章の残りを解いていきます。前回の記事で解いた問題 05 では n-gram という概念が登場しましたが、今回の問題には言語処理特有の話題はなく、いずれも単純なプログラミングの問題…

『言語処理 100 本ノック』に PHP で挑む (問題 05)

『言語処理 100 本ノック』に PHP で挑戦しています。今回は問題 05 を解きます。 www.cl.ecei.tohoku.ac.jp 05. n-gram 与えられたシーケンス(文字列やリストなど)からn-gramを作る関数を作成せよ.この関数を用い,"I am an NLPer"という文から単語bi-gr…

『言語処理 100 本ノック』に PHP で挑む (問題 00 ~ 04)

東北大学の乾・岡崎研究室のウェブサイトで、『言語処理 100 本ノック』という問題集が公開されています。実践的なプログラミングの課題に取り組みながら自然言語処理の知識を習得できる、全 100 問の問題集です。 www.cl.ecei.tohoku.ac.jpプログラミング言…

anyenv + phpenv + php-build が便利すぎる件 (勉強会発表資料)

第 103 回 PHP 勉強会で、表題のツールを用いて複数の PHP のバージョンを共存させる方法について発表しました*1。 anyenv + phpenv + php-build が便利すぎる件 from y-uti www.slideshare.net以前は、anyenv がインストールする phpenv には多少の手直しが…

MATLAB の bsxfun に親しむ

1 月から 3 月にかけて Coursera の機械学習コースを受講しましたが、毎週の課題として提出したプログラムの中で、MATLAB の bsxfun 関数を利用する機会が何度かありました。bsxfun 関数を利用すると、ある種の処理をループに頼らず効率的に記述できます。今…

RFC: "var" deprecation (勉強会発表資料)

PHP の RFC として提案された "var" deprecation について、第 102 回 PHP 勉強会 の懇親会 LT で発表しました。発表資料を公開します*1。 RFC: "var" Deprecation from y-uti www.slideshare.net"var" というキーワードは、PHP 4 でクラスのプロパティ定義…

PHP カンファレンス福岡 2016 に参加しました

5/21 (土) に開催された、PHP カンファレンス福岡 2016 に参加しました。4 月の PHP カンファレンス北海道に続いての参加になります。今年は、この後も 7/16 (土) に大阪、11/3 (木・祝) に東京で開催予定ですが、北海道でスタンプラリーの台紙を受け取った…

PHP 7 の新機能の紹介 (社内勉強会の発表資料)

勤め先の社内勉強会で、PHP 7 で新たに導入された機能について紹介しました。発表資料を公開します。前半では PHP 7.0 で導入された機能について、後半では PHP 7.1 で導入されることになる機能について、それぞれ構文の拡張にあたる内容を中心にピックアッ…

Coursera の機械学習コースを受講しました

Andrew Ng 先生による Coursera の機械学習コースを受講しました。受講期間は 1/25 から 4/17 でしたが、少しずつ前倒しして進めた結果、3/20 に終えることができました。 www.coursera.org機械学習の基本的なアルゴリズムをざっと学べる内容で、数学的に平…

PHP で非配列変数の添字を指定して代入したときの挙動

4/21 (木) に、PHP BLT #4 という勉強会が開催されていました。 phpblt.connpass.com私は残念ながら都合が合わず参加できなかったのですが、参加された方々のツイートで以下のようなコードが話題になっていました*1。

オフラインリアルタイムどう書く E02 のプログラム実行時間

「オフラインリアルタイムどう書く E02」というイベントに参加しました。与えられた問題を解くプログラムを 1 時間の制限時間で実装するというものです。今回の問題と、各参加者の実装へのリンク集は、それぞれ以下にあります。 http://nabetani.sakura.ne.j…

PECL のモジュールを数えてみた (勉強会発表資料)

PECL に登録されているモジュールの統計情報について、PHP BLT #3 で発表しました。発表資料を公開します。 PECL を数えてみた from y-uti www.slideshare.netPECL のウェブサイトから情報を収集して、登録モジュール数の推移*1や、ソースコードの行数とテス…

ロジスティック回帰のコスト関数を眺める

先月から、Andrew Ng 先生による Coursera の機械学習のコースを受講しています。各週 1 コマの分量になるように構成されていて、動画による説明を聴き、その週の範囲に関する宿題を提出しながら進めていく形式です。現在、第 3 週のロジスティック回帰まで…

PHP BLT #2 に参加しました

1/13 (水) に、PHP BLT #2 に参加してきました。主催、会場は株式会社メルカリさんです。LT 発表枠とオーディエンス枠のどちらも抽選で埋まる人気イベントでしたが、「まとめブログ書く枠」は先着順になっていて、私は抽選を避けてこちらの枠で参加させても…

k-means 法と DBA で時系列データをクラスタリングする

前回の記事で紹介した DBA を利用することで、DTW を距離尺度として、時系列データに k-means 法を適用できます。そこで今回は、これまでの記事でも利用してきた台風の経路情報を題材に、k-means 法による時系列データのクラスタリングを試してみました。下…

DTW Barycenter Averaging で時系列データの平均を求める

DTW Barycenter Averaging (DBA) の手法を用いて、時系列データの平均を求めてみます。前回の記事*1と同様に台風の経路情報を題材として、複数の台風の経路の「平均」を計算しました。結果は以下のとおりです。気象庁のウェブサイト*2で公開されているデータ…

k-medoids 法と DTW による時系列データのクラスタリング

過去の台風の経路情報を題材として、k-medoids 法による時系列データのクラスタリングを試してみました。距離の尺度には、以前の記事*1でも試した Dynamic Time Warping (DTW) を利用しました。K-medoids 法と DTW については、それぞれ Wikipedia に説明が…

PHP の配列を操作する

PHP Advent Calendar 2015 - Qiita の 12/22 の記事が話題になっていました。このアドベントカレンダーは毎日チェックしているのですが、通勤前に読んで、これは盛り上がるだろうな、と思いながら夕方に再度アクセスしたところ案の定という展開で、寄せられ…

php-build をカスタマイズして使う

以前このブログでも紹介したことがありますが、php-build というビルドツールが便利で、愛用しています。phpenv と php-build を組み合わせて使うことで、複数のバージョンの PHP を共存可能な形でインストールし、切り替えて使うことができます。バージョン…

PHP の echo と print の違い (闇)

この記事は、闇PHP Advent Calendar 2015 の 7 日目として書いたものです。qiita.com PHP 7.0.0 がリリースされたので改めてオペコードを眺めていたところ、次のように欠番があることに気付きました。 #define ZEND_ASSIGN_REF 39 #define ZEND_ECHO 40 #def…

PHP プログラムのファイルサイズと抽象構文木のノード数の分布

PHP7 で利用できる php-ast 拡張モジュールを導入して、PHP のプログラムのファイルサイズと抽象構文木のノード数の関係をプロットしてみます。PHP7 では、プログラムを実行する際、構文解析の結果を抽象構文木 (Abstract Syntax Tree) の形にして、それから…

続パタ 第 3 章「ベイズ決定則」の復習

前回の記事に続き、『続・わかりやすいパターン認識』の例題を実装しながら内容を確認します。今回は第 3 章「ベイズ決定則」です。第 3 章の例題は、前回の記事と同じ設定のコイン投げを題材にして、観測結果 (あるコインを n 回投げて、そのうち r 回が表…

続パタ 2.3 節「ベイズ更新の実験」を試す

『続・わかりやすいパターン認識』の 2.3 節「ベイズ更新の実験」を MATLAB で試してみました。読書会に参加しながら読み進めているのですが、前半部分は残念ながら参加できなかったので、復習の意味で読み直しています。教科書 2.3 節の実験はコイン投げを…

for ループのオペコードで PHP5 と PHP7 の違いを見る

先日の PHP カンファレンス 2015 で、蒋池東龍さんによる「PHP あるあるパフォーマンス対決」という発表がありました。私は当日は他のセッションに参加していたのですが、処理系内部のこのような話には興味があり、後から YouTube で楽しませてもらいました…

PHP Conference 2015 に参加

PHP Conference 2015 に参加してきました。今年は 2000 人を超える参加登録があり、会場の大田区産業プラザ PiO を貸し切っての開催だったようです。PHP の生みの親である Rasmus Lerdorf 氏をはじめ海外からの招待講演も多数あり、何を聴こうか直前まで悩ん…

paiza オンラインハッカソンでコードゴルフに挑戦

paiza オンラインハッカソン Vol. 6+ に挑戦しました。ウェブページはこちらです。 「え、妻が松江?」松江Ruby会議07協賛 回文作成プログラミングコンテスト|POH6+今回は、提出したコードのバイト数が表示されていたためか、どれだけ短いコードで問題を解…

任意の距離関数で k-means 法を実行する

任意の距離関数を用いて k-means 法によるクラスタリングを行うプログラムを作成しました。コードは以下のとおりです。MATLAB で実装しました。fminunc 関数を利用しているため、実行には MATLAB 本体のほかに Optimization Toolbox が必要です。 function […

LDA の逐次学習における活性化

Canini らの論文*1を読んでみました。LDA の逐次学習について述べた論文で、『トピックモデルによる統計的潜在意味解析』の 3.5.2 節は、この論文の方法を説明したものになっています。下記のウェブページで論文の PDF ファイルをダウンロードできます。 JML…

LDA の逐次学習アルゴリズム (勉強会発表資料)

第5回『トピックモデルによる統計的潜在意味解析』読書会で、教科書 3.5 節の「逐次ベイズ学習 - サンプリング近似法の場合 -」を担当しました。発表資料を公開します。 逐次ベイズ学習 - サンプリング近似法の場合 - from y-uti www.slideshare.netスライド…

Hartigan-Wong のアルゴリズムを確認する

R の stats パッケージで提供されている kmeans 関数は、既定では Hartigan-Wong のアルゴリズムを利用します。通常の k-means (Lloyd のアルゴリズム) では、各データ点を最も近いクラスタに割り当てる操作を繰り返しますが、Hartigan-Wong の方法はより直…