今日も微速転進

ここではないどこかへ

今週のふりかえり(2018年7月第3週)

f:id:atuyosi:20180723131341j:plain:w480

暑くて泣きそう。同じエアコンを使うにしても、電気代の安い分、QoLはタイの方が上では。

メルカリで間違えて改訂版の発売されている本の古い版を購入してしまってげんなりしている……。

妙に安いのでちょっと変だとは思ったけど。

続きを読む

書評:『Pythonによるスクレイピング&機械学習』

写経はほとんどしていませんが、一通り目を通したのでレビューしておきます。

残念ながら読者を選ぶ本ですね。

概要

スクレイピング機械学習に関するライブラリをサンプルコード付きで紹介している本。

扱っているトピックが幅広い一方、各トピックの内容は浅い。出版社はソシム社*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年半以上経っているのでさすがに厳しい。

自力で細々としたエラーに対処しできる自信がないなら購入しないほうが良いと思う。

はっきりいってしまうと値段の割には満足感は乏しい。ぶっちゃけお金返して欲しいな……。

本書を読みこなせるレベルの方なら関連キーワードさえ把握してしまえばあとはネット検索でどうにかなるのではないでしょうか。

むやみにググるよりは時間の短縮になるとは思います。

いろいろと惜しい本です。

*1:この出版社、広く浅くという感じの本が多い印象。

*2:他にもあったけど忘れた

*3:短縮URLの廃止は仕方ないか

eqMac2 (サウンドイコライザー)のインストール

macOS用のサウンドイコライザー、eqMac2のインストール手順。

本来の用途ではありませんが、難聴による聞きづらさの改善用途で使用しています。

eqMac2とは

bitgapp.com

eqMac2はmacOS用のサウンドイコライザーです。再生される音のエフェクトをかけるためのソフトウェア。

オープンソース

nodeful/eqMac2: 🎧 - System-wide Audio Equalizer for the Mac

特定のアプリケーションではなく、システム全体(system wide)に作用するためmac上で動作するすべてのアプリケーションに 効果を加える事ができます。

主な対象ユーザー

  • サウンドイコライザー機能を持たないサウンド系アプリケーションの出力する音に変化をつける
  • すべてのアプリケーションで同じサウンド設定を使いたい、またはメニューバーから設定を管理したい
  • 軽度〜中度難聴者の耳の特性に合わせてMacのサウンド出力を調整する

準備

  1. 「 システム環境設定」の、「セキリティとプライバシー」を開く。
  2. 画面中央下の、「ダウンロードしたアプリケーションの実行許可」の設定を変更。
  3. 「Appストアと確認済みの開発元からのアプリケーションを許可」という選択肢をONに

f:id:atuyosi:20180709222902j:plain:w480

「すべてのアプリケーションを許可」という状態でもインストール自体は可能です。

インストール方法

まず、プロジェクトのページから「Download」をクリックしてdmgファイルをダウンロード。

ディスクイメージ(dmg)ファイルをダブルクリックしてアイコンをドラッグアンドドロップする方式です。

事前に上記の設定変更を行っている場合は極めて簡単です。以下は事前に設定変更をしていなかった場合の手順になります。

  1. アイコンをドラッグしてドロップ
    f:id:atuyosi:20180709221601j:plain:w480

  2. アプリケーションフォルダから起動(Cmd+SpaceからeqMac2と入力してもOK)
    f:id:atuyosi:20180709221538j:plain

  3. インストールするかの確認
    f:id:atuyosi:20180709221836j:plain
    f:id:atuyosi:20180709222003j:plain

  4. セキリティ上の理由でブロックしたというダイアログの表示(事前に設定変更していれば不要)
    f:id:atuyosi:20180709222029j:plain
    f:id:atuyosi:20180709222038j:plain:w480
    表示のタイミングが前後する可能性があります。
    f:id:atuyosi:20180709222041j:plain

  5. 再起動(環境に依存)
    環境によっては再起動が必要。 f:id:atuyosi:20180709222507j:plain
    ポップアップメッセージが表示されないなら再起動は不要。

初期設定

初回起動時のみ設定についてのポップアップウインドウ(下記の画像)が表示される。

f:id:atuyosi:20180709222437j:plain

内容は新しいバージョンのリリースを自動的にチェックするかの確認。
特に問題がない限り"Check Automatically"(自動的に確認)をクリックしておく。)

ステータスバーにMの文字をあしらったアイコン(f:id:atuyosi:20180712160011j:plain)が表示されるのでクリックすると設定メニューが表示される。

f:id:atuyosi:20180712160139j:plain

上部のプルダウンメニューで設定を切り替える。初期状態ではFlatとCustomのみだが"Show default preset"というチェックボックスをオンにすると、プリセットの設定が利用できるようになる。

f:id:atuyosi:20180712160545j:plain

Band の切り替え

設定メニューの"31 Bands”というボタンをクリックするとより細かく分割した周波数帯域で調整できる(その分処理能力を要求される)。

f:id:atuyosi:20180712160516j:plain

設定の保存

カスタマイズした設定は設定メニューの右上のフロッピーディスクのアイコンで保存できる。左上のアイコンはリセット。

まとめ

一般的な難聴による聴力の低下、特に高周波領域の聴力低下に有効。

残念ながら私の耳では本来の用途はであるサウンドイコライザーとしての性能については判断できません。

なお、聴力に問題を感じる場合はまず耳鼻科へ。サウンドイコライザーの設定にも聴力検査のデータがあると確実です。

広告