2015年1月4日日曜日

ご迷惑をおかけしないために

あんまりサーバーに負荷をかけちゃご迷惑よ、とのことで。

 import time
 time.sleep(1)  # sleep(1 sec)

 from time import sleep
 sleep(2)          # sleep(2 sec)

よろしく、お願いいたします。

2015年1月3日土曜日

深さ優先探索、幅優先探索

pythonでの『深さ優先検索』、『幅優先検索』の実装に関して、これがすぐ見つかるんですよねぇ、楽だなぁ。

 ・集合 (set), グラフ (graph), 経路の探索

著者の方に感謝しまして、メモっときます。


【MIYADAI.com】からテクストをパクる(3)

では、PyQueryで、MIYADAI.comでテクストをパクってみます。

ここまで、BeatifulSoup、boilerpipe、PyQueryとやってみましたが、正直、テクストをぶっこ抜くだけなら、好きなのを使いなって感じです。

 import urllib2
 from pyquery import PyQuery as pq
 o   = urllib2.build_opener()
 r   = urllib2.Request('http://www.miyadai.com/index.php?itemid=1061')
 h   = o.open(r).read()
 div = pq(h).find('div')
 for n in range(0,10000) :
     t = div.eq(n).find('div.itembody').text()
     if t:
        print t
     else:
        break

2015年1月2日金曜日

urllib2とurllib問題

python3とpython2でurllibの仕様が変わっているそうですので、メモっておきます。

  import urllib.request                                              # python3
  import urllib2                                                         # python2

  opener  = urllib.request.build_opener()                 #  python3
  opener  = urllib2.build_opener()                            #  python2

  request = urllib.request.Request('http://xxxx')     #  python3
  request = urllib2.Request('http://xxxx')                #  python2

よろしく、お願いいたします。

PyQueryをインストールする問題

スクレイビングは流行ってんのかぁ?と、お寒いニューロンが幾つもの<???>に悩まされながら。ものはついでと、PyQueryもインストールしてみまっす。

お約束のように、pipを使いまして。

MacBook-Air:~ OnePunchMan$ sudo pip install pyquery
確実に、底辺、そして、あるいは、貧者のMATLABたるpythonで、2015年度の正月休みを、予定通り棒にふっております。嫁さんも、しごく不機嫌です。

しかし、「電池つきの玩具」とマッチポンプな自己リスペクト、わたくし意識高い系のpythonは、さすがに楽っだなぁ。Cでシコシコとコードなんぞ書いてらんねえなぁとは思う。『はじめてのC』なんてエロいだけで、もうそろそろ耐用年数は過ぎたのかなぁとも思いつつ、天空を仰ぐ。いつの日にか"電池つきの玩具"の文字列が、卑猥/NOT卑猥のどっちなのか、ツイッターログを統計解析して、シロクロはっきりさせたいものである。

boilerpipeをインストールする問題

仮想環境からのboilerpipe呼び出しは、出来た訳ではございますか、何かとめんどくせ〜。bagrant upをいちいちやらされるのは嫌だなは、ソフト方面の習性じゃん。

とのことで、anacondaからboilerpipeを動かせるようにしてみましょう。

・boilerpipe(ダウンロード、インストール)

 Get a binary and optionally also the source tarball from the Downloads pageExtract the files somewhere
   tar xvzf boilerpipe-VERSION-bin.tar.gz
   tar xvzf boilerpipe-VERSION-src.tar.gz
 Add boilerpipe-VERSION.jar, nekohtml-1.9.13.jar and xerces-2.9.1.jar to your Java classpath
 (these jar files are included in the binary tarball).
 (Whereas VERSION needs to be replaced by boilerpipe's version number, e.g. 1.0.3).

ついでに、CLASSPATHを設定しますが、anacondaが.bash_profileをいじってるようですので、真似っこします。

・boilerpipe(CLASSPATH)
(.bash_profile)# added for boilerpipeexport CLASSPATH="//Users/tanakayasuhisa/Downloads/boilerpipe-1.2.0://Users/tanakayasuhisa/Downloads/boilerpipe-1.2.0/lib:$PATH"
でコマンドラインで、シェルを再実行いたします。
MacBook-Air:~ AhoahoMan$ source .bash_profile
boilerpipyはjava実装なので、pythonのラッパー(と呼んでよいか?)をインストールせにゃならんので、以下を実行します。

MacBook-Air:~ AhoahoMan$ sudo pip install boilerpipe

ここでJavaのアップデートなどと色気付いたのが、その後のトラブルの元凶、鬼畜の所業、下衆の振る舞いだったのでしょう。


pythonから以下を実行しますと、”Javaが6じゃねえから動かねえぜ、おバカな君は<詳細情報>のボタンを押しな、ケッ!”と言う意味合いの人間を小馬鹿にしたエラーダイアログをMacBook司教(Air派)が出されます。

  from boilerpipe.extract import Extractor
  u = "http://www.miyadai.com/index.php?itemid=1061"
  e = Extractor(extractor='ArticleExtractor', url=u)
  print e.getText()

こんな時に、腹を立ててパソコンを床に叩きつけると、またまた、余計な出費が発生しますので、機械に小馬鹿にされたぐらいで動じてはいけません。ここは、心静かに<詳細情報>ボタンを押しますと、以下のページが表示されます。

appleのサポート神官に感謝しつつ、記載の内容に従い、かなり怪しげなパッケージをインストールしますと、あら不思議。さきほどのpythonソースが動きます。

こんなとき、何が起こったのかは、子羊であるところの消費者(カスタマー)が疑問をもってはいけません。apple教の深遠な思想を思いやるのは、時間の無駄(あるいは、よき人生の無駄)です。

お疲れっす。

【MIYADAI.com】からテクストをパクる(2)

BeautifulSoupが高機能っぽいんですが、どうもテクストの抽出がもっさりしているんで、嫌だなぁって感じでしたが、ありましたよ、boilerpipeが。

まあ何しろ、出来ることが出来りゃあいいんですが。
と言うわけで、下記に示す。

  from boilerpipe.extract import Extractor
  u = 'http://www.miyadai.com/index.php?itemid=1061'
  e = Extractor(extractor='ArticleExtractor', url=u)
  print e.getText()

あざっす。

2014年12月31日水曜日

入門ソーシャルデータ

んでもって、そろそろまいりましょうか。

■入門 ソーシャルデータ 第2版 ―ソーシャルウェブのデータマイニング

どうも、仮想環境を作んなさいなと著者が言うので、あっさり従うことにします。

・VirtualBox
・Vagrant

サンプルソースはGitで管理されているそうでして、アカウントなしでレポジトリをチェックアウトしますと、さっすがにエラー発生いたします。
従いまして、ここはひとつ素直な心でGitHubのアカウントを作成いたしました。

・GitHub(アカウント作成)
・レポジトリチェックアウト(git clone git@github.com:XXXXXXXX.git)

で、案の定と申しますか、OSX Yosemiteでは動きませんでした。とのことで、下記参照しております。

・issues245
・issues243

On OSX Yosemite host, ran into the following issue installing setup tools (ez_setup & pip).Looks like python was not linked as expected by Chef.Resolved it by running vagrant ssh and then sudo ln -s /usr/bin/python /bin/python.After that I had to run vagrant provision.

ここで、やっとのこと、
http://localhost:8888
にアクセスできるようになりました。

RMeCabは偉い問題

石田基広さんのRMeCabは偉いっ。MeCabはそもそも形態素解析だけで、pythonでN-Gram出ないじゃねえの、めんどくっせ〜と、気づきました。RStudio入れておいてよかった、よかった。

■データマイニング入門

では、基本からいっときます。

library(RMeCab)
library(igraph)

b ← "私はあの力士のことを深く愛している。"
c ← RMeCabC(b)
c
c[[1]]

# "名詞" ← どうも配列の名前で参照のようっす
names(c[[1]])
# "私"
c[[1]][1]

setwd("/Users/OnePunchMan/Desktop/R/rmecab")
getwd()

c ← RMeCabText("./test0.txt")
c

# 頻度
r ← RMeCabFreq("./test1.txt") 
r

# 頻度が5以上
r[r$Freq >= 5, ] 

# 頻度が5以上、かつ品詞が名詞
r[r$Freq >= 5 & r$Info1 == "名詞", ]

# 頻度が5以上、かつ(名詞もしくは動詞)
r[r$Freq >= 5 & (r$Info1 == "名詞" | r$Info1 == "動詞"), ]

# 固有名詞
r[r$Info2 == "固有名詞", ]


# 共起語
r  ← collocate("./test2.txt", node="芸者", span=1)
r

# 共起語(t値、MI値)
r2 ← collScores(r, node="芸者", span=1)
r2

# N-Gram
r  ← Ngram("./test3.txt", type=1, pos="名詞", N=2)
r

# N-Gram(DataFrame)
r2 ← NgramDF("./test.txt", type=1, pos="名詞")
r2

# plot ← .Rprofileの変更しないと文字化けしますぞ
g  ← graph.data.frame(r2)
g
plot(g)

# EOF #

しかし、このplotの見づらさは、何とかならんとは思いつつ。
よろしくお願いいたします。

お掃除ロボットの表紙はいかがなものか問題

なんで、今頃になって python、Rなのかって話は、書いておかないと忘れるので。

■5金スペシャル 人工知能が閻魔大王になる日

どうも、例の『お掃除ロボットの表紙はいかがなものか問題』の編集長さんらしいのですが、神保さん「松尾さん、日頃は研究室で何やってんですか?」、松尾さん「pythonでプログラム書いとりますっ!」ってことで、ふ〜ん、そ〜なんって訳です。

底辺のMATLABたるpythonも本望なことでありましょう。

となりますと、東大の研究所も底辺なの?ってことになっちゃいますが、便利なものはありがたく使わせていただこうとの心意気がグッドです。そうなると、設備投資の差は無いはずなので、あとは<愛>があるかどうかの勝負なのでしょう。

■伽藍とバザール
■ノウアスフィアの開墾
■魔法のおなべ

ところで、「教授っ!、PyPIが大きく変化しました。新しいBeautifulSoup、ここはいっちょう派手めに、いっときます?」って会話は、ほぼほぼ、セクハラじゃないかと心配になります。

【MIYADAI.com】からリンクをパクる

同じネタで、リンクを抜き出しましたが、1階層で我慢しとけ。(後でやっから)

# -*- coding: utf-8 -*-
from urllib import urlopen
from bs4 import BeautifulSoup

f = 'http://www.miyadai.com/index.php?itemid=1061'
s = BeautifulSoup(urlopen(f))

print s.title.string
for h in s.findAll('a'):
 t = str(h.get('href'))
 if 'http:' in t :
  print(t)
 elif 'https:' in t :
  print(t)
 else:
  pass

# EOF #

まったまた、なんかズルをしましたが、年末は何かと忙しいので、許せ。

【MIYADAI.com】からテクストをパクる

さてさて、準備は整った訳ですので、そろそろ解析ネタを集めねばならん。
とのことで、ここからネタを集めることにします。


早速ですが、python+BeautifulSoupからいってみます。
話は横にそれますが、BeautifulSoupって風俗があっても、おかしくはないと思います。
誰かが、すでに商標登録してたら、笑えます。


# -*- coding: utf-8 -*-
from urllib import urlopen
from bs4 import BeautifulSoup

soup = BeautifulSoup(urlopen('http://www.miyadai.com/index.php?itemid=1061'))
print soup.title.string

file = open(soup.title.string+".txt", "w")
file.write(soup.title.string)

for h in soup.findAll(**{"class":"itembody"}):
 l = len(h.contents)
 for n in range(0, l):
  t   = str(h.contents[n])
  t1 = t.replace("<br/>","")
  t2 = t1.replace("<b>","")
  t3 = t2.replace("<b","")
  print(t3)
  file.write(t3)

file.close()
# EOF #

お恥ずかしい話ですが<br/>がど〜しても取れないんで、ズルしました(ついでに、<b>、”<b/>もね)。
まあ、あんまし細かいこと言ってると老けるので、不本意ながら我慢しておきます。

2014年12月30日火曜日

関数電卓はいりませ〜ん

最近、関数電卓てなもんを、とんと使わん。

■sympy

底辺のMATLAB問題

結構な自信、がんばれ mathworks

■NumPy for Matlab Users

Rのplot、日本語化けるやん問題

案の定ですが、Rのplotは文字化けされましたので、書いときます。

■mac OS版 Rのplotで日本語表示をしてみた

統計の基礎とか

統計の基礎とか、勉強します?

■小波秀雄『統計学入門』
■福井正康『基礎からの統計学』

RMeCabの使い方

RMeCabの使い方です。

■RMeCabの使い方
■データマイニング入門
■テキストマイニングの基礎

python、R、Mecabなどなど

ええっとですねぇ、とりあえずインストールしたツールを記録しておきます。