札幌とか、Rによる自動データ収集とか

あ、どーも僕です。

札幌とか

昨日まで札幌へ行っておりました。パンケーキと寿司とラーメンを食べて、 動物園と水族館と献血へ行って、FOSS4GとDBASに参加したりしてました。

札幌へ行ったメインの理由はFOSS4Gです。

Jiriさんや、マピオンの清水さんによる、いまどきなベクタータイルの作り方と配信体制は、 とても勉強になりました。これを機会に我流を改めます。 京都大学の堤田先生によるGoogleEarthEngineの利用例を聞けたのは良かったです。 全球レベルのデータが一瞬で処理されていく様は信じられませんでした。 マンケンドール検定って久しぶりに聴いたので懐かしかったです。 長野県の戸田さんが開発したCS立体図の作成方法が公開されていることで、 勉強会があったりWeb地図タイル化があったり海底への拡張版が開発されている 話には興奮しました。ノーザンシステムの一行はハッカー集団、という感じで かっこよかったです。

知らないことばかりだったので、情報を消化仕切れていないです。 これから頑張ります。

多くの皆さんが発表された技術をgithubで 公開しておりました。国土地理院地理院地図をgithubに公開しており、 この業界の人たちのマインドは本当に尊敬できます。


Rによる自動データ収集とか

先週、Rによる自動データ収集を一周しました。練習問題は解いていません。 ここでは概要、感想、気になる点を載せます。

Rによる自動データ収集: Webスクレイピングとテキストマイニングの実践ガイド

Rによる自動データ収集: Webスクレイピングとテキストマイニングの実践ガイド

概要

Rによる自動データ収集では、Web技術とはからはじまり、RによるWebスクレイピングの方法と、 Rを用いた可視化や分析技術(テキストマイニング)を解説しています。また、Webスクレイピング時のマナーなど、 分析技術以外についても言及されております。

スクレイピングにはRCurlというcurlコマンドをRから使うパッケージを使っています。 httrパッケージには本文で少し触れられています。rvestパッケージはサポートページにある 訳者らのスクリプトでは使われていました。

詳しい目次は共立出版のHPからどうぞ. サポートページもあります。

Rによる自動データ収集―Webスクレイピングとテキストマイニングの実践ガイド―

すでにブログに感想を書かれている方がおられます。

『Rによる自動データ収集』を読んだ

感想

Webスクレイピングには、Webデータを配信、抽出、保存する技術がそれぞれ必要であるとしている 導入のストーリーがわかりやすく、600ページが必要となったは納得でした。

周辺技術を含めてWebスクレイピングを学べたのは大きかったと思います。 一方で本として完成度が8割かなという印象です。 読んでいて気になる点が多くストレスが大きかったです。 本書の売りは原著のダメな部分を修正してくれていることだったのでわ?という感じです。

気になった点

個人的に読んでいて気になった点です。わたしの技術力の問題でもありますが、 こんなんでも止まる人がいるよ、ということで。

p.33の中段の囲い

Cosmic Sans MSをダブルでなくてシングルで囲む

p.70の図3.4

2行目の<>内に、"http://www.w3.org/Graphics/SVG1.1/DTD/svg11.dtd"が必要

8行目のfont-weghtはfont-weight

p.79の下段

XMLGetAttrでなくxmlGetAttr

p.108の表4.2の主要なXpath関数の概要

この表の戻り値はすべて特殊例。自分で手を動かしながらだとわかるが、この表だけを見たときには迷う。特にcount関数の戻り値に???となり読むのが止まる。

p.113の上段

次の文章がわかりずらかった。=演算子を使うという話なのはずなのに、この文だと包含なので混乱した。

以下で、ドキュメント内においてdate属性に引用符で囲まれたOctober/2011を含むすべての<div>ノードを選択する

原著は次。値がOctober/2011であるdate属性を含む<div>ノードを選択すれば、October 2011に書かれた引用文を含んだdivが選択できているという感じ?

To select all <div> nodes in the document, which contain quotes written in October 2011, that is, contain an attribute date with the value October/2011, we can write

p.163の中段

ハンドルを閉じるは、ハンドルを複製するの間違い

p.166の中段

「dupCurlHandle()を使うと、・・・」の下にあるコマンドがdupCurlHandleを使ってなくて、 その次にでてくるコマンドと同じになっている。原著ではdupCurlHandleのコマンドになっている。

p.166の中段

「セッション全体に適用されるグローバル設定には二つある」のセッションが何を指しているのかわからなかった。

p.286の中段

わたしの環境ではhtmlParseは失敗したため、rvest::read_htmlを使いました

p.309の下段

getURLを実行してSSLのエラーでるところなのに、代入操作でSSLエラーが出力されている。

p.312の上段

シングルクォーテーションを二つ書くことで、ダブルクォーテーションを表現しているように見える。 読んでいて、うっ、となるのだがなんというフォントなのだろうか….

これ以降に同じものが多数でてくる。

p.315 上段

「それを踏まえ、・・・」の後のコマンドが飛んでる。結果だけが書かれている。

p.319 9.1.9.2 SelenuimとRwebdriverパッケージ

Windowsでは動かなかった。できた人がいたら教えてください。 個人的にそのうちlinuxで試す。

p.330 中段

getForm関数の引数として与えるURLが入ったオブジェクトは、weather_urlでなく、forecast_url

p.332 9.1.11 OAuthによる認証

わからなかったので保留。いつか試す。

p.348 Rとの親和性

「とはいえ、Webサービス・・・」はRの話でなくて、WebAPIを使ったデータ収集の話だと思う。つまり、「とはいえ」は「RがWebAPIを使うのに適してない、とはいえ」ではなくて、 「WebAPIにも欠点がある、とはいえ」という意味のはず。

p.369

10章はスクレイピングする部分が本文とおりに行かないが、それっぽいことはできる。

p.371 上段

748件でなくて747件。が二カ所

p.374 下段

Corpurs関数を使って作成したものはその後のmeta関数を使った処理ができなかった。代わりにVCorpusを使うといけた。

p.401 下段

図10.2を見て、トピック1の事後分布は「Business, Innovation, and Skills」が大きいとしているが、 「Ministry of Defence」の間違いだと思う。

p.415 下段

「writing progress to a log file」という見出しが抜けている。

p.416 中段

「ここでは3で初期化するところから始める」という一言の意味がよくわらかない。

p.425~ 第3部

第3部は本文は置いといて、基本的にはサポートページのスクリプトを使う。 ただし、サポートページのスクリプトも動かない場合や、逆に本文の方が動く場合がある。 動いたり動かなかったりするのがしんどかったので、 追試はせずに第3部は読み物とした。

環境

Session info -------------------------------------------------------------------------------
 setting  value                       
 version  R version 3.4.0 (2017-04-21)
 system   x86_64, mingw32             
 ui       Rgui                        
 language (EN)                        
 collate  Japanese_Japan.932          
 tz       Asia/Tokyo                  
 date     2017-07-02                  

Packages -----------------------------------------------------------------------------------
 package     * version    date       source                            
 assertthat    0.2.0      2017-04-11 CRAN (R 3.4.0)                    
 base        * 3.4.0      2017-04-21 local                             
 bindr         0.1        2016-11-13 CRAN (R 3.4.0)                    
 bindrcpp      0.2        2017-06-17 CRAN (R 3.4.0)                    
 bitops      * 1.0-6      2013-08-17 CRAN (R 3.4.0)                    
 broom         0.4.2      2017-02-13 CRAN (R 3.4.0)                    
 cellranger    1.1.0      2016-07-27 CRAN (R 3.4.0)                    
 colorspace    1.3-2      2016-12-14 CRAN (R 3.4.0)                    
 compiler      3.4.0      2017-04-21 local                             
 datasets    * 3.4.0      2017-04-21 local                             
 DBI           0.7        2017-06-18 CRAN (R 3.4.0)                    
 devtools    * 1.13.2     2017-06-02 CRAN (R 3.4.0)                    
 digest        0.6.12     2017-01-27 CRAN (R 3.4.0)                    
 dplyr       * 0.7.1      2017-06-22 CRAN (R 3.4.0)                    
 forcats       0.2.0      2017-01-23 CRAN (R 3.4.0)                    
 foreign       0.8-69     2017-06-21 CRAN (R 3.4.0)                    
 fortunes    * 1.5-4      2016-12-29 CRAN (R 3.4.0)                    
 ggplot2     * 2.2.1.9000 2017-06-01 Github (tidyverse/ggplot2@f4398b6)
 ggsci       * 2.7        2017-06-12 CRAN (R 3.4.0)                    
 glue          1.1.1      2017-06-21 CRAN (R 3.4.0)                    
 graphics    * 3.4.0      2017-04-21 local                             
 grDevices   * 3.4.0      2017-04-21 local                             
 grid          3.4.0      2017-04-21 local                             
 gtable        0.2.0      2016-02-26 CRAN (R 3.4.0)                    
 haven         1.0.0      2016-09-23 CRAN (R 3.4.0)                    
 hms           0.3        2016-11-22 CRAN (R 3.4.0)                    
 httr        * 1.2.1      2016-07-03 CRAN (R 3.4.0)                    
 jsonlite    * 1.5        2017-06-01 CRAN (R 3.4.0)                    
 lattice       0.20-35    2017-03-25 CRAN (R 3.4.0)                    
 lazyeval      0.2.0      2016-06-12 CRAN (R 3.4.0)                    
 lubridate     1.6.0      2016-09-13 CRAN (R 3.4.0)                    
 magrittr      1.5        2014-11-22 CRAN (R 3.4.0)                    
 maps        * 3.2.0      2017-06-08 CRAN (R 3.4.0)                    
 memoise       1.1.0      2017-04-21 CRAN (R 3.4.0)                    
 methods     * 3.4.0      2017-04-21 local                             
 mnormt        1.5-5      2016-10-15 CRAN (R 3.4.0)                    
 modelr        0.1.0      2016-08-31 CRAN (R 3.4.0)                    
 modeltools    0.2-21     2013-09-02 CRAN (R 3.4.0)                    
 munsell       0.4.3      2016-02-13 CRAN (R 3.4.0)                    
 nlme          3.1-131    2017-02-06 CRAN (R 3.4.0)                    
 NLP         * 0.1-10     2017-02-21 CRAN (R 3.4.0)                    
 parallel      3.4.0      2017-04-21 local                             
 pkgconfig     2.0.1      2017-03-21 CRAN (R 3.4.0)                    
 plyr          1.8.4      2016-06-08 CRAN (R 3.4.0)                    
 psych         1.7.5      2017-05-03 CRAN (R 3.4.0)                    
 purrr       * 0.2.2.2    2017-05-11 CRAN (R 3.4.0)                    
 R6            2.2.2      2017-06-17 CRAN (R 3.4.0)                    
 Rcpp          0.12.11    2017-05-22 CRAN (R 3.4.0)                    
 RCurl       * 1.95-4.8   2016-03-01 CRAN (R 3.4.0)                    
 readr       * 1.1.1      2017-05-16 CRAN (R 3.4.0)                    
 readxl        1.0.0      2017-04-18 CRAN (R 3.4.0)                    
 reshape2      1.4.2      2016-10-22 CRAN (R 3.4.0)                    
 rjson       * 0.2.15     2014-11-03 CRAN (R 3.4.0)                    
 RJSONIO     * 1.3-0      2014-07-28 CRAN (R 3.4.0)                    
 rlang         0.1.1      2017-05-18 CRAN (R 3.4.0)                    
 rvest       * 0.3.2      2016-06-17 CRAN (R 3.4.0)                    
 scales        0.4.1      2016-11-09 CRAN (R 3.4.0)                    
 sf          * 0.5-1      2017-06-23 CRAN (R 3.4.0)                    
 slam          0.1-40     2016-12-01 CRAN (R 3.4.0)                    
 SnowballC   * 0.5.1      2014-08-09 CRAN (R 3.4.0)                    
 stats       * 3.4.0      2017-04-21 local                             
 stats4        3.4.0      2017-04-21 local                             
 stringi       1.1.5      2017-04-07 CRAN (R 3.4.0)                    
 stringr     * 1.2.0      2017-02-18 CRAN (R 3.4.0)                    
 tibble      * 1.3.3      2017-05-28 CRAN (R 3.4.0)                    
 tidyr       * 0.6.3      2017-05-15 CRAN (R 3.4.0)                    
 tidyverse   * 1.1.1      2017-01-27 CRAN (R 3.4.0)                    
 tm          * 0.7-1      2017-03-02 CRAN (R 3.4.0)                    
 tools         3.4.0      2017-04-21 local                             
 topicmodels * 0.2-6      2017-04-18 CRAN (R 3.4.0)                    
 udunits2      0.13       2016-11-17 CRAN (R 3.4.0)                    
 units         0.4-5      2017-06-15 CRAN (R 3.4.0)                    
 utils       * 3.4.0      2017-04-21 local                             
 withr         1.0.2      2016-06-20 CRAN (R 3.4.0)                    
 XML         * 3.98-1.9   2017-06-19 CRAN (R 3.4.0)                    
 xml2        * 1.1.1      2017-01-24 CRAN (R 3.4.0)