いっきのblog

技術とか色々

2023年振り返り

ひっさびさにかく。 Stockr開発メンバーと一緒にふりかえり Advent Calendar 2023の24日目!だいぶ遅くなってしまってすみません。 話すトピック 6年間CTOやっていた会社をやめて、フリーランスになった コーチングを学び始めた 自分のやりたいことを見つけ…

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からこの機能はあっ…

TF-IDFを自力実装してみる

前回ライブラリーを使って実装しようとして断念した「TF-IDF」について自力で実装したいと思う。 kzkohashi.hatenablog.com ちなみに上記の記事は、TF値の出し方が間違ってて理解不足だった・・。 一度実装するとしないでは理解度が変わるという教訓。。いや…

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のコードを書きながらメモもとれ分析の実行結果(勿論グラフも)もみれるというすぐれものだ。このツールが最初に出たかはわ…

TF-IDFの理論をざっくり理解する①

最近、自社のプロダクトで自然言語処理がよく使われるようになってきたので、勉強も兼ねてまとめてみる。 TF-IDFとは? tf-idfは、文書中に含まれる単語の重要度を評価する手法の1つであり、主に情報検索やトピック分析などの分野で用いられている。 tf-idf…

Wikipediaからコーパスを作る

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

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

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

ブログが滞っていたことについての反省と2018年半期の振り返り

僕がブログを始めた理由は、去年の9月ごろカック(カカカック)氏と渋谷のゴールドラッシュでハンバーグを食べなら相談したところから始まる。 これがカック(カカカック)氏だ。 twitter.com 当時はまだ社員4人で、エンジニア一人というなかなか刺激的な会…

「フォロワーがどの雑誌に興味があるのか可視化してみる 」について発表した

昨日は「統計やらNight!!データマイニングMeet up #2」に参加して、発表してきた。 ウィルゲートさんの会場もとてもよく、雰囲気も懇親会の時間が多めなのもとてもよかった。 data-konekone.connpass.com 他の方々の発表はまだあげれないみたいなので、上げ…

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

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

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

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

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

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