Stimulator

機械学習とか好きな技術話とかエンジニア的な話とかを書く

UbuntuにPythonのWebスクレイピングと自然言語処理環境を作るメモ

- はじめに -

Webから文章を取得して、自然言語処理かけた後に機械学習にかけるみたいな事はままある。

大体Docker使えば良いんだけど、そうじゃないんだよなという時のための個人的なメモ。

Ubuntu 16.04でPython3.xなら大体インストールできるはず。


 

- スクレイピング周り -

lxmlなるHTML解析パーサに関連したパッケージを入れた後に下記を導入する

  • joblib 並列稼働
  • selenium ブラウザ操作
  • cchardet 文字コード推定
  • requests HTTP通信
  • BeautifulSoup4, lxml HTML解析
sudo apt-get install -y libxml2-dev libxslt1-dev
sudo pip install joblib selenium cchardet requests BeautifulSoup4 lxml

 
以下参考に使いたいheadlessブラウザを導入し動作チェックをしておく。

・PhontomJS:
PythonでWebスクレイピングする時の知見をまとめておく - Stimulator

wget -O /tmp/phantomjs-2.1.1-linux-x86_64.tar.bz2 https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2
cd /tmp
bzip2 -dc /tmp/phantomjs-2.1.1-linux-x86_64.tar.bz2 | tar xvf -
sudo mv /tmp/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin/
phantomjs --version

 
・headless Chrome:
headless chromeをPythonのseleniumから動かして引数を考えた (Ubuntu 16.04) - Stimulator

wget https://chromedriver.storage.googleapis.com/2.29/chromedriver_linux64.zip
unzip chromedriver_linux64.zip
sudo mv chromedriver /usr/local/bin/
sudo apt-get install libappindicator1
sudo touch /etc/default/google-chrome
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb

 
・headless Firefox:
Firefox headlessモードをUbuntuとPythonとSelenium環境で動かす - Stimulator

sudo apt-add-repository ppa:mozillateam/firefox-next
sudo apt-get update
sudo apt-get install firefox
wget https://github.com/mozilla/geckodriver/releases/download/v0.18.0/geckodriver-v0.18.0-linux64.tar.gz
tar -zxvf geckodriver-v0.18.0-linux64.tar.gz
sudo cp ./geckodriver /usr/local/bin


 

- 自然言語処理周り -

Mecab

事前にhttp://taku910.github.io/mecab/#download から最新リリースのmecab-hoge.tar.gzをダウンロードしてscpしておく

tar xvf mecab-*.tar.gz
cd mecab-*
 ./configure --prefix=$HOME/local --with-charset=utf8 --enable-utf8-only
make
make install

bashrcに書く

export PATH="$HOME/local/bin:$PATH"

 
・IPAdic

事前にhttp://taku910.github.io/mecab/#download から最新リリースのmecab-ipadic-hoge.tar.gzダウンロードしてscpしておく

tar xzvf mecab-ipadic-*.tar.gz
cd mecab-ipadic-*/
./configure --with-charset=utf8 --with-dicdir=$HOME/local/lib/mecab/dic/ipadic
make
make install

 
・neologdなるIPAdicの拡張辞書

git clone https://github.com/neologd/mecab-ipadic-neologd.git
cd mecab-ipadic-neologd/
sudo bin/install-mecab-ipadic-neologd -n -u


 

- Python周り -

MeCabPythonバインディングや前処理モジュールのneologdn、正規化の分散表現にしたい場合やBoWとかも使いたいだろうからgensim、Word2vec、sklearnを入れてひとまず下準備おわり。

sudo pip install mecab-python3
sudo pip install neologdn
sudo pip install numpy
sudo pip install scipy
sudo pip install gensim
sudo pip install cython
sudo pip install word2vec
sudo pip install scikit-learn
sudo pip install git+https://github.com/miurahr/pykakasi

厄介なのはpykakasiくらい。
(pipで普通にインストールするとビルドで死ぬ)


neologdn参考:mecab-neologd 前処理用 Python モジュール neologdn 公開しました - Debug me
pykakasi参考:Django Python 漢字・ひらがな・カタカナをローマ字に変換する~pykakasi - Djangoroidの奮闘記


 

- おわりに -

多分これでなんとかなると思います(自分宛て)。