いっきのblog

技術とか色々

技術ブログ

Genderize.ioを使って性別判定してみる

以前、顔写真を使って性別判定についての検証をした。 顔写真による性別判定はそこそこ判定が高くすごく満足しているのだが、顔がない場合の判定はどうすればいいんだろうと思い、ちょい調べてみた。 kzkohashi.hatenablog.com 名前による判定 Genderize.io…

DataFrameで特定カラムでユニークに集計する方法

DataFrameで特定カラムでユニークに集計する方法についてのメモ。 利用するデータ 今回利用するデータは、一つのアカウントに対して、複数の本のタイトルが紐づいてるデータとする。 df[['account_id', 'title']] 本のタイトルがいくつ紐づいてるか集計する…

Python(pandas)でざっくりデータを確認する方法

原さんのブログ読んでいたら、データの傾向を見る方法について簡単に書かれていたので真似したみた。 toohsk.hateblo.jp 結論から言うと、確かに傾向を見るのはすごく楽だし、癖にしたい。 要約統計量の確認 実はブログを見る以前に、「ヒストグラム」と「要…

Scrapy + Selenium + Headless Chromeを使ってJupyterからスクレイピングする

以前Scrapyを利用してみたが、Jupyterで使えないのか調べて見たのと、ついでにHeadlessブラウザでスクレイピングできないかも調べてみた。 kzkohashi.hatenablog.com Selenium + ChromeDriverのインストール Seleniumはいつものpipでインストールする。 pip …

Scrapyのスクレピングが簡単すぎて今更感動した話

僕はPHPでスクレイピングする時はGoutteを使っていた。 github.com サッやりたい時とかは便利だったりするが、robots.txtの中身だったりの確認やページング処理については自分で実装が必要なため手間だなと思っていた。 ふと最近Pythonをよく使ってるし、ス…

Think Stats(第2版)を読む:5章 分布をモデル化する

前回に続いて統計の勉強。 kzkohashi.hatenablog.com 今まで扱った分布は経験分布(empirical distributions)と呼ばれているもので、すべて実際の観察に基づいた分布だったからとのこと。 そうなると、標本サイズはデータサイズが限界となり、有限となる。 ま…

Laravelで特定のページに特定のユーザー以外が入ってきたら404を返す

管理画面を作っていると、一般ユーザーにはアクセスされたくないページが出てくる。 セキュリティを考えるとIP制限などが理想だったりするが、Laravelで簡単に解決したい場合があるので今回はそちらのやり方でやってみる。 カラムの追加とミドルウェアの準備…

Think Stats(第2版)を読む:4章 累積分布関数

前回に引き続き統計のお勉強。 kzkohashi.hatenablog.com PMFの限界 前回、PMF(確率質量関数)を用いて、一人めの子供の妊娠周期(濃い青)と二人め以降の子供の妊娠期間(水色)を確率にして棒グラフで表示した。 このように、PMFは値の個数が少ない時(ここでい…

TF-IDFとコサイン類似度を使って似ている文章を見つける

今回は、以前実装したTF-IDFの処理をベースに、自分のブログに一番近いWikipediaの文章は何かをコサイン類似度を使って出してみる。 kzkohashi.hatenablog.com コサイン類似度とは? 高校の数学でやったようなやってないようなうる覚えな感じだったので、他…

形態素解析ツールについてのまとめのまとめ

以前、形態素解析を行う際にMeCabをインストールした。 kzkohashi.hatenablog.com 恥ずかしながら、僕は日本語の形態素解析 = MeCabと思っていたが、実は他にも結構あったのでメモがてらまとめてみる(随時)。 正直、僕の知識ではほとんどまとめられなかっ…

Jupyter Labをもっと快適にするためにvim Extensionを追加する

以前Jupyter Labを導入してから使い続けている。 kzkohashi.hatenablog.com ただ、僕はエセvimmerなので若干使いにくいなーと思っていたところ、Jupyter Labには様々なExtention(拡張機能)を追加できるというのを知った。 ちなみにJupyterからこの機能はあっ…

word2vecの理論ついてざっくり理解しつつ試してみる

4、5年前くらいに自然言語処理コミュニティで流行ったword2vecというものがある。 「同じ文章にある単語同士は近しい」という仮定のもと、様々な文章を計算することによって100〜200次元(調整次第)の空間に各単語を「ベクトル」で表せるというもの…

Think Stats(第2版)を読む:3章 確率質量関数

前回の続き。(100日ぶり) kzkohashi.hatenablog.com 3章:確率質量関数 PMF 確率質量関数のことは英語でPMF(probability mass function)という。 各値ごとに確率が計算され、紐づけられている状態。高校の頃、あるサイコロの目がどの確率でるか・・とやっ…

Jupyter Notebookの後継?Jupyter Labをつかってみた

自然言語の処理をする際に、JupyterNotebookと言われるノートブック形式のWebツールを使っている。 jupyter.org 以下のようにPythonのコードを書きながらメモもとれ分析の実行結果(勿論グラフも)もみれるというすぐれものだ。このツールが最初に出たかはわ…

Wikipediaからコーパスを作る

前回、文章を単語分割するためにMeCabをインストースルしたが、大元となるデータ(コーパス)も欲しい。Wikipediaでは全文データをダウンロードすることができるので、それを利用する方法について書いていきたいと思う。 kzkohashi.hatenablog.com コーパス…

文章の単語分割を行うためにMeCabをインストールする

日本語の自然言語処理をやっていく上で、よく使われているであろうMeCabのインストールを行う。 そもそも前処理はなんぞやというと、いい例があったので引用させていただく。 引用:自然言語処理における前処理の種類とその威力 初心者の自分にとってはこんな…

Think Stats(第2版)を読む:2章

前回の続き。 kzkohashi.hatenablog.com 2章: ヒストグラム 分析する上で、データ全体の傾向だったり、方針を決める際には必ずと言ってやると思われるデータの可視化。その中で、データの分布をみるためのヒストグラムについて書かれた章。 ヒストグラムの表…

Laravelでメール送信する際にSendGridを使う

自社のサービス(Laravel)では、メールを送信する際にはSMTPの仕組みを利用している。 グーグルのメールアドレスなどもっていればLaravelのデフォルトの機能でサクッと作れるのだが、送信する際に毎回認証を挟んでいるので、処理に時間がかかったり、大量に捌…

LaravelにSentryを導入してアプリのエラー監視を楽にする

サーバーの監視をするためにMackerelを導入をして1ヶ月くらいたった。時折なるアラートになんだか嬉しさを感じつつ(ダメだけど)、そろそろアプリのエラー監視もしっかりやらないとと思ってSentryを導入した話。 kzkohashi.hatenablog.com Sentryとは? オ…

Think Stats(第2版)を読む:1章

最近、統計処理について詳しくなろうと考えていたところThink Stasをオススメされたので、メモがてら勉強した事を書いていこうと思う。(今回は1章のみ内容) Think Stats 第2版 ―プログラマのための統計入門 | Allen B. Downey, 黒川 利明, 黒川 洋 |本 | 通…

React + GoogleAnayticsでページトラッキングする

React+ GoogleAanayticsでトラッキングをするにはライブラリがあるのでそれを使う。 github.com スター数も1000超えてるし、React + GAでなら一番人気かと思う。 インストールする際のバージョンに注意 react-gaには2.3.4において、初回のイベント以外は送信…

LaravelでJSON Web Tokenを使った認証方法

Laravel + Reactでサービスを構築した場合に、APIによる認証方法としてJSON Web Token(JWT)を使った例を紹介しようと思う。 JSON Web Tokenとは? ネットわかりやすく書いてあったので引用させていただくと JWT(ジョット)とは JSON Web Token の略で、電子…

Laravel Meetup Tokyo Vol.10で「Laravelを始めてからDDDを実践するまで」について発表してきた

どうも、くずき(@kzkohashi)です。 先日「Laravel Meetup Tokyo Vol.10」で発表してきたのでその内容と他の方の発表について書いていこうと思う。 laravel-meetup-tokyo.connpass.com 発表資料 Laravelを始めてからDDDを実践するまでの過程について書いた内…

Laravelでバリューオブジェクトのみを実装する

どうも、くずき(@kzkohashi)です。 今回はDDDにおける、バリューオブジェクトをLaravelでどう表現するかについて書きたいと思います。 なぜバリューオブジェクト? DDDを学んでいる中で、実際にどうやったら実装に落とし込めるだろうか?って考えたときに、…

Laravelでリポジトリーパターンを実装して見た感想

どうも、いっき(@kzkohashi)です。 Laravelを使い始めて1年くらいたちそうなので、いくつか試している実装パターンの感想でも書こうと思う。 今回は、Repositoryパターンについて書く。 ---追記--- リポジトリーパターンを採用しつつバリューオブジェクトに…

LaravelのMacroを使ってBuilderに機能を追加する方法

どうも、くずき(@kzkohashi)です。 先日、正しいJSON APIのフォーマットにするために以下のライブラリを導入した。 github.com paginateは正しいクエリーパラメーターを取っていない 恥ずかしながら最近知ったのだが、Eloquentで使用しているpaginateは、完…

キカガクで機械学習を学んだことを振り返る(~機械学習における流派の違い~)

どうも、くずき(@kzkohashi)です。 知り合いのエンジニアが、去年からブログを毎月20くらい書いてて、フォロワーも何倍も増え、毎月のPVも1万くらいあるみたいで継続は力なりだなと思う今日頃ごろ。 2017年の4月ごろ、キカガクがやっている、機械学習の初級…

CircleCI2.0でDocker Composeをキャッシュする

どうも、くずきです。 以前、CircleCI2.0を試しました。 kzkohashi.hatenablog.com CircleCI2.0を使って見たものの、せっかく色々機能があるのに使えてなかったので、今回はWorkflowsを使ってDocker Composeのキャッシュを利用したいと思います。 目標 Workf…

Laravelで日ごとに変わるランダムなソートをする

どうも、くずきです。 こないだ、セールスの方からリストの表示をランダムでだせないのかというご要望がありまして、実装してみた話です。 DB側でランダムで出す 基本的にソートはSQL側で行なっているため、なるべくDB側でできないかな〜と思ってたらありま…

Pretty Result PrinterでPHPUnitのテストを見やすくする

どうも、くずきです。 今日は、PHPUnitを見やすくるPretty Result Printerを紹介したいと思います。 Pretty Result Printerとは そもそも今のPHPUnitは結果が見辛かったりします。 PHPUnit 5.7.26 by Sebastian Bergmann and contributors. ................…