AWS EC2上にNExTをインストールするメモ。
Named Entity Extraction Tool(以下NExT)は、固有表現抽出ツールである。詳しくは、参考URLからオリジナルのサイトを参照のこと。
NExT Ruby版は、RubyとChasenを使うので、一緒にインストールする必要がある。
0. instance立ち上げ
EC2上にinstanceを立ち上げる。
とりあえず、お試しならt1.microでも良いかも。
AWS t1.micro
OS: Aamzon Linux
ツール、データはS3上に上げておくと、外部からダウンロードするより少し早いし、お財布にも少し優しい。
1. yum update
$ sudo yum update
2. swap設定
EC2instanceがt1.microのときswap領域を設定する
$ sudo dd if=/dev/zero of=/swap.img bs=1M count=2048
$ sudo chmod 600 /swap.img
$ sudo mkswap /swap.img
$ sudo vi /etc/fstab
以下を追加
/swap.img swap swap defaults 0 0
swapを有効にする
$ sudo swapon -a
3. 日本時間に設定
$ sudo vi /etc/sysconfig/clock
ZONE="Asia/Tokyo"
に書き換える。
$ sudo ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
$ sudo reboot
4 . epelリポジトリの有効化
Amazon Linux AMIでEPELの設定だけはすでに行われている。
EPELを使いたいパッケージのところでyum --enablerepo=epel install -y xxxxと実行する。
というのを確認したら、次のステップへ。
5. S3ツールのインストール (S3を利用しない場合は、不要)
$ sudo yum install gem
$ sudo yum install rubygem-aws-sdk
$ sudo yum -y --enablerepo epel install s3cmd
$ s3cmd --configure
Access KeyとSecret Keyを設定する
httpsを使うにyes
s3cmdで日本語を正しく扱うための設定
$ sudo vi /usr/lib/python2.6/site-packages/sitecustomize.py
import sys
sys.setdefaultencoding('utf-8')
6. 開発環境インストール
$ sudo yum -y install gcc*
$ sudo yum -y install make
$ sudo yum -y install ruby-devel
7. Dartsインストール
$ wget http://chasen.org/~taku/software/darts/src/darts-0.32.tar.gz
$ gtar xvzf darts-0.32.tar.gz
$ cd darts-0.32
$ ./configure
$ make
$ make check
$ sudo make install
8. ChaSenインストール
$ wget http://iij.dl.sourceforge.jp/chasen-legacy/56305/chasen-2.4.5.tar.gz
$ tar xzf chasen-2.4.5.tar.gz
$ cd chasen-2.4.5
$ sudo ./configure
$ sudo make
$ sudo make install
$ sudo vi /etc/ld.so.conf.d/usr-local.conf
$ cat usr-local.conf
/usr/local/lib
$ sudo ldconfig
9. ipadic をインストール
$ wget http://jaist.dl.sourceforge.jp/ipadic/24435/ipadic-2.7.0.tar.gz
$ tar zxf ipadic-2.7.0.tar.gz
$ cd ipadic-2.7.0
$ ./configure
辞書ファイルをUTF-8に変換
$ vi convert.sh
#!/bin/sh
for file in *.dic *.cha
do
if [ -f $file ]; then
echo $file
iconv -f euc-jp -t utf-8 $file > tmpfile
mv tmpfile $file
fi
done
exit
$ sh ./convert.sh
$ `chasen-config --mkchadic`/makemat -i w
$ `chasen-config --mkchadic`/makeda -i w chadic *.dic
$ sudo make install
10. chasenrcもUTF-8に変換
$ cd /usr/local/etc
$ sudo cp -p chasenrc chasenrc.orig
$ iconv -f euc-jp -t utf-8 chasenrc > /tmp/chasenrc.tmp
$ sudo mv /tmp/chasenrc.tmp chasenrc
$ sudo chown root:root chasenrc
11. テスト
$ chasen -iw
今日の天気は雨です。
今日 キョウ 今日 名詞-副詞可能
の ノ の 助詞-連体化
天気 テンキ 天気 名詞-一般
は ハ は 助詞-係助詞
雨 アメ 雨 名詞-一般
です デス です 助動詞 特殊・デス 基本形
。 。 。 記号-句点
EOS
12. Ruby
- Install Git
$ sudo yum install -y git
- Install RBEnv and the ruby-build plugin for it
$ git clone git://github.com/sstephenson/rbenv.git .rbenv
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ mkdir -p ~/.rbenv/plugins
$ cd ~/.rbenv/plugins
$ git clone git://github.com/sstephenson/ruby-build.git
$ source ~/.bash_profile
- rbenv installと同時にインストールするgemパッケージ
$ git clone https://github.com/sstephenson/rbenv-default-gems.git ~/.rbenv/plugins/rbenv-default-gems
~/.rbenv/default-gems に以下のような内容を書く
rubygems-update
aws-sdk
pit
ec2ssh
parallel
elastic-mapreduce
- libxml2 と libxslt のヘッダファイル (nokogiri用)
$ sudo yum install libxml2-devel
$ sudo yum install libxslt-devel
- Install Ruby
2.0.0をインストールする
$ sudo yum install -y gcc make zlib zlib-devel openssl openssl-devel
$ rbenv install 2.0.0-p0
$ rbenv rehash
$ rbenv global 2.0.0-p0
$ gem update
2.0.0でうまく動かないようなら、1.8.7をインストールする。
$ rbenv install 1.8.7-p374
$ rbenv rehash
$ rbenv global 1.8.7-p374
$ gem update
13. ruby-chasenインストール
$ wget https://sites.google.com/a/ixenon.net/ruby-chasen/home/chasen1.7.tar.gz?attredirects=0&d=1
$ mv chasen1.7.tar.gz\?attredirects\=0 chasen1.7.tar.gz
$ tar zxvf chasen1.7.tar.gz
$ mv chasen1.7 ruby-chasen-1.7
$ cd ruby-chasen-1.7
$ ruby extconf.rb
$ make
$ make instal
13. nkfのインストール
$ wget http://mirror.centos.org/centos/6/os/x86_64/Packages/nkf-2.0.8b-6.2.el6.x86_64.rpm
$ sudo rpm -ivh nkf-2.0.8b-6.2.el6.x86_64.rpm
14. NExTインストール
EUC-JPからUTF-8対応に変更してインストール
$ cd $HOME
$ wget http://www.ai.info.mie-u.ac.jp/~next/versions/nextr-0.1.tar.gz
$ tar zxvf nextr-0.1.tar.gz
$ cd nextr-0.1
EUCをUTF-8に変換
find . -type f | xargs -n 10 nkf -w —overwrite
chasenにUTF-8のオプションを追加
$ cd $HOME/nextr-0.1/data/nextr
$ cp -p pre-setup.rb pre-setup.rb.orig
$ vi pre-setup.rb
$ diff pre-setup.rb.orig pre-setup.rb
1c1
< unless system("chasen -c suffix_s.org > suffix.dic") and system("chasen -c mid_s.org > mid.dic") and system("chasen -c match_s.org > match.dic")
---
> unless system("chasen -iw -c suffix_s.org > suffix.dic") and system("chasen -iw -c mid_s.org > mid.dic") and system("chasen -iw -c match_s.org > match.dic”)
$ cd $HOME/nextr-0.1/lib/nextr
$ cp -p dic.rb dic.rb.orig
$ vi dic.rb
$ diff dic.rb.orig dic.rb
64c64
< text.scan(/.*?EOS\n/me) do |t|
---
> text.scan(/.*?EOS\n/mu) do |t|
$ cp -p tagger.rb tagger.rb.orig
$ vi tagger.rb
$ diff tagger.rb.orig tagger.rb
59c59
< Chasen.getopt('-c')
---
> Chasen.getopt(‘-iw’, '-c’)
$ cp -p conf.rb conf.rb.orig
$ vi conf.rb
$ diff conf.rb.orig conf.rb
23c23
< text.scan(/^\s*([^#\n]+?)[\s\t]+\(([^#\n]+)\)\s*$/){ @groups[$1] = /\A(#{$2})\Z/e }
---
> text.scan(/^\s*([^#\n]+?)[\s\t]+\(([^#\n]+)\)\s*$/){ @groups[$1] = /\A(#{$2})\Z/u }
$ cd $HOME/nextr-0.1
$ ruby setup.rb config --prefix=$HOME
$ ruby setup.rb setup
$ ruby setup.rb install
テスト
$ chasen -iw -cj $HOME/nextr-0.1/README | nextr PERSON
$ vi test.rb
require 'nextr/tagger'
require 'chasen'
tagger1 = NExTR::Tagger.new('/home/ec2-user/etc/nextrc')
tagger2 = NExTR::Tagger.new('/home/ec2-user/etc/nextrc', 'PERSON')
Chasen.getopt('-iw', '-c')
puts tagger1.tag(Chasen.sparse('先日の青木教授の授業は楽しかった'))
#=> <DATE>先日</DATE>の<PERSON>青木</PERSON>教授の授業は楽しかった。
puts tagger2.tag(Chasen.sparse('先日の青木教授の授業は楽しかった'))
#=> 先日の<PERSON>青木</PERSON>教授の授業は楽しかった。
$ ruby test.rb