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
>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
マーケティングに活かせる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に沢山の方が集まられたのは大変良かったです。
また今回自分はボランティアで発表内容の選定を手伝いましたが、もしこんな発表に来てもらいたいというのがあれば、スタッフもしくは一部ボランティアを手伝うといいです。当然ですが私一人で決めるわけじゃなく複数の方で投票して選んでます。今回数値計算系が一気に増えましたが、別に私がえこひいきした訳じゃなく、内容が細かく詳しく書かれてたために自然と採用されました。私は来年も発表内容の選定に立ち会うつもりです。
PyCon JP 2014 2日目が終わりました
終わりました。
1日目の終わりにも書きましたが、「英語ができない、勘と経験と度胸に頼る」というイメージどこいったんだって感じの、今までとは違う感じのPyCon JPだったかと思います。スタッフすらやってないのに私がPyConの理想像あげてしまうのも申し訳ないですが、Web関係だけでなく学術関係の方も参加しやすい会になるといいのかなと考えています。ただ一方で今までに比べ違う系統の発表であり、人によって前提知識がばらばらで全くわからなかったり既に知ってるよってのもあったりしたでしょう。来年は今年の発表で+1された発表があるとうれしいです。・・って自分も待ってるだけじゃなくて出さないとですね(今年は転職活動中でした)。
発表中に出てきた単語おさらい。自分の知ってる範囲で書いてみるけどいろんな方向から刺されそうですね・・
Numpy
ベクトル・行列の計算を簡単に扱えるようにするライブラリ
Scipy
http://turbare.net/transl/scipy-lecture-notes/intro/scipy.html
Scikit-learn
http://scikit-learn.org/stable/
機械学習ライブラリ
Pandas
行列から特定の条件の行だけを抜き出すとかに長けたライブラリ。大体Rのdataframe見たいなことができるんじゃないっすかね
データ分析ライブラリPandasの使い方 | Librabuch
Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理
- 作者: Wes McKinney,小林儀匡,鈴木宏尚,瀬戸山雅人,滝口開資,野上大介
- 出版社/メーカー: オライリージャパン
- 発売日: 2013/12/26
- メディア: 大型本
- この商品を含むブログ (5件) を見る
Matplotlib
チャート描画ライブラリ
Anaconda
上にあがったNumpy, Scipy, Scikit-learn, Matplotlib等が一まとめになったパッケージ。実はMatplotlibだかNumpyを入れようとすると途中でgfortranとかコンパイルする必要が出てきてたまにコケることもあるので、あると安心。自分はまだ使ったことないです(gfortranコンパイルしてます)。
Beautiful Soup
Scrapy
Webページを、API等経由せずに画面に表示されてるhtmlから直接データを吸い出すのに使うライブラリ。
statistics
Python3.4から標準搭載された、統計用ライブラリ
--
Hadoop
並列分散処理をするためのソフトウェア。もともとGoogleのMapReduce論文を元に作られたのですが今の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を使わないのか
- 文法が少し変わったので習得にコストがかかる(特に3.0とか3.1はかなり互換性捨てられてた気が)
- C周りの補助機能が亡くなった気が(お陰でMeCabのCバインディングが使えない)
- 1, 2の理由もあり対応していないライブラリが多かった。現状だと割とでかそうなのがMySQL-python, thrift*1, Sentry*2, protobuf*3とか。
Python3の壁 https://t.co/634gxmSh3U #pyconjp
— エク(えぐざ・ふぃーるど) (@exafield) September 13, 2014
- その割に便利になるとこが少なそう(基調講演のNo Benefit (hahaha))
Windows XPが7に置き換われたように、いずれ3に移るという意見もありますが、一方でVistaのように存在自体が葬られる可能性もあります。
実際Python3はどうなのか?
ではPython3は全然よくなってないのでしょうか。そういうことはなさそうです。
- MeCabに関して:python3で動くものが出てきているようです python3対応 Mecabの紹介 - Python, web, Algorithm 技術的なメモ
- MySQL-python : methame methaneさんがforkしてます。またpythonで実装してるmysqlコネクタはpython3でも使えると報告があります(当初お名前間違えておりました。申し訳ございません)
- MySQL-python の Python 3 対応 - methaneのブログ
- 便利になるとこ : 特に日本人だとutf-8周りが大きいようです。python2のunicode周りは結構面倒ですしね。3.4から入ったasyncio*4なんかも便利そうです。
- Cへのアクセス周りは・・
今後どうすればPython3に移るか
- CentOS/Ubuntu(Debian)の標準がPython3になる :P virtualenvで2と3は共存できましたっけ?
- 便利になるとこ、Py2に戻れないよってとこを教えて欲しい(ググれという話もありますが)。私はPy2.6~2.7を使ってますが、Py2.4(RHEL5,CentOS5の標準)にはとても戻れないです。なぜならsetが使えないからです(Cのsetなら使えたっけ?)。そういった感じの便利点を挙げてもらえると嬉しいです。
- Python2で引っかかるところを克服する。Pythonのコアコミッタだけでなく普段使ってる人も問題を上げたり、既存のライブラリをforkして使いやすくするなどできることはあります。Do It Yourself.
私はどうするか
デメリットが減ってきたので今日から移るつもりです。つもりと書いてるのは、今日もpycon jpに参加して発表を聞くのでコード書くかどうかわからないからです :P
9/14 16:18 追記
> virtualenvで2と3は共存できましたっけ?
二日目のセッションで目の前でデモやられたので"できる"が答えですね。
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ページから必要なデータを抜き出すこと