書評:『Pythonによるスクレイピング&機械学習』
写経はほとんどしていませんが、一通り目を通したのでレビューしておきます。
残念ながら読者を選ぶ本ですね。
概要
Pythonによるスクレイピング&機械学習 開発テクニック BeautifulSoup,scikit-learn,TensorFlowを使ってみよう
- 作者: クジラ飛行机
- 出版社/メーカー: ソシム
- 発売日: 2016/12/06
- メディア: 単行本
- この商品を含むブログ (4件) を見る
- 著者によるサポートページ:書籍サポート/スクレイピングと機械学習開発テクニック - クジラ机ブログ
- 出版社サポートページ:読者サポート | Pythonによるスクレイピング&機械学習 開発テクニックBeautifulSoup、scikit-learn、TensorFlowを使ってみよう | ソシム
スクレイピングと機械学習に関するライブラリをサンプルコード付きで紹介している本。
扱っているトピックが幅広い一方、各トピックの内容は浅い。出版社はソシム社*1。
また、発売日が2016年末ということでソフトウェアのバージョンアップの関係から記述が古くなっている箇所がある。
一冊で二度美味しい……ということは全然ない。
目次に文章の自動生成や文字認識など、個人的に興味のそそられるキーワードがいくつかあったので購入。
書いていないこと
- ScraPy関連
- 無限スクロール対策
- 著作権の問題やrobots.txt関連
- tensorflowの詳細
- NumPyの詳細(ブロードキャストなどについても説明無し)
- Pandasの詳細
- 強化学習に関してなぜそのレイヤ構造を選んだ理由、説明
サンプルコードの処理の流れは解説しているけど使用しているモジュールなりメソッドの解説がない(特にに後半)。 ところどころ言葉足らずというか、説明不足な箇所が散見される。
この出版社は編集がいまいち。なお、タイトルどおりプログラミング言語はPythonだけど一箇所だけPHPのツール(と言うか治具?)の箇所がある。
気になった点など
- 索引がしょぼい(特に英数索引)
- CSSセレクタの話は結構ページを割いているが、XPathによる要素の特定の話があまりない
- サンプルコード内で使用しているライブラリに言及していない箇所がある(例:
codecs
など) - 解説されている内容が章ごとに独立している半面、解説されている内容がほとんど連動していない
- 本文の説明とサンプルコード内の処理の順序やパラメータが一致していない(7-1とか)
- 専門用語の使い分けが雑(例:「文字の認識」と「文字認識」)
最も残念なのはディープラーニングの章でそのレイヤ構造を選んだ理由の説明がない。論文を参考にしたなら最低でも参考文献を示すべき。
Phantom.js+Selenium Web driverを使う例が掲載されているけど、Phantom.jsの開発が終了しているので無益。
XPathの件はBeautiful Soup4が非対応だからか。 場合によってはCSSセレクタによる要素の特定が役に立つケースもあるので他のライブラリを使うケースまたはSelenium Web driver使用時は有益だと思うけど。
第3章のDBの解説など後半の他の章で活用していないトピックが結構ある。
文字のある領域の検出をを「文字の認識」と表記している一方で機械学習による文字の判別を文字認識と表記していたりちょっとおかしい箇所がある*2。
ツメが甘いというか、編集、校正は何やってたのという感じ。サンプルコード集としては役に立つけど、コストパフォーマンスは微妙。
スクレイピングと機械学習の両方の知識を活用しているのは牛丼の認識の例だけ。
サンプルコードに関して
ダウンロードしたサンプルと、本文掲載のソースで参照している画像のフォルダ名が違う箇所がある(全部はチェックしていない)。
ライブラリの導入さえミスっていなければダウンロードした方のサンプルコードは概ね動作する。
環境構築について
本文ではDockerの利用を推奨している。残念ながら極めて中途半端なのでVirtualBoxを使うことをおすすめする。
Dockerの説明も簡潔そのもの。画像の表示などDockerではうまくいかないであろう箇所についてフォローがない。
TensorflowとDocker
例えばTensorFlowのDockerイメージを使用するとJupyter Notebookは既にインストールされているということが明記されていない。
そのせいで直後のセクションで「インストールすることもできます」という変な文章に遭遇する。
なお、p.202のTensorflowのDockerイメージの導入手順は引数のURLがおかしい*3ので失敗する。
Unable to find image 'b.gcr.io/tensorflow/tensorflow:latest-devel' locally docker: Error response from daemon: Get https://b.gcr.io/v2/tensorflow/tensorflow/manifests/latest-devel: unknown: b.gcr.io domain is disabled. See https://cloud.google.com/container-registry/docs/support/deprecation-notices. See 'docker run --help'.
ついでにいうとポート番号のマッピングもしてない。このままではJupyter Notebookにアクセスできない。
正常にインストールするには、例えば以下のようにする。
■最新の開発番のイメージ
$ docker run -it -p 8888:8888 tensorflow/tensorflow:latest-devel
わざわざlatest-devel
をインストールしようとしている理由は書いていない。
Jupyter NoteBookは自動起動しない。コンテナ上のJupyter NoteBookに接続するためにポート8888番をマッピングしている点に注意。
■バージョン指定なし
$ docker run -it -p 8888:8888 tensorflow/tensorflow:latest-py3
自動的にJupyter Notebookが起動する。
Copy/paste this URL into your browser when you connect for the first time, to login with a token:
というメッセージが表示されるのでその下のURLをブラウザのロケーションバーにコピーしてEnterキーを押すとアクセスできる。
Jupyter Notebookの自動起動が不要な場合は、以下のようにする。
$ docker run -it -p 8888:8888 tensorflow/tensorflow:latest-py3 /bin/bash
なお、末尾の:latest-py3
というタグを外すと、Python 2.xでJupyter Notebookが起動する。
そのほか
Tensofrflow の、SummaryWriter
というプロパティは廃止されているため、Chapter 5-5のコードはそのままでは動かない。代わりにFileWriter
を使う。
tf.train.SummaryWriter
変更後
tf.summary.FileWriter
TensorFlow の "AttributeError: 'module' object has no attribute 'xxxx'" エラーでつまづいてしまう人のための移行ガイド
まとめ
スクレイピングの本としては残念ながら中途半端。
ちょっと肩透かしを食らった感じは否めず。 購入したのは少し前だけど発売から1年半以上経っているのでさすがに厳しい。
自力で細々としたエラーに対処しできる自信がないなら購入しないほうが良いと思う。
はっきりいってしまうと値段の割には満足感は乏しい。ぶっちゃけお金返して欲しいな……。
本書を読みこなせるレベルの方なら関連キーワードさえ把握してしまえばあとはネット検索でどうにかなるのではないでしょうか。
むやみにググるよりは時間の短縮になるとは思います。
いろいろと惜しい本です。
eqMac2 (サウンドイコライザー)のインストール
macOS用のサウンドイコライザー、eqMac2のインストール手順。
本来の用途ではありませんが、難聴による聞きづらさの改善用途で使用しています。
eqMac2とは
eqMac2はmacOS用のサウンドイコライザーです。再生される音のエフェクトをかけるためのソフトウェア。
nodeful/eqMac2: 🎧 - System-wide Audio Equalizer for the Mac
特定のアプリケーションではなく、システム全体(system wide)に作用するためmac上で動作するすべてのアプリケーションに 効果を加える事ができます。
主な対象ユーザー
- サウンドイコライザー機能を持たないサウンド系アプリケーションの出力する音に変化をつける
- すべてのアプリケーションで同じサウンド設定を使いたい、またはメニューバーから設定を管理したい
- 軽度〜中度難聴者の耳の特性に合わせてMacのサウンド出力を調整する
準備
- 「 システム環境設定」の、「セキリティとプライバシー」を開く。
- 画面中央下の、「ダウンロードしたアプリケーションの実行許可」の設定を変更。
- 「Appストアと確認済みの開発元からのアプリケーションを許可」という選択肢をONに
「すべてのアプリケーションを許可」という状態でもインストール自体は可能です。
インストール方法
まず、プロジェクトのページから「Download」をクリックしてdmgファイルをダウンロード。
ディスクイメージ(dmg)ファイルをダブルクリックしてアイコンをドラッグアンドドロップする方式です。
事前に上記の設定変更を行っている場合は極めて簡単です。以下は事前に設定変更をしていなかった場合の手順になります。
アイコンをドラッグしてドロップ
アプリケーションフォルダから起動(Cmd+SpaceからeqMac2と入力してもOK)
インストールするかの確認
セキリティ上の理由でブロックしたというダイアログの表示(事前に設定変更していれば不要)
表示のタイミングが前後する可能性があります。
再起動(環境に依存)
環境によっては再起動が必要。
ポップアップメッセージが表示されないなら再起動は不要。
初期設定
初回起動時のみ設定についてのポップアップウインドウ(下記の画像)が表示される。
内容は新しいバージョンのリリースを自動的にチェックするかの確認。
特に問題がない限り"Check Automatically"(自動的に確認)をクリックしておく。)
ステータスバーにMの文字をあしらったアイコン()が表示されるのでクリックすると設定メニューが表示される。
上部のプルダウンメニューで設定を切り替える。初期状態ではFlatとCustomのみだが"Show default preset"というチェックボックスをオンにすると、プリセットの設定が利用できるようになる。
Band の切り替え
設定メニューの"31 Bands”というボタンをクリックするとより細かく分割した周波数帯域で調整できる(その分処理能力を要求される)。
設定の保存
カスタマイズした設定は設定メニューの右上のフロッピーディスクのアイコンで保存できる。左上のアイコンはリセット。
まとめ
一般的な難聴による聴力の低下、特に高周波領域の聴力低下に有効。
残念ながら私の耳では本来の用途はであるサウンドイコライザーとしての性能については判断できません。
なお、聴力に問題を感じる場合はまず耳鼻科へ。サウンドイコライザーの設定にも聴力検査のデータがあると確実です。