NLTKを使う準備をする

普段、文章の形態素解析にはMeCabを使用しているのですが、
とあるサンプルコードを動かそうとした時に、その中でNLTKが使われており、思ったように動かなかったのでそのメモです。

ちなみに、 Anaconda で環境を作ったので、 nltk自体はインストールされていました。


~$ python --version
Python 3.6.8 :: Anaconda, Inc.
~$ pip freeze | grep nltk
nltk==3.3

サンプルコードを動かした時にデータエラーがこちら


LookupError:
**********************************************************************
  Resource punkt not found.
  Please use the NLTK Downloader to obtain the resource:

  >>> import nltk
  >>> nltk.download('punkt')

ドキュメントを読むと、何かダウンロードをやらないといけないようです。

Installing NLTK Data

こういう、基本的な処理であってもエラーになります。


>>> import nltk
>>> nltk.word_tokenize('hello nltk!')
Traceback (most recent call last):
    (略)
LookupError:
**********************************************************************
  Resource punkt not found.
  Please use the NLTK Downloader to obtain the resource:

  >>> import nltk
  >>> nltk.download('punkt')

  Searched in:
    (略)
**********************************************************************

エラーメッセージを見る限りでは、 ‘punkt’ってのだけで良さそうですが、一気に入れてしまっておきましょう。


~$ python
>>> import nltk
>>> nltk.download()
showing info https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/index.xml

CLI内で完結すると思ったら windowが立ち上がったので少しびっくりしました。

all を選んで Downloadします。
結構時間がかかります。

これで動くようになりました。


>>> import nltk
>>> nltk.word_tokenize("hello nltk!")
['hello', 'nltk', '!']

Mac book に R環境構築

普段のデータ分析に使う環境はSQL, python, Tableau, Excelなどで完結させていたのですが、
業務上の都合でRも使うことになったので改めて学習を始めました。

Rを使うこと自他は初めてではなくpython使い始める前に何度か勉強したのですが、
どうにも好きになれなかったんで最近遠ざけていたのですがいよいよそうは言ってられなくなりましたね。

とりあえず、私物のMacにはインストールしていなかったので環境構築から始めます。
まずはRのインストールから。
配布サイトからダウンロードする方法もありますが、
homebrewを使う方法を採用しました。
いくつかのページを見ると、何かリポジトリを tapしないといけないように書いてあるところもあるのですが、
何もせずに brew install コマンドだけで入りました。


~$ brew install r
==> Installing dependencies for r: mpfr, gcc, libpng, openblas, pcre and readline
#(略) 依存パッケージとr本体がインストールされる

# 実行と終了
~$ r

R version 3.5.3 (2019-03-11) -- "Great Truth"
Copyright (C) 2019 The R Foundation for Statistical Computing
Platform: x86_64-apple-darwin18.2.0 (64-bit)

R は、自由なソフトウェアであり、「完全に無保証」です。
一定の条件に従えば、自由にこれを再配布することができます。
配布条件の詳細に関しては、'license()' あるいは 'licence()' と入力してください。

R は多くの貢献者による共同プロジェクトです。
詳しくは 'contributors()' と入力してください。
また、R や R のパッケージを出版物で引用する際の形式については
'citation()' と入力してください。

'demo()' と入力すればデモをみることができます。
'help()' とすればオンラインヘルプが出ます。
'help.start()' で HTML ブラウザによるヘルプがみられます。
'q()' と入力すれば R を終了します。

> q()

続いて、開発環境であるRStudioもインストールします。
これも配布元からダウロードする手もあるのですが、
homebrewで入れました。

これはアプリケーションフォルダに入れてGUIで使いたいので、brew cask を使います。


~$ brew cask install rstudio
==> Tapping homebrew/cask
Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask'...
remote: Enumerating objects: 4110, done.
remote: Counting objects: 100% (4110/4110), done.
remote: Compressing objects: 100% (4103/4103), done.
remote: Total 4110 (delta 24), reused 406 (delta 5), pack-reused 0
Receiving objects: 100% (4110/4110), 1.32 MiB | 187.00 KiB/s, done.
Resolving deltas: 100% (24/24), done.
Tapped 1 command and 4002 casks (4,116 files, 4.2MB).
==> Caveats
rstudio depends on R. The R Project provides official binaries:

  brew cask install r

Alternatively, the Homebrew-compiled version of R omits the GUI app:

  brew install r

==> Satisfying dependencies
==> Downloading https://download1.rstudio.org/desktop/macos/RStudio-1.2.1335.dmg
######################################################################## 100.0%
==> Verifying SHA-256 checksum for Cask 'rstudio'.
==> Installing Cask rstudio
==> Moving App 'RStudio.app' to '/Applications/RStudio.app'.
🍺  rstudio was successfully installed!

これで完了です。
念の為ですが、homebrew何も問題が起きてないことも見ておきました。


~$ brew doctor
Your system is ready to brew.

macにgraphvizをインストールする

決定木の可視化などに使うgraphvizをMacにインストールする手順のメモです。
ついでにpythonライブラリもインストールします。

まず、本体の方はドキュメントにある通り、homebrewでインストールできます。


brew install graphviz

pythonライブラリの方はこちら。 pipコマンドでインストールします。


pip install graphviz

動作確認をかねて Quickstartのコードを動かしてみましょう。


>>> from graphviz import Digraph
>>> dot = Digraph(comment='The Round Table')
>>> dot  #doctest: +ELLIPSIS
>>> dot.node('A', 'King Arthur')
>>> dot.node('B', 'Sir Bedevere the Wise')
>>> dot.node('L', 'Sir Lancelot the Brave')
>>> dot.edges(['AB', 'AL'])
>>> dot.edge('B', 'L', constraint='false')
>>> print(dot.source)  # doctest: +NORMALIZE_WHITESPACE
>>> dot.render('test-output/round-table.gv', view=True)

これでpdfファイルを開いた時に3個の丸を含むグラフが表示されたらOKです。

(2020/3/21 追記)
このページへのアクセスが非常に多い理由が不明だったのですが、
conda でインストールして、うまく動かなかった人がいるのではないかと思ったので補足します。

condaの方にも、 graphviz と言うパッケージがあり、
conda install graphviz でインストールできますが、
これはgraphvizの本体が含まれないラッパーのみで、
しかも本体を別途 brew でインストールしてもパスが通らないことがあるようです。

conda で導入する場合は
conda install python-graphviz
を使います。

ほかのサイトでは、
brew で本体を入れた後に, graphviz と python-graphviz をそれぞれ入れている例を見かけますが、
試したところ、brewも無しで、
conda install python-graphviz
だけ、行えば動きました。

MacにIPAフォントをインストールする

MacにIPAフォントをインストールする手順のメモです。
データサイエンティストがフォントをインストールする目的はおそらく一つしかないと思うのですが、
この作業の目的は、pythonのグラフ描画ライブラリである、matplotlibで作成したグラフ中で日本語を使うためです。

もともとAppleGothicというのが入っているので、それを使ってもいいのですが、
「ー」や「数」など、かなり使用頻度の高い文字が対応していなかったりするので、IPAのフォントをインストールします。

配布元サイト
ダウンロードページ
インストール方法

それでは順番にやっていきましょう。

最初にダウンロードページからフォントファイルをダウンロードします。
ゴシックの方だけあれば十分ですが、せっかくなので
2書体パック(IPAex明朝(Ver.003.01)、IPAexゴシック(Ver.003.01))
を選びました。

ダウンロードしたzipファイルを解答すると中に次の2ファイルと、ライセンス関係のテキストファイルがあります。
ipaexg.ttf
ipaexm.ttf

この2ファイルを
/Library/Fonts
にコピーしたらインストール完了です。

Mac には、Font Book というアプリケーションがあり、インストールされているフォントを確認できますが、
この中に
IPAexゴシックと、IPAex明朝 というのが登場していれば成功です。
フォントを選択して、[i]マークを押すと、詳細な情報が見れます。
この中の、PostScript名 に入っている
IPAexGothic や、 IPAexMincho が、matplotlibに設定するときの名前なのでメモしておきましょう。

Mac(Mojave) に pip で mecab-python3をインストールする時にはまった

環境
MacOS Mojave 10.14.2 (OS)
mecab-python3==0.996.1 (入れようとしたライブラリ)

本当はサクッとインストールして使い方について説明するはずだったのに、非常に苦戦したので記録しておきます。
MeCabをpythonから使うために、mecab-python3をインストールしようとしました。
コマンドはサイトに書いてある通り、こちらです。


pip install mecab-python3

これ、自分のや職場のPC,クラウド環境など、過去にいろんな環境で実行してきましたが、今回初めて失敗しました。

まず最初のエラーは、swig が入ってないとのことだったので、Homebrewで入れます。


brew install swig

この後再実行すると、別のエラー。しかもかなりの長文が出て失敗しました。
問題の箇所を抜粋したのがこちらです。


  warning: include path for stdlibc++ headers not found; pass '-std=libc++' on the command line to use the libc++ standard library instead [-Wstdlibcxx-not-found]
  MeCab_wrap.cpp:3051:10: fatal error: 'stdexcept' file not found
  #include 
           ^~~~~~~~~~~
  1 warning and 1 error generated.
  error: command 'gcc' failed with exit status 1

なにかのheaderがないと言われています。
これについて調べた結果、ネット上各所に command Line Toolsの
最新バージョンが問題であると指摘がありました。
ということで、command Line Toolsのバージョンを落とします。
こちらにアクセス
https://developer.apple.com/download/more/

どこまで古いバージョンなら良いのか確信が持てませんでしたが、
試しにXcode 9.4 向けのdmgファイルをダウンロードしてインストールしました。
その後、改めて最初のpipコマンドを打つと無事にpythonからMeCabが使えるようになりました。

jupyter notebookをバックグラウンドで起動する

普段のPythonプログラミングには、jupyter notebook を使用しています。
AWSのサーバーに立てたnotebookを使っている時は良いのですが、
ローカルのMacで動かしている時は
ターミナルを立ち上げっぱなしにしておかないといけないので少し不便です。

そこで、jupyterをバックグラウンドで動かすようにします。
利用するのは nohupコマンドです。
頻繁に使用するので、下記のような内容でスクリプト化しておくと便利です。


#!/usr/bin/env bash
nohup jupyter notebook >> jupyter.log 2>&1 &

これを実行すると、notebookが立ち上がり、しかも端末を切っても動き続けます。

pyenvにより発生するようになったHomebrewのWarningに対応する

以前対処した時のメモがあるので記事化しておきます。

Macにpyenvをインストールすると、brew doctorでwarningが出るようになります。

yutaro の部分はそれぞれの環境のユーザー名で読み替えてください。


$ brew doctor
Please note that these warnings are just used to help the Homebrew maintainers
with debugging if you file an issue. If everything you use Homebrew for is
working fine: please don't worry or file an issue; just ignore this. Thanks!

Warning: "config" scripts exist outside your system or Homebrew directories.
`./configure` scripts often look for *-config scripts to determine if
software packages are installed, and what additional flags to use when
compiling and linking.

Having additional scripts in your path can confuse software installed via
Homebrew if the config script overrides a system or Homebrew provided
script of the same name. We found the following "config" scripts:
  /Users/yutaro/.pyenv/shims/icu-config
  /Users/yutaro/.pyenv/shims/libpng16-config
  /Users/yutaro/.pyenv/shims/python3.7-config
  /Users/yutaro/.pyenv/shims/python3.7m-config
  /Users/yutaro/.pyenv/shims/python-config
  /Users/yutaro/.pyenv/shims/python3-config
  /Users/yutaro/.pyenv/shims/ncursesw6-config
  /Users/yutaro/.pyenv/shims/pcre-config

要するに、 PATH の中に、 Homebrewが知らない -config ファイルがあると文句を言っています。
環境変数のPATHを確認すると、.pyenv/shims: が追加されているのでこれが問題です。


$ echo $PATH
/Users/yutaro/.pyenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

対応としては、brewコマンドを実行する時だけ、PATHから、 .pyenvディレクトリを外します。
.bash_profileを開いて、下記のエイリアスを追加します。


alias brew="env PATH=${PATH/\/Users\/yutaro\/\.pyenv\/shims:/} brew"

ターミナルを再起動して、結果が反映されていることを確認します。


$ brew doctor
Your system is ready to brew.

Macにpyenvとanacondaをインストールする

Mac book Pro のOSをMojave にアップデートして以来、Homebrew関係の環境がおかしくなってしまっているので、最近環境を作り直しています。
その一環でpyenvも入れ直したので記事にしておきます。

まず前提として、pythonには2系と3系があり、macに標準で入っているのは 2系です。


$ python --version
Python 2.7.10

これはOSも使っているそうで、直接このpythonのバージョンをあげるのは良くないこととされているので、
pyenvというツールを使って、独立した環境に3系のpythonを入れます。
また、機械学習等に使うのが目的なので、便利なライブラリが同梱されたディストリビューションである、
Anacondaを使います。

pyenvの導入手順は リポジトリのReadmeの該当箇所を参考に、以下のコマンドを順に実行します。


$ brew update
$ brew install pyenv
$ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bash_profile
$ exec "$SHELL"

.bash_profile への initの追記についてですが、
shell configuration fileの最後に書けと書いてありますので、
今後.bash_profile ファイルを編集するときにこの後ろに何か書いてしまわないように、注意書きか何かコメントしておきましょう。

Please make sure eval “$(pyenv init -)” is placed toward the end of the shell configuration file since it manipulates PATH during the initialization.z

pyenvが入ったら、Anacondaの導入です。 下記コマンドで、インストール可能なバージョンが一覧表示できます。


$pyenv install -l
-- 略 --
  anaconda3-5.1.0
  anaconda3-5.2.0
  anaconda3-5.3.0
  anaconda3-5.3.1

今回は anaconda3-5.3.1 を導入します。


$ pyenv install anaconda3-5.3.1

さらに、導入したバージョンを利用するように設定して、確認します。


$ pyenv global anaconda3-5.3.1
~$ python --version
Python 3.7.0

昔の Anacondaは version表示するとその名前が出てきた覚えがあるのですが仕様が変わったのかもしれませんね。

MacにMeCabをインストールする

Mac Book Proに 形態素解析ソフトのMeCabをインストールします。

homebrewを導入済みであれば簡単です。
ソフトウェア本体と、IPA辞書を順番にインストールします。


brew install mecab
brew install mecab-ipadic

入ったらテストしましょう。mecabコマンドで起動したあと、形態素解析したい文章を入力します。


~$ mecab
すももももももものうち
すもも	名詞,一般,*,*,*,*,すもも,スモモ,スモモ
もも	名詞,一般,*,*,*,*,もも,モモ,モモ
も	助詞,係助詞,*,*,*,*,も,モ,モ
もも	名詞,一般,*,*,*,*,もも,モモ,モモ
の	助詞,連体化,*,*,*,*,の,ノ,ノ
うち	名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
EOS

終了は Ctrl + d です。

Macbook に Homebrewをインストールする

タイトルにはMacbook と書きましたが、デスクトップでも手順は同じはず。
ちなみに、普段の分析ではMac book Proを使用しています。

手順は簡単で、公式サイトにあるコマンドをターミナルで実行するだけ。
ここにもコマンドを転記しておきますが、公式サイトからコピーしたほうが確実です。


/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Macではmecabもpyenvもhomebrewで導入すると簡単です。