iMind Developers Blog

iMind開発者ブログ

Pythonからgitの操作

w## 概要 gitの操作をPythonから実行してみる。 cloneしてdiffを見てbranch切ってcheckoutしてcommitしてpushするまでを実行。 バージョン情報 Python 3.7.3 GitPython==2.1.11 インストール $ pip install GitPython clone import git # urlは適宜自身が編…

弊社技術ブログのPV推移(2019年度)

概要 2019年の1月にブログの投稿を始めてからおよそ1年が経つので、その間の記事数やPVの推移、検索ワード等について確認する。 ブログの内容 扱っている内容は主にプログラミング関連の備忘録やTIPS。 頻出のカテゴリは下記。 カテゴリ 記事数 python 58 py…

GoogleアナリティクスからPythonでレポートを取得する

概要 アクセス数等をGoogleアナリティクスからPythonで取得する。 導入 pip install --upgrade google-api-python-client 参考サイト https://developers.google.com/analytics/devguides/reporting/core/v4/quickstart/installed-py 前提条件 Googleアナリ…

IBM CloudのPersonality Insightsを使う

概要 Personality Insightsはツイートなどのテキストから書いた人の分析をします。 具体的にはビッグファイブ(知的好奇心、誠実性、外向性、協調性、感情起伏)の分析や、ミュージカル映画を好む、楽器の演奏経験がある等の分析結果が取れる。 価格 価格は…

Pythonでgoogle.protobuf.message.Messageをjsonに変換する

概要 GCPのAPIを使っているとprotobuf形式で結果が返ってくることがあるけど、そのままだと扱いづらいケースもあるのでJSONに変換する方法を確認する。 バージョン情報 protobuf==3.10.0 サンプルデータ 公式サイトによく出ているサンプルデータを生成して利…

pandasからSQLiteのデータの読み書き

概要 pandasで一時データを保存しておきたい時に、pickleやcsvで出すのも良いけどDBに出しておいた方が後で楽というケースがたまにある。そんな時に使いそうなSQLiteとの連携。 バージョン情報 Python 3.8.0 pandas==0.25.1 PythonでのSQLiteの利用 SQLiteは…

PythonでBigQueryの操作

概要 Pythonを利用してBigQueryのデータの追加、削除、検索を行う。 データはpandasで用意して投入する想定。 バージョン情報 Python 3.7.4 google-cloud-bigquery==1.21.0 導入 $ pip install google-cloud-bigquery BigQueryとCloud Storageが許諾されてい…

PythonからCloud Vision APIを叩いてOCR

概要 PythonからCloud Vision APIを呼び出して画像やPDFから文字を読む。 バージョン情報 Python 3.7.4 google-cloud-vision==0.40.0 インストール pip install google-cloud-vision Cloud Visionでできること 下記のようなことができる。なかなか多彩。 CRO…

nodeでGCPのCloud Storageの操作

概要 公式のドキュメントが今ひとつわかりづらかったので個人的によく使う下記の処理の使い方をメモしておく。 バケットの生成 アップロード ls ダウンロード ファイルの削除 バージョン情報 "@google-cloud/storage": "^4.1.1" "fast-crc32c": "^2.0.0" 導…

Pythonのclickでサブコマンドの実装

概要 Pythonのclickでgroupを使うと1つのスクリプトに複数のサブコマンドを実装できる。 バージョン情報 Python 3.7.4 Click==7.0 最小限のサンプルコード 引数に応じて2つのコマンドを出し分けるシンプルなコード。 import click @click.group() def cli():…

PythonでTwitterの検索とタイムラインの取得

概要 PythonからTwitter APIを利用して下記を行います。 検索結果にヒットしたツイートの取得 指定ユーザーのツイートの取得 タイムラインの取得 とても面倒だということで名高いAPIのアカウント申請についてはここでは取り扱いません。 バージョン情報 Pyth…

Pythonのpathlib.Pathでファイルパスの操作

概要 Python3.4から導入されたpathlibでのファイルやパスの操作について確認する。 バージョン情報 Python 3.7.4 サンプルデータ 下記のようなパス構成に対して操作を行う。 ├── bar.txt ├── foo.txt └── hoge ├── fuga.txt └── gaz.txt ファイルの存在チェ…

GCPのNatural Language APIで感情分析や固有表現抽出

概要 GCPのNatural Language APIを使って文章の感情分析(ポジネガ)を出したり、エンティティ分析(固有表現を抽出)をしてみる。 Google Cloud SDKからの実行とPythonからの実行の2パターン。 コンテンツの分類機能もあるみたいなので使ってみたけど日本語…

CLIでGCPのインスタンスやストレージを操作

gcp

概要 GCPのCompute Engineのインスタンスの起動、停止、接続。Cloud Storageへのファイルの追加、削除を行う。 バージョン情報 Google Cloud SDK 268.0.0 gsutil version: 4.45 Cloud SDKのインストール 下記参照 https://cloud.google.com/sdk/downloads?hl…

Pythonでjsonの読み書き

概要 Pythonの標準ライブラリでdictionaryをjsonに変換して出力する。 また出力したjsonを読み込む。 バージョン情報 Python 3.7.4 サンプルデータ 本ページのサンプルコードでは下記のdictionaryを出力する。 obj = { 'foo': 'hoge', 'bar': [1, 2, 3, 4, 5…

PDFMinerでPDFのテキストと座標を取得

概要 PDFを読み込んでテキストを取得する際に、一緒にそのテキストが文書内のどの座標(x座標, y座標)にいるかも取得したい。 バージョン情報 Python 3.7.4 pdfminer==20191016 サンプルデータ Libreofficeのcalcを用いて下記画像のようなPDFファイルを用意…

Ubuntuでrbenvのインストール

概要 rbenvのインストールから基本的な操作まで。 バージョン情報 rbenv 1.1.2-4-g577f046 rbenvのインストール $ git clone https://github.com/rbenv/rbenv.git ~/.rbenv $ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/rub…

ginza(spacy)で固有表現抽出のtrain

概要 固有表現抽出を行いたかったので、spacyでnerのtrainを行ってみる。 例として既存のginzaのモデルでは「10,000円」はMONEYとして抽出されるけど「\10,000」は認識されない問題を解決するモデルを作成。 バージョン情報 ginza==2.2.0 Python 3.7.4 参考…

Ginzaで形態素解析、係り受け解析、固有表現抽出、ユーザー辞書追加

概要 Ginzaを使ってNLPでよく使ういくつかの処理を動かしてみる。 バージョン情報 ginza==2.2.0 Python 3.7.4 インストール pipで入れられる。 $ pip install "https://github.com/megagonlabs/ginza/releases/download/latest/ginza-latest.tar.gz" 詳細は…

PHPでTwigとDoctrineを利用してWebサイトを作る

php

概要 HTMLがある程度書けてPHP/JavaScriptも少しわかるという人がメンテするシステムがあったとする。生のPHPで書かれていてHTMLとロジックがかなり入り混じっている。 これを破綻させないように程よく改修する必要が出た場合、フレームワークを使うと担当者…

GCPのCloud ComposerでHello World

概要 Airflowの運用をGCP任せにできるCloud Composerを使ってPythonOperatorやBashOperatorを叩いてみる。 バージョン情報 Google Cloud SDK 264.0.0 composer-1.7.5-airflow-1.10.2 起動 GCPのWebUIからcomposerを選択し、environmentを作成する。 各項目に…

log4jsによるログ出力

概要 log4jsを使ってログ出力、フォーマットの変更、ファイル出力、ログローテーション等を行う。 バージョン情報 node v10.15.1 log4js@5.1.0 インストール $ npm i log4js コンソールへのログ出力 ログレベルをinfoに設定してログを出力してみる。 const l…

puppeteerでWebの画面操作とスクレイピング

概要 puppeteerを使って下記の項目などを実行する。 URLを叩いて結果をスクリーンショットとHTML本文の2パターンで保存する ページにテキストを入力してボタンを押す 当該ページに表示されている画像をまとめて保存する ページ遷移しながらスクレイピングし…

Pythonのloguruでログ出力

概要 Pythonのログ出力は標準ライブラリがすんなりとは使いづらいので、ログをより簡単に扱えるライブラリ、loguruを使ってみる。 バージョン情報 Python 3.7.3 loguru==0.3.2 インストール $ pip install loguru シンプルな出力 importしてinfoするだけで整…

PySparkでpartition数を指定してソートする

概要 PySparkで下記のようにソートしてからファイルに保存しようと思った場合。 df.repartition(5).orderBy(df.colA).write ... この記述は出力されるファイル数が5になることを期待しているが、orderByの際にpartition数が変動してしまう為期待した結果には…

PySparkでSparseVectorの生成と操作

概要 PySparkで機械学習系の処理をする際にSparseVectorに変換したいケースが多々あるのでそのあたりの処理を確認する。 バージョン情報 Spark 2.4.3 サンプルデータ いつもお世話になっているMovieLensのデータで、ユーザーごとの映画のレビューをSparseVec…

PySparkでDataFrameのランダムサンプリング

概要 PySparkでDataFrameから指定の割合や指定のレコード数でランダムサンプリングする。 バージョン情報 PySpark 2.4.3 サンプルデータ 1〜9999までの数値を持つDataFrameを用意する。 import pandas as pd import numpy as np np.random.seed(0) # 0〜100…

PySparkでlistからOR条件を生成する

概要 PySparkでlistの中に入っている値を使ってOR条件を生成したい。 例えばlistに[('a', 1), ('b', 2)]のようなtupleが入っていて、 (x='a' and y=1) or (x='b' and y=2) のような条件を生成する。 バージョン情報 Spark 2.4.3 サンプルデータ カラムx(char…

PySparkでhiveのpartitionを取得する

概要 PySparkでhiveのテーブルのpartitionから最新のものを取りたかった。 何か良い方法を前に見かけたような気がするのだけど思い出せないのでshow partitionsで取れた文字列をパースする。 バージョン情報 Spark 2.4.3 テーブル生成 partitionカラムとして…

PySparkでarrayのカラムに対してbroadcast join

概要 例えばMovieLensのデータで各ユーザーがどの映画を見たかを、movieIdのArrayで持っているテーブルがあったとする。 # userIdと映画のidの配列を持つDataFrame df.take(3) #=> [Row(userId='134990', movieIds=['2793', '743', '2572', '4159', '59369',…