いっきのblog

技術とか色々

技術ブログ

TensorFlow2.0とTensorFlowHubを使ってみる

TensorFlow2.0のbetaが出てたので、試してみる。 TensorFlowとは? TensorFlow(テンソルフロー)とは、Googleが開発しているOSSの機械学習のライブラリ。Googleはもちろんアルファ碁で有名になったDeepMindでも使われている。 対応言語は、Python, C, C++, Ja…

GoでAtCoder(競技プログラミング)やってみる

最近Goを勉強して行く上で、アルゴリズムの勉強も同時にしながらできないかなーと思い、競技プログラミングというアルゴリズムのコンテストはどっちも満たせると信じ、始めて見た。 今回はAtCoderと言われる、日本製のコンテストサイトでやってみる。 以下の…

GoroutineとChannelについて学ぶ

前回Goのインタフェースについて書いた。 kzkohashi.hatenablog.com (アイキャッチが更新されてない・・) 今回はGoの真髄とも言える、ゴルーチンとチャネルによる並行処理(Concurrent)について学んでいく。 並行(Concurrent)処理と並列(Parallel)処理 間違え…

Goのインタフェースについて学ぶ

以前初めてGoに触った感想をまとめたが、インタフェースについては書いてなかったのでまとめる。 kzkohashi.hatenablog.com インタフェースの定義 A Tour of Goの内容をベースに話していく。 go-tour-jp.appspot.com インターフェースの定義は以下のように、…

LaravelerがGoを初めてさわって見る

ここ最近LaravelかPythonしか書いてないので、技術のアップデートをしよう思ったのがきっかけ。 なぜGoなのかと言われると、以下の理由で決めて見た。 Laravel(PHP)が動的型付け言語なので、静的型付け言語を学び直したい 流行っている風のものをやりたいた…

Laravel ShiftでLaravelを簡単アップグレード!

Laravel #2 Advent Calendar 2018の11日目です! 今回は、Laravelのアップデートのやり方について書きたいと思います。 バージョンをあげる時の課題 僕らのチームは元々Laravelのバージョンを5.5を使っていて、そろそろあげたいよねって話をしてました。 た…

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を学んでいる中で、実際にどうやったら実装に落とし込めるだろうか?って考えたときに、…