White scenery @showyou, hatena

If you have any comments, you may also send twitter @shsub or @showyou.

PyData.Tokyoが設立されたようです

http://pydata.tokyo/

PyData(http://pydata.org/)ってのは海外で開催されているPython向けデータ分析ツールの集まりです。先日のPyConJPで日本でもデータ分析系の需要があることがわかり、コミュニティを作成したようです。


PyData Tokyoのお知らせ - ALBERT Engineer Blog

自分も興味あるのでコミュニティに入りました。興味があればよろしくです。

Python3へ移ろうとして5秒でくじけた


Python2ユーザから見たPython3 - White scenery @showyou, hatena

 

先日上記の通り、Python2からPython3に対して移行するか・・とか書いたのですが、

しょっぱなからへし折られました。

https://github.com/tweepy/tweepy


Python3でのtwitter投稿など - Qiita

>tweepyがpython3.xでは使えなくなっている。 tweepy作者がもうお手上げしているので
>tweepyがpython3.xでは使えなくなっている。 tweepy作者がもうお手上げしているので
>tweepyがpython3.xでは使えなくなっている。 tweepy作者がもうお手上げしているので

ダメじゃね、これ?

確かにnariyaさんが8月あたりに「Python3でtweepy動かした人いませんかー?」と聞いて回ってはいましたが・・なんだろ、先日Python3に移るべき~とか書いてた人ら、twitterからデータを取るとかしたことないだろ?他にも過去これまで動かなかったライブラリから、Python3を早期から使ってた人がどのライブラリを使ってなかったかが分かりそうです。

 

それはさておき、これから新規でtwitter周りのことを扱うなら上で挙げられてい

https://github.com/sixohsix/twitterを使えば良さそうですね。既存のものを移すにしても恐らくそんなに変わらないと思うので、少し試してみますか・・

Pycon JP 2014 2日目が終わりました(2) #pyconjp

ひとつ前の話では単語羅列して力尽きたので、いくつか特に面白かった発表について列挙します。

以下の記事にも書かれているので、ここに乗ってない情報は見ていただければと思います。ほかにもtwitterで#pyconjpと検索すればこれから出てくるかもしれません。

PyCon JP 2014 1日目参加レポート #pyconjp - Time Flies

PyCon JP 2014 2日目参加レポート #pyconjp - Time Flies

 

 Deep Learning for Image Recognition in Python

 

この発表は特によかったのでTokyoWebminingの常連も必見です。
内容としてはDeep Learningの入門からpythonでDeep Learningを使う方法、さらにFlask + Deep Learningの結果を使ったアプリケーションのデモまで行っていました。
軽く補足しておくと、Haar-likeっていうのはOpenCVで顔領域識別の入門でよく使われてるものです。SURFも今はOpenCVで使えるみたいですが、SIFTとあわせて特許がらみの何かがあった気がします。
また恐らくOpenCVPython版はC言語版を中で呼んでいて、そこの橋渡し部分がPython3で変えられたために移植に苦労されてた気がします*1。んでこういうところで苦労するケースが多かったため、なかなかPython3に移れなかった、って話になってくるわけです。PythonはWeb向けの機能だけでなく、数値計算のライブラリもそろってる数少ない言語だと思われます。
さらに余談ですが、最近は数値計算向けの言語としてjulia( The Julia Language )って言語が脚光を浴びてきています。この言語がどれだけPython + Numpy, etcの影響を受けたかわかりませんが、Pythonの関数を呼べたりiPython notebookのjulia版を持っていたりします。上の公式サイトにもIJulia Notebookが乗っています。

 マーケティングに活かせるPythonライブラリIntroduction to scientific programming in python

 


Introduction to scientific programming in python // Speaker Deck

どちらもpythonで使える数値計算向けライブラリ一覧についての発表です。本来同じような発表を二つ採択するってのはないのですが、片方英語片方日本語ということで採用しました。どちらも評価良かったしね。

Pythonではじめる野球プログラミング

Open Data for Taiwan's Roadways

 道、野球と違う話題ですが、共通してるのは政府なりなんかの組織が他者に対して開放しているOpenDataの取り組みです。

日本でも一部機関がOpenDataを提供しています

Open DATA METI | 経済産業省のオープンデータカタログサイト

PyCon JP 2014 Python + Hive on AWS EMRで貧者のログ集計


PyCon JP 2014 Python + Hive on AWS EMRで貧者のログ集計 // Speaker Deck

でかい会社じゃなくてもAWSインスタンス使って安価にログ集計できますよってお話。分析についてあんま書いてないかもしれませんがScikit-learnなり使えば入手したログからできますね。

Oktavia

FM-indexを使った検索エンジン。もともとJSXで書かれていましたが、今回Sphinxから呼びやすいようにPython向けに移植したもの。

 The esperanto generator

なんと中学1年生で遺伝アルゴリズム、教師なし言語生成などの話をしてきました。まだ実装まではうまく行ってなかったみたいですが、発想の突出度はずば抜けて高かったのでまた来年(もしくは他のイベントで)どれだけ進んだかお聞きしたいです。

Pyladies Tokyo

Pythonを使う女性の会が遂に発足しました。今回のPyConでは残念ながら女性の方のセッションはありませんでしたが、「プログラミングは男性がするもの」なんて偏見を吹き飛ばせるよう、サポートしていきたいものです*2

 

他にもポスターで確率的プログラミングの話なんかも興味深かったです。

終わりに

PythonだとWebやさんでもちょっと集計分析したくなったらpip install numpyとかpip install scipyとかするだけでいけるようになりますし、逆に数値やさんは自分の作った分析をすぐにWebサービスにできるっていうメリットがあります。日本だとWebやと数値やって分かれてる感じもしますが、実はすぐ移れるよ、ギャップ埋めようよ と考えました。なので今回PyCon JPに沢山の方が集まられたのは大変良かったです。

また今回自分はボランティアで発表内容の選定を手伝いましたが、もしこんな発表に来てもらいたいというのがあれば、スタッフもしくは一部ボランティアを手伝うといいです。当然ですが私一人で決めるわけじゃなく複数の方で投票して選んでます。今回数値計算系が一気に増えましたが、別に私がえこひいきした訳じゃなく、内容が細かく詳しく書かれてたために自然と採用されました。私は来年も発表内容の選定に立ち会うつもりです。

*1:執筆現在ぐぐった限りではようやくPython3でも使えるようになったみたいですね

*2:私は男性なので入れませんw

PyCon JP 2014 2日目が終わりました

終わりました。

1日目の終わりにも書きましたが、「英語ができない、勘と経験と度胸に頼る」というイメージどこいったんだって感じの、今までとは違う感じのPyCon JPだったかと思います。スタッフすらやってないのに私がPyConの理想像あげてしまうのも申し訳ないですが、Web関係だけでなく学術関係の方も参加しやすい会になるといいのかなと考えています。ただ一方で今までに比べ違う系統の発表であり、人によって前提知識がばらばらで全くわからなかったり既に知ってるよってのもあったりしたでしょう。来年は今年の発表で+1された発表があるとうれしいです。・・って自分も待ってるだけじゃなくて出さないとですね(今年は転職活動中でした)。

 

発表中に出てきた単語おさらい。自分の知ってる範囲で書いてみるけどいろんな方向から刺されそうですね・・

Numpy

ベクトル・行列の計算を簡単に扱えるようにするライブラリ

Scipy

http://turbare.net/transl/scipy-lecture-notes/intro/scipy.html

python科学計算向けツール

Scikit-learn

http://scikit-learn.org/stable/

機械学習ライブラリ

Pandas

 行列から特定の条件の行だけを抜き出すとかに長けたライブラリ。大体Rのdataframe見たいなことができるんじゃないっすかね

データ分析ライブラリPandasの使い方 | Librabuch

Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理

Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理

 

Matplotlib

チャート描画ライブラリ

Anaconda

上にあがったNumpy, Scipy, Scikit-learn, Matplotlib等が一まとめになったパッケージ。実はMatplotlibだかNumpyを入れようとすると途中でgfortranとかコンパイルする必要が出てきてたまにコケることもあるので、あると安心。自分はまだ使ったことないです(gfortranコンパイルしてます)。

Beautiful Soup

Scrapy

Webページを、API等経由せずに画面に表示されてるhtmlから直接データを吸い出すのに使うライブラリ。

statistics

Python3.4から標準搭載された、統計用ライブラリ

--

Hadoop

並列分散処理をするためのソフトウェア。もともとGoogleMapReduce論文を元に作られたのですが今のHadoop2はMapReduceとは限りません(Impala, PrestoとかはMapReduce使っていない)

MapReduce(Hadoop)

一旦Mapステージで複数のマシンに分散して処理させて、Shuffleステージで別のマシンに飛ばして、Reduceステージで処理結果を合計とったり件数数えたりするアルゴリズム。考えがシンプルで複数のマシンに分けやすいのだけど、立ち上げに時間がかかる(MapReduceというかJVMの問題な気もするけど)。Mapper, Reducerそれぞれ自分で処理のコード書いていかないといけません

Hive

MapReduceだといちいちコードかかないといけなくてつらいので、SQLっぽいものでデータ処理をできるようにしたもの。MapReduceベースなのもあって軽いクエリでも数分~数時間待たされる

Impala / Presto / ...

HiveがMapReduceベースで遅いんで代わりに作られてるSQLツール達。Impalaは数秒レベルで返ってくるものの、データ量が全ノードのメモリに乗らなくなると落ちるって問題がある。Prestoはそこまで早くない変わりにそういった問題はないのかな?

 

ちなみにHive, Impalaはhttp://demo.gethue.com/で触れます。

--

Deep Learning

かなりぶっきらぼうに言うと、ニューラルネットの亜種で勝手にパラメータ決めてくれるようなの。有名なのがビデオの映像学習してたら勝手に猫がきたときに反応するニューロンを発見したあたり。今回の発表だと○○○○○に近いかどうかとかやってましたね(発表で伏せられていたのでここでも伏せときます)。今の自分だときっちり説明できない・・

Googleの猫認識 (Deep Learning) - 大人になってからの再学習

深層学習入門

遺伝的アルゴリズム : genetic algorithm, GA

ニューラルネットワーク : Neural Network

単純ベイズ, ナイーブベイズ : Naive Bayes

 (テキストの)感情分析 : Sentiment Analysis

たとえば「このブログは日本語の使い方が下手だ」とか書いたらネガティブ、「この料理とてもおいしい」とか書いたらポジティブと判定されるような、文章からネガティブ/ポジティブを判定する手法。ネガポジだけでなくほかの評価軸もあります

n-gram(uni-gram, bi-gram, tri-gram, ...)

Bag of words

テキストを機械学習するときに順序を考慮するかどうか。bi-gramだとある単語Aとその前の単語の二つの順序を覚えておく。tri-gramならある単語Bとその前と前の前の三つの順序を覚えておくとか。一方でBag of wordsは順序を無視して、ある文章中にどの単語が出たかだけ覚えておくもの

形態素解析

「今日はいい天気です」を「今日 は いい 天気 です」って感じに分割する解析。英語とかの場合単語間に空白があるので形態素解析の必要がない

 

 

と列挙してみましたが、かなりいろいろありますね。。。来年はPython側の新機能か、機能を使って大規模計算や課題を解決したって話があるといいかもしれません。

Python2ユーザから見たPython3

この記事はpycon.jpのKeynoteでpython3が残念っていう話があったので、それについて書きます。

なぜPython3を使わないのか

  1. 文法が少し変わったので習得にコストがかかる(特に3.0とか3.1はかなり互換性捨てられてた気が)
  2. C周りの補助機能が亡くなった気が(お陰でMeCabのCバインディングが使えない)
  3. 1, 2の理由もあり対応していないライブラリが多かった。現状だと割とでかそうなのがMySQL-python, thrift*1, Sentry*2, protobuf*3とか。
  1. その割に便利になるとこが少なそう(基調講演のNo Benefit (hahaha))

Windows XPが7に置き換われたように、いずれ3に移るという意見もありますが、一方でVistaのように存在自体が葬られる可能性もあります。

 

実際Python3はどうなのか?

ではPython3は全然よくなってないのでしょうか。そういうことはなさそうです。

  1. MeCabに関して:python3で動くものが出てきているようです python3対応 Mecabの紹介 - Python, web, Algorithm 技術的なメモ
  2. MySQL-python : methame methaneさんがforkしてます。またpythonで実装してるmysqlコネクタはpython3でも使えると報告があります(当初お名前間違えておりました。申し訳ございません)
  3. MySQL-python の Python 3 対応 - methaneのブログ
  4. 便利になるとこ : 特に日本人だとutf-8周りが大きいようです。python2のunicode周りは結構面倒ですしね。3.4から入ったasyncio*4なんかも便利そうです。
  5. Cへのアクセス周りは・・

 

今後どうすればPython3に移るか

  1. CentOS/Ubuntu(Debian)の標準がPython3になる :P virtualenvで2と3は共存できましたっけ?
  2. 便利になるとこ、Py2に戻れないよってとこを教えて欲しい(ググれという話もありますが)。私はPy2.6~2.7を使ってますが、Py2.4(RHEL5,CentOS5の標準)にはとても戻れないです。なぜならsetが使えないからです(Cのsetなら使えたっけ?)。そういった感じの便利点を挙げてもらえると嬉しいです。
  3. Python2で引っかかるところを克服する。Pythonのコアコミッタだけでなく普段使ってる人も問題を上げたり、既存のライブラリをforkして使いやすくするなどできることはあります。Do It Yourself. 

私はどうするか

デメリットが減ってきたので今日から移るつもりです。つもりと書いてるのは、今日もpycon jpに参加して発表を聞くのでコード書くかどうかわからないからです :P

 9/14 16:18 追記

> virtualenvで2と3は共存できましたっけ? 

二日目のセッションで目の前でデモやられたので"できる"が答えですね。

*1:他のプロセスとの通信に使うライブラリ。pythonHadoopにつなぐときに使う

*2:Cloudera Hueの認証周りで使う

*3:シリアライズライブラリ

*4:非同期通信

Pycon JP 1日目に参加しました

あとで書く

一言で言うと、予想以上に数値計算・英語セッションの参加者が多くてよかったとこですね。

 

参考:


PyCon JP 2014 1日目参加レポート #pyconjp - Time Flies

Twitter APIとスクレイピング

Twitter apiとはなんだったのか? | F's Garage@fshin2000

こちらも思いついたものを書いときます。

立場的には「Twitterを草の根的にいじってた開発者」という立場です。

 

Twitter APIとはなにか?

ひどい言い方すると、スクレイピング*1とかやられてすごく重たくなったTwitterに対して、「アクセスはこちらからできるからスクレイピングやめてくれ」といった逃げ道です。

ちょっと過去の話書いておくと、出始めのTwitter APIはかなり不安定で(今も残念なところありますが)、下手にAPIのマナー守って不安定な結果を得るよりもスクレイプした方がマシな結果が得られてました。その為初期のTweenなんかはスクレイプしてました。規約的には辞めろってtwitter社も言ってたのですが、開発者/利用者からしてみるとどうしてわざわざ不正確/不便なものを使わないといけないのかって疑問もありました。スクレイピングなら実行回数無制限ですが、APIは制限ありますしね。その為twitter社は、開発者向けにAPIの実行回数を大分多めに設定したwhitelistなるものを提供してAPIの利用を促進させました。

 

蛇口へのカウンター

元記事では蛇口を止められたら終わり、って書いてますが、過去の話から言ってしまえば「APIがダメならスクレイピングでいいんじゃない?」って事になります。もちろん規約的にはNGなんですが。ただ規約守っててもTwitPicみたいにBanされるなら、スクレイピングでも結果一緒なんじゃ?って事になります。APIが有料化されたら?スクレイピングするに決まってるじゃないですか。個人ユースだとAPI使う利益って薄いですし。

 

とはいえ向こうもビジネス

当たり前の話ですが、別に彼らもボランティアでやってるわけじゃないんですよね。ビジネスとしてなんらかの利益を上げないといけないわけで。そのために戦略を取ることは尊重したいです。自分は株主でもないんでそんなこと言えた立場じゃないんですが。もっと閉鎖的なFacebookの方が売上上がってる点からしても、Twitter社としては面白くなかったかもしれません。そういやApp.netだかの有償無制限Twitterはどこいったのだろう・・

 

終わりに

ビジネスとしてなんらかのサービスだけにどっぷり浸かるのは危険。これはTwitterに限らず、他のサービスにも言えることで、競合状態が解消された時に方針転換することはよくよくあります。自分は個人でいじってるし止められようが別のとこに乗り換えるだけなんでいいんですが。

*1:HTMLページから必要なデータを抜き出すこと