Kesin's diary

プログラミングの記事がメインです

Python

Python3.5の型ヒントをとりあえず試す

Python3.5がリリースされましたね。 Python書くのはほぼ1年ぶりでしたが、噂の型ヒントがついに3.5で導入されたようなので早速試してみました。 型ヒントについてこちらに素晴らしいPEPの翻訳記事があり、見て頂けると分かりますがPython3.5単独ではまだ型チ…

PyConJP 2014に参加してきました

今年も9/13,14に行われたPyConJP 2014に参加してきました!去年に引き続き、2回目の参加です。 今年の会場は去年に比べて交通は少し不便になってしまいましたが(特に東京テレポート駅からは遠い)、会場の中はホールや教室とドリンクバーが離れておらず、良…

PythonでMongoDBを使うunittestのひな形

タイトルのとおりですが、ケースとしてはFlaskみたいな軽いフレームワークでMongoDBをデータベースに使うModelを自分で実装するような場合です。 実際にデータベースを動かすModelのテストを書くときに、FlaskはフルスタックのDjangoと違って何も面倒を見て…

結局Pythonはvirtualenvで管理してみることにした

念願の新しいMacBookAirを手に入れまして、開発に使用するPythonはOSデフォルトとは別に用意したいよねー。さらに言うと、ついにPython2.x系が2.7で開発ストップすることが確定したので、いつでもPython3.x系に移れるようにしたいし、できれば一部でアツいPy…

Pythonらしいコードの書き方

はてなブログに移行して最初の記事はやはりPythonネタにしました。 はてなブログいいですね。デザインの編集がやりやすくなったのと、Markdownで書けるのが素晴らしいです。 PyCon 2013の動画を見ていたら、素晴らしい"Transforming Code into Beautiful, Id…

LocationTweet 気になる場所の今のつぶやきを見る

気になる場所の今のつぶやきを見ることができるLocationTweetというWebアプリを公開しました! LocationTweet 地図に表示されたピンをタップするとその場所のつぶやきを見ることができます。 学校、駅、観光地など気になる場所について他の人が今どのような…

Wikipediaから位置情報のデータベースを作る

Wikipediaの記事から位置情報をマイニングするスクリプトをPythonで作りました! Wikipediaの建物や場所の記事のタイトル右端にある位置情報と情報ボックス内の位置情報から抽出しています。Wikipediaは日々更新されているので、2012年にオープンしたばかり…

NumPyとCythonを組み合わせると爆速!

前回の記事の最後にcythonとnumpyを組み合わせても速くならなかったと書いてしまったのですが、@frontier45 さんから公式のチュートリアルをちゃんと読みましょう。と教えていただいたので、自分の勉強がてらブログにも書いておきます。使用するコードは何の…

Pythonを高速化するCythonを使ってみた

突然ですが私はPythonが好きです。でもPythonは遅いです。 何が遅いかというと、致命的なことに四則演算が遅いです。でも他の動的型付け言語でスクリプト言語と呼ばれるPerl, Ruby, Javascript も C, Javaのようなコンパイルを行う静的型付け言語に比べれば…

SuffixArrayを作ってみた(Python)

前回の続き 自然言語処理はじめました - Ngramを数え上げまくるを見てSuffixArrayを使ったNgram取得をやってみたくなりました!前回SuffixArray構築に必須の文字列のソートアルゴリズムのマルチキークイックソートが実装できたのでいよいよSuffixArrayを実装…

マルチキークイックソート

自然言語処理はじめました - Ngramを数え上げまくるを見てSuffixArrayを使ったNgram取得をやってみたくなりました! SuffixArrayの構築には文字列のソートが必要なのでまずはここから始めます。 文字列のソートにはクイックソートを文字列のソートに応用した…

NumPy, SciPyをちゃんとインストールする(CentOS+Python2.7+easy_install)

研究室に新しくRedHatの計算機が来るそうなので、自分のMacBookにVirtualBoxを使用してCentOSを入れて自分の環境づくり&来年入って来る後輩にPythonを布教するための練習メモ。 目標:システムとは別のPythonをソースからインストール。yumでATLAS、easy_in…

Pool.imap()について

前回multiprocessingのPoolクラスの使い方を書いたのですが、執筆当時はイテレータについてよく分かってなくて、imap()が投げっぱなしだったのでそれについての補足です。 1. イテレータについて imap()の補足をする前にイテレータについて説明します。Wikip…

Python multiprocessing

前回Pythonでの並列化についてちょっと書いているうちに興味が湧いてきたのでもう少し掘り下げてみます。 Python2.6から標準モジュールになったmultiprocessingのリファレンスから並列に実行させるクラスについて色々試してみました。プロセッサ間の連携や共…

マルチコアで形態素解析を行う2(multiprocessing編)

前回の続きで今回はPythonで形態素解析をマルチコアで行うプログラムを実際に書いてみます。私自身multiprocessingモジュールはまだ全然理解できていませんが、並列に実行するプログラムを書くには Processクラス Poolクラス を使う必要があるようです。おそ…

マルチコアで形態素解析を行う1(プロファイリング編)

Pythonにはプロファイラというものが標準で付いていることを知りました。プロファイラを使用すると関数ごとの呼び出し回数や処理時間が計測できるので、どの部分が処理時間の足を引っ張ってるのかが簡単に分かります。無駄なループなどをコードとにらめっこ…

RSSで自然言語処理を体験する

自然言語処理って何? 大学の研究では自然言語処理というものを扱っています。 と言われても自然言語処理って何?という人がほとんど(自分も今年の4月まで知りませんでした)だと思いますので、自然言語処理について紹介していきたいと思います。自然言語処…