【備忘録】Doc2vecでWikipediaのデータを使えるようにする準備手順

　最近、研究でDoc2vecに手を出しはじめたのですが、Wikipediaのデータで学習モデルを作る段階でいろいろつまづいて悲しい思いをしたので(最終的にはなんとかなったものの)、２度とこのような思いをしないためのメモです。
　ちなみにこれが初投稿なので、変なところがあったらすみません。


---


# ■ 主な内容
- Wikipediaからダンプデータをダウンロードする
- bundleを使ってwp2txtをインストール
- rbenvを用いたruby2.3.0のインストール
- wp2txtを使ってダンプデータを使える状態にする

自分がやった流れは簡単に言うと以上です。
しかし、最後の方に色々あって、結局どの手順が最適解なのかがわからなくなってしまったので、あまり他の人の参考にはならないかもしれません。

特に、途中の`bundleを使ったwp2txtのインストール`が結果的に意味があったのかわかりません。
先に`ruby2.3.0のインストール`から行い、それで`wq2txtのインストール`ができなければ`bundle`を使用するやり方に挑戦する流れの方が、手間が少ない可能性があります。


---



# ■ 参考資料
手当たりしだい、いろいろなページを参考にさせて頂いて試したのですが、最終的にこちらのページを主に参考にさせて頂いてなんとかなりました。
一応、以下の文中でも適宜リンクを貼らせていただいています。

- [word2vecで遊ぶ | Eyepod touch](http://eyepodtouch.net/?p=77)
<p>
- [wp2txtでwikipediaのコーパスを作るまでの道のり](http://qiita.com/wwacky/items/8a9eb543171afea90c0a)
<p>
- [Mac OS X el captionでgem installする際にpermissionエラーが発生する場合の対処方法 | Web活メモ帳](http://blog.verygoodtown.com/2016/01/mac-os-x-el-caption-gem-install-permission/)
<p>
- [bundle install で nokogiri をインストールしろと言われる解決方法](http://qiita.com/pugiemonn/items/4b23a709ed194b02be6d)
<p>
- [wikipediaコーパスを気軽に使いたい人へ](http://jabberwocky.hatenablog.com/entry/2016/11/12/061709)
<p>
- [MacにrbenvでRubyを簡単にインストールしてみる](http://qiita.com/dtlabo/items/4d5922b6c3e4face35b6)


---








# ■ 自分の環境
参考になるかわからないのですが、一応。
- OS X EL Capitan (10.11.6)

また、rbenvを用いたrubyのインストールの際には、homebrewを使いますが、自分の環境ではすでにhomebrewがある状態でした。そのためhomebrewのインストールのやり方については述べていませんので注意してください。

---






# ■ 実際にやったこと

大まかな流れは参考資料にも載せた[こちら](http://eyepodtouch.net/?p=77)を参考にしました。





## ● wikipediaダンプデータ

まずはWikipediaからダンプデータをダウンロード

```
$ wget http://dumps.wikimedia.org/jawiki/latest/jawiki-latest-pages-articles.xml.bz2
```
自分の場合は2.25GBで、30分ほどでした。

ダンプファイルを入手出来るwikipediaのurlは、いろいろなページを参考にして幾つかのパターンがありましたが、[このページ](https://dumps.wikimedia.org/jawiki/)の一番下の`latest/`から入手出来るデータが日本語記事で一番最近のものぽいので、これが良いのではないかともいます。
ちなみに自分は一回目にそもそも日本語の記事とか関係なく、全ての記事を取得するurlを書いてしまったみたいで大変なことになりました。

---







## ● wp2txt


ここからが戦いでした。

ダンプデータを使える状態にうまく処理してくれるらしいwp2txt
とりあえずターミナルにインストールをお願いする

```
$ gem install wp2txt 
```

しかし怒られる

>```
Fetching: htmlentities-4.3.4.gem (100%)
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.
```

とりあえずエラーの内容でググってみて、同じようにwp2txtのインストールで苦しんだ同じような人がたくさんいることがわかりました。

---

- <b> 自分はこの次にbundleを使用したwp2txtのインストールを行っていますが、先にRuby2.3.0以上のインストールをおこない、もう一度`$ gem install wp2txt 
`を試す方が余計な手間がかからない可能性があります。</b>

もし先にRubyをインストールしてからうまくいった人がいればぜひ教えてください。

---






## ● bundleのインストール

[bundleというものを使用して解決したページ](http://blog.verygoodtown.com/2016/01/mac-os-x-el-caption-gem-install-permission/)を発見したので、ためしてみる。

```
$ gem install bundle
Fetching: bundler-1.13.6.gem (100%)
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.
```

いや同じエラー出るやん。だめなやつやん。

手詰まりかと思いましたが、運良く[こちら](http://blog.verygoodtown.com/2016/01/mac-os-x-el-caption-gem-install-permission/)を見つけることができ、これを参考に進めました。

---



- <b>bundleインストール先の指定</b>

インストール先を/usr/local/binに変更する事でエラーを回避できるそうです。

こちらでターミナルにお願いします。

```
$ sudo gem install -n /usr/local/bin bundler
```

>```
Password:
Fetching: bundler-1.13.6.gem (100%)
Successfully installed bundler-1.13.6
Parsing documentation for bundler-1.13.6
Installing ri documentation for bundler-1.13.6
1 gem installed
```

うまくいったっぽい！よかった！

---



- <b>bundleの続き</b>

うまくインストールできたようなので、先ほどの[こちら](http://qiita.com/wwacky/items/8a9eb543171afea90c0a)を参考にbuncleの続きを進めます。

```
$ mkdir ~/ruby_bundle
$ cd ~/ruby_bundle
$ bundle init
Writing new Gemfile to /file_to_path/ruby_bundle/Gemfile
$ echo 'gem "wp2txt"' >> Gemfile
$ bundle install
```

最後の行で、いろいろ必要なものをインストールしてくれるみたいです。(よくわかってない)

---

途中までいい感じだったのですが、残念ながら、最後になんかエラーっぽいのが出ました。

>```
An error occurred while installing nokogiri (1.6.8.1), and Bundler
cannot continue.
Make sure that `gem install nokogiri -v '1.6.8.1'` succeeds before bundling.
```

うーん、ノコギリをインストールしろ......??
よくわからないのですが、仕方がないので言われた通りにします。

---




- <b>nokogiriのインストール</b>

```
gem install nokogiri -v '1.6.8.1'
```

>```
Fetching: nokogiri-1.6.8.1.gem (100%)
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.
```

うん、知ってた。こんな予感がしてた。

---

- <b>nokogiriの再インストール</b>

[こちらのページ](http://qiita.com/pugiemonn/items/4b23a709ed194b02be6d)によると、何やらオプションをつけるとうまくいくらしい。頑張ります。

```
$ bundle config build.nokogiri --use-system-libraries
```

これを実行した後に、以下でもう一度再インストールすれば良いみたいです。

```
$ bundle install --path vendor/bundle
```

>```
Fetching gem metadata from https://rubygems.org/.............
Fetching version metadata from https://rubygems.org/.
Resolving dependencies...
Rubygems 2.0.14.1 is not threadsafe, so your gems will be installed one at a time. Upgrade to Rubygems 2.1.0 or higher to enable parallel gem installation.
Installing htmlentities 4.3.4
Installing mini_portile2 2.1.0
Installing trollop 2.1.2
Using bundler 1.13.6
Installing nokogiri 1.6.8.1 with native extensions
Installing wp2txt 0.8.0
Bundle complete! 1 Gemfile dependency, 6 gems now installed.
Bundled gems are installed into ./vendor/bundle.
```

やったー！ ありがとうございます！！

---

何のためにこれをしていたのか忘れかけていましたが、
多分これでwp2txtが使えるようになるはず。

```
$ wp2txt --input-file jawiki-latest-pages-articles.xml.bz2
```

>```
-bash: wp2txt: command not found
```

何で。えっ。
さっき`Installing wp2txt 0.8.0`っていっとったやん。

---
## ● Rubyのインストール

- <b>wp2txtにはruby2.3以上が必要

調べてみると、どうも[こちらのページ](http://jabberwocky.hatenablog.com/entry/2016/11/12/061709)によると、
rubyが2.3以上のバージョンでないとwp2txtを使えないらしいのです。

試しにチェックしてみますと、

```
$ruby --version
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]
```

あー。

---

- <b>rbenvを使ってRubyをインストール</b>

しんどくなってきましたが、また[こちらの別のページ](http://qiita.com/dtlabo/items/4d5922b6c3e4face35b6)を参考に頑張っていきます。

ちなみに、自分はすでにhomebrewは入っている環境でしたので、その段階はクリアできていて良かったです。

以下、結構簡略して書いているので、Macの方はぜひ[こちら](http://qiita.com/dtlabo/items/4d5922b6c3e4face35b6)を参考に進めてください。

```
$ pwd
/Users/ユーザー名
$ brew update
$ brew install openssl
$ brew install readline
$ brew install rbenv
$ brew install rbenv-gemset
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile
$ rbenv install 2.3.0
$ rbenv rehash
$ rbenv global 2.3.0
$ ruby -v
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin15]
```
最後にもう一度バージョン確認して、rubyのデフォルトが2.3.0になってくれたことを確認しました。
`$ rbenv rehash`しないと、`$ rbenv global`でデフォルトの設定が変更できないみたいなので注意です。

---

## ● 最終的に

- <b>なぜか動いてくれないwp2txt</b>

さあ、これでいいでしょう。

```
$ wp2txt --input-file jawiki-latest-pages-articles.xml.bz2
```

>```
-bash: wp2txt: command not found
```

なんでなんだろう......
ここまでくるともう若干半泣きでした。どうしろと。

---

- <b>やけになった</b>

やけになって、もう一度そのままインストールをやってみた。

```
$ gem install wp2txt
```

>```
Fetching: mini_portile2-2.1.0.gem (100%)
Successfully installed mini_portile2-2.1.0
Fetching: nokogiri-1.6.8.1.gem (100%)
Building native extensions.  This could take a while...
Successfully installed nokogiri-1.6.8.1
Fetching: htmlentities-4.3.4.gem (100%)
Successfully installed htmlentities-4.3.4
Fetching: trollop-2.1.2.gem (100%)
Successfully installed trollop-2.1.2
Fetching: wp2txt-0.8.0.gem (100%)
Successfully installed wp2txt-0.8.0
Parsing documentation for mini_portile2-2.1.0
Installing ri documentation for mini_portile2-2.1.0
Parsing documentation for nokogiri-1.6.8.1
Installing ri documentation for nokogiri-1.6.8.1
Parsing documentation for htmlentities-4.3.4
Installing ri documentation for htmlentities-4.3.4
Parsing documentation for trollop-2.1.2
Installing ri documentation for trollop-2.1.2
Parsing documentation for wp2txt-0.8.0
Installing ri documentation for wp2txt-0.8.0
Done installing documentation for mini_portile2, nokogiri, htmlentities, trollop, wp2txt after 8 seconds
5 gems installed
```

えっ。

---

- <b>結局何が原因で上手く行ったのかよくわからない</b>

一番初めの時点では失敗していた、
`$ gem install wp2txt`
が、なぜ最後に試すと上手くいったのかわかりません。

最初の状態と異なっているのは、
- bundleがインストールされている
- Rubyのバージョンが変わった
- ルートディレクトリ以外の場所で`gem install`した
の３つです。

1つ目は、一応、
`$ echo 'gem "wp2txt"' >> Gemfile
$ bundle install`
でインストールを行っていると思うのですが......

自分としては、初めの`gem install`でのエラーで、

```
You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.
```

と怒られているので、使用するRubyのバージョンが2.3.0に変更されたのがうまくいった原因なのかな？と思っています。

でも正直gemのことよくわかっていないので、わかりません、すみません。
誰かなんで上手くいったのか教えてください。

---

## ● wp2txtでwikipediaのダンプデータファイルを解凍する

とりあえず、できたものは仕方がないので、最後です。

```
$ wp2txt --input-file jawiki-latest-pages-articles.xml.bz2
```

>```Preparing ... This may take several minutes or more ... Done.
jawiki-latest:   3% |o     　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　 | ETA:  02:53:17
```

あとはこの状態で待っておけばwp2txtが上手に解凍してくれるはずです。
自分は5時間ほどかかりました。