3
1

More than 3 years have passed since last update.

wp2txtを使い捨てで使う

Posted at

wp2txt

機械学習における自然言語処理等のチュートリアルで「訓練データようにWikipediaを全文ダウンロードしてplain textにして使いましょう」というシーンで出てくるツールです。Rubygems で bin/ にインストールされる、Ruby のプログラム。

この記事は

ぼくもまさに上述の流れで使おうと思ったのですが、ちょっと調べると付随するgemがいろいろインストールされるのでローカル環境でbundler使った方が良いよ、という記事をいくつか見ました。うん、確かにそのとおり。使わないgemをやたらシステムワイドにインストールするのは躊躇しちゃうし、wp2txt自体恐らくWikipediaをplain textに変換したらもう使わないだろうから、最後は rm -r あたりで全部まとめて簡単に消したいですもんね。

…が、そういう記事のとおりにやってもなぜかぼくの環境では

/usr/local/lib/site_ruby/2.5.0/rubygems.rb:284:in `find_spec_for_exe': can't find gem wp2txt (>= 0.a) with executable wp2txt (Gem::GemNotFoundException)

というエラーが出てうまく行きません。自分自身が bundler のしくみを良く理解していないのが原因と言えばそれまでなのですが、簡単な検索では解決法が出てなかったので同じエラーに悩む方がいるかも知れないと思いここに書いておきます。

解決策

wp2txt のスクリプトの先頭の辺りに require 'bundler/setup' と書く。それだけです。ようはbundler使ったスクリプトの標準的な書き方にすれば良いということです。

最初から順を追って手順解説 (面倒な人はここから読み始めればok)

まずは何はなくとも Ruby と bundler をインストールしてください。Ruby は各 OS の流儀で入れるとして、Bundler は gem install bundlerで入るはずです。

さて本題。今から tutorialというフォルダを掘って > そこでwp2txtを使って > 終わったら消す』 という流れで解説します。

$ mkdir tutorial
$ cd tutorial
$ bundler init
Writing new Gemfile to /PATH_TO/tutorial/Gemfile
$ echo 'gem "wp2txt"' >> Gemfile
$ bundler install --path .        # ここでローカルディレクトリを指定すれば後腐れなく rm できる

ここまでで必要なファイルが tutorial/ruby 以下にインストールされます。wp2txttutorial/ruby/2.5.0/bin/ 等に入っています (2.5.0の部分は各自の環境依存)。これを前項の『解決策』のとおり改変します。と言っても1行追記するだけです。

#!/usr/bin/env ruby2.5
#
# This file was generated by RubyGems.
#
# The application 'wp2txt' is installed as part of a gem, and
# this file is here to facilitate running it.
#
require 'bundler/setup'   # <- この1行を追記
require 'rubygems'

version = ">= 0.a"

あとは実行するだけでokです。tutorial にWikipediaをダウンロードしているならこんな感じ。PATHが通っていないのできちんと書く必要があります。

$ ./ruby/2.5.0/bin/wp2txt --input-file jawiki-latest-pages-articles.xml.bz2

あとかたづけ

もうwp2txt使わないと思ったら、そのフォルダ (この例ならtutorial) 内の ruby/, .bundle/, Gemfile, Gemfile.lock を消してしまってokです。

$ pwd                # まとめて rm するときは念のため自分の居場所を再確認しましょう。
/PATH_TO/tutorial
$ rm -rf ruby .bundle Gemfile Gemfile.lock

参考

ちなみにwp2txtの場合、どんなgemが一緒にインストールされたか確認してみたらこんなでした。

$ ls ruby/2.5.0/gems/
htmlentities-4.3.4   nokogiri-1.10.4  trollop-2.9.9
mini_portile2-2.4.0  parallel-1.18.0  wp2txt-0.9.1
3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1