LoginSignup
3
2

More than 3 years have passed since last update.

AWS EC2上にNExTをインストールする

Last updated at Posted at 2014-02-25

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
/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
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 に以下のような内容を書く

~/.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
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

参考URL:

3
2
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
2