rohaniのブログ

ゆるっと自然言語処理奴。ときどき工作系バイト。

Python

外部モジュールのlogging.debug()を画面&ファイル出力するにはrootLoggerに対してレベルとハンドラーの設定を追加すればいい

背景 Pythonのword2vecモジュール「gensim.models.word2vec」を用いて自前の単語分散表現word2vecを得ようとした。 こちらの記事 【Python】Word2Vecの使い方 - Qiita を参考にしたら、とてもスムーズに学習・類似単語表示の機能を実装できたのだが、 word2v…

Pythonプログラムの私的雛形

ファイル名やマジックナンバー的なものは、実行時に指定することも、いちいち指定せずデフォルト値を利用することもできるようにargparseを利用している。 一時利用のプログラムならprintデバッグを使ってしまうが、ちゃんとログを残すべきときにはloggingを…

csv.reader, csv.writer 〜csvファイルを入出力〜

いつも忘れて検索し直すのでメモ csvファイルをlist形式で読み込む with open('filename.csv', 'r') as f: reader = csv.reader(f) lines = [row for row in reader] listをcsvファイル形式で書き出す lines = [['身長', '体重', '名前'], [129.3, 129.3, '…

骨格検出モジュール tf-pose-estimation をMacbookProで動かしてみた

tf-pose-estimation github.com 'Openpose', human pose estimation algorithm, have been implemented using Tensorflow. It also provides several variants that have some changes to the network structure for real-time processing on the CPU or low…

調整さんの候補日程を入力するのが面倒なのでPythonにやってもらうことにした

調整さんの候補日程の入力フォーマット 調整さんは、とても簡単にスケジュール調整ができるツールだと思う。 とっても便利だし、簡単だと思う、 けど、、面倒くさがりなひとには、それでも面倒くさい。 調整さんを毎月のシフト希望調査に使う場合 「毎月のシ…

brew install vim --with-xx ができなかったので、Macvimを試してみた

--- 追記 2019/06/05 ここでは「--with-python3ができない」「前回は奇跡的にどちらの(Python3とPython2)オプションも付いたvimが入ったけれど今回はそうはならなかった」と書いた。 しかし、後々別件を調べていたら、どうやらHomebrewの仕様が変わってpyt…

vimにPythonコーディング環境を整える

研究室で、新しいMacを譲り受けた。 色々とセットアップしたついでに、Vimもちょっと凝りたくなったので弄ってみたら、便利すぎて素のvimでコーディングできなくなった。。。 色々と四苦八苦して導入したので、綺麗にはまとめられないのだけれど、知見を残し…

try, except 〜例外処理〜

用途 予測可能なエラー発生時に、エラーログを残しつつ処理が続くように作る エラーの種類によって処理を分岐させる エラーメッセージ >>> 10 * (1/0) Traceback (most recent call last): File "<stdin>", line 1, in <module> ZeroDivisionError: division by zero エラー</module></stdin>…

re 〜正規表現を用いて検索・置換〜

用途 正規表現を用いて検索や置換を行うとき。 (私の場合、大量のデータに一括で置換処理を施したいときは、linuxコマンドsedを使うことが多い。 少量のデータに一括で置換処理を施したいときは、経過が観やすいvimの:%sを使うことが多い。) インポート im…

dict.get 〜keyが在ればvalueを返し、無ければdefaultを返す〜

用途 存在しないkeyを指定する可能性があるとき dictに新しい要素をどんどん追加するとき 使い方 dict.get(key, default)を用いると、dictに存在しないkeyを指定されてもエラーを吐かずにdefault値を返してくれる。 >>> a = {'a':1} >>> default = 0 >>> >>>…

pickle 〜オブジェクトのシリアライズ〜

用途 リストや辞書型変数など、オブジェクトを保存したり読み込んだりするときに使う。 インポート import pickle Python標準モジュールなので、pip installなどする必要はない。 書き込み lst = [1, 2, 3] #something object with open('list.pickle', 'wb'…

scikit-learn Tutorial【デコ14日目】

Google Colaboratoryを使って、scikit-learn tutorialをやってみた。 An introduction to machine learning with scikit-learn Conventions(規則) The sklearn.random_projection module implements a simple and computationally efficient way to reduce…

scikit-learn Tutorial【デコ13日目】

Google Colaboratoryを使って、scikit-learn tutorialをやってみた。 An introduction to machine learning with scikit-learn Machine learning: the problem setting Loading an example dataset sklearn標準のデータセットを読み込むには from sklearn im…

PythonでゼロからDeepLearning作ってみる【デコ6日目】

1.2 ニューラルネットワークの推論 レイヤの実装の決まりごと 全てのレイヤはメソッドとしてforward()とbackward()を持つ 全てのレイヤはインスタンス変数としてparamsとgradsを持つ 1.2節の範囲は、PytorchでもChainerでも自分で書く部分だから大丈夫。 教…

mutableなオブジェクトとimmutableなオブジェクト

前回の記事で、下記のコードと def add_hoge(str): str += 'hoge' str = 'hello ' add_hoge(str) print(str) #> 'hello ' #'hello hoge'にはならない 下記のコード def append_hoge(lst): lst.append('hoge') lst = ['hello'] append_hoge(lst) print(lst) #…

操作なのか、値を返すのか

リスト末尾に要素を追加して返す関数を書こうと思った。 (実際にはもう少し複雑なことをしていたのだけれど)以下のような間違いをした。 def append_hoge(lst): return lst.append('hoge') lst = ['Hello'] print(append_hoge(lst)) #> None 気持ち的には…

処理が終わったらSlackで通知してくれるようにしてみた

学習に長時間かかるので、経過報告やら異常/正常終了報告をして頂けると嬉しいなぁと思い、 とりあえずPythonでSlackAPIを叩いてdirect messageをするスクリプトを書いてみた。 概ね、参考ページを見ればできる。 任意の<TEXT>を任意の<USER ID>に宛ててdirect messageする</user></text>…

Scrapyでリンクを辿りながら欲しい情報をクロールする

Scrapy Python製Crawlerライブラリのひとつで、ブログ記事をクロールするために現在利用を検討している。 初手で日本語の入門記事を参考にして何度か痛い目を見ているので、おとなしく本家のScrapy Tutorialを読んだ。この記事では、公式のDocumentを参考に…

データの観察と前処理について読んだのでまとめる(3)

教材にするKernel COMPREHENSIVE DATA EXPLORATION WITH PYTHON Pedro Marcelino - February 2017 データからターゲットを取り出す前の段階、すなわち「データをよく見る」段階について解説している。 ノート 4.Basic cleaning Outliers の処理 Outliers(外…

データの観察と前処理について読んだのでまとめる(2)

教材にするKernel COMPREHENSIVE DATA EXPLORATION WITH PYTHON Pedro Marcelino - February 2017 データからターゲットを取り出す前の段階、すなわち「データをよく見る」段階について解説している。 ノート 1.問題を理解する データ分析チェックシートなる…

データの観察と前処理について読んだのでまとめる(1)

教材にするKernel COMPREHENSIVE DATA EXPLORATION WITH PYTHON Pedro Marcelino - February 2017 データからターゲットを取り出す前の段階、すなわち「データをよく見る」段階について解説している。 ノート このKernelの流れ、ひいてはデータ観察の流れ 問…

Tweepyで140文字より長いツイートを取ってくる

Twitterは一部言語で280文字までの投稿を許したが、PythonのTwitter API ラッパー "Tweepy" は141文字以上の投稿にデフォルトでは対応していない。 Tweet updates — Twitter Developers 長い投稿を取ってくるためにはREST API のリクエストのエンドポイント…

Tweepy使いがHTTPヘッダも見たいときのソース修正手順

背景 Twitter API には一定時間内に叩ける制限回数があるので,Tweetを収集し続けたいときなどは,あと何回叩けるのかを把握しておきたい. しかしデフォルトのツイート検索関数api.search()(Return type: list of SearchResult objects)はその情報を含ん…

サブワード分割手法 BPE(Sennrich, 2016) をPythonで実装してみた

輪講でも度々登場するBPE(Sennrich, 2016)を勉強のために書いてみた。 論文に乗っている Algorithm 1 Learn BPE operations そのまま。→ import re, collections def get_stats(vocab): pairs = collections.defaultdict(int) for word, freq in vocab.items…