MeCab Ruby バインディングのインストール方法

Rubyバィンディングのコンパイルは、extconf.rbに

$LDFLAGS = '-L/usr/local/lib'

を加えることと、ruby extconf.rbをした後に生成されるMakefileの一部を

LDSHARED = $(CC) -dynamic -bundle -undefined suppress -flat_namespace

から

LDSHARED = $(CXX) -dynamic -bundle -undefined suppress -flat_namespace

に変更すれば、コンパイルが通るようになります。

参照元
http://fenrir.naruoka.org/archives/000488.html

CentOsにTritonnをインストールして形態素解析をしましょう。

一般的に形態素解析をしようとすると、以下のものが必要なようです。


MeCab
http://mecab.sourceforge.net/
senna
http://qwik.jp/senna/install.html
Tritonn
http://qwik.jp/tritonn/


MeCabのインストールには、
MeCab本体と辞書を加えてインストールする必要があります。

今回は文字コードutf-8にしますので、
configureの際にちょっと注意が必要です。

MeCabのインストール

% tar zxfv mecab-X.X.tar.gz
% cd mecab-X.X
% ./configure --prefix=/usr --with-charset=utf8
% make
% make check
% su
# make install


辞書のインストール

% tar zxfv mecab-ipadic-2.7.0-XXXX.tar.gz
% mecab-ipadic-2.7.0-XXXX
% ./configure --prefix=/usr --enable-utf8-only
% make
% su
# make install

もしもうまくutf-8で辞書が構築できなかった場合、
makeの後に以下のコマンドを実行することでうまくいきました。
詳しくはこちら。
http://risky.cs.inf.shizuoka.ac.jp/~noguchi/index.php?tips%2Fmecab


% mecab-dict-index -t utf-8
% tar zcvf ipadic-utf8.tar.gz *.csv *.bin *.dec *.dic dicrc


sennaは普通にインストールしてok。

> svn co http://svn.razil.jp/senna/trunk senna
> cd senna
> ./configure --prefix=/usr
> make
> sudo make install


Tritonnのインストールはこちらが詳しいです。
http://wiki.minaco.net/index.php?VMwareFusion%2FCentOS5%2F11.MySQL%2BTritonnインストール#x4bb88af


追記:
成果物公開しました。
芸能人ブログで紹介されている商品が検索できるサイト。
セレブログ

RubyでIMAPを使ってGmailでメールを受信しましょう。

ローカル環境ではPOPで受信して問題なかったのですが、
CentOSにプログラムを乗せ替えると、なんだかparameterのエラーが出ました。


ググっても事例に乏しく、ActionMailerのバグである可能性も出てきましたので、試しにIMAPに変えてみたらうまくいきました。


注意点としては、fetchする際に配列でメッセージのidを渡してやると、改行コードを無視して取得されてしまうようだった(?)ので、
イテレーションで一つづつ内容を取得するようにするとうまくいきます。


おそらく、Gmailの一覧ページだと文面の改行を無視して表示しているのと同じことなのでしょう。

require 'net/imap'

imap = Net::IMAP.new(@config['server'],@config['port'],true)
imap.login(@config['username'], @config['password'])
imap.select('INBOX')
imap.search(["NOT", "DELETED"]).each do |message_id|
  MailFetcher.receive(imap.fetch(message_id, "RFC822")[0].attr["RFC822"])
  imap.store(message_id, "+FLAGS", [:Deleted])
end
imap.logout()
imap.disconnect() 


英語ですが、こちらが参考になります。
http://codeclimber.blogspot.com/2008/06/using-ruby-for-imap-with-gmail.html

GmailのPOPをつかってRailでメール受信しましょう。

ruby 1.8.7からsslに対応したようなので、
非常に簡単にGmailからPOPでメールを受信できるようになりました。
以前は結構苦労したような気がしたのに、
便利になりましたねぇ。


    Net::POP3.enable_ssl(OpenSSL::SSL::VERIFY_NONE) 
    Net::POP3.start("pop.gmail.com", 995, "your-email@gmail.com", "your-password") do |pop|
      unless pop.mails.empty?
        pop.mails.each do |email|
          begin
            logger.info "Retrieving mail..."
            MailReader.receive(email.pop)
            email.delete
          rescue Exception => e
            logger.error "[" + Time.now.to_s + "] " + e.message
          end
        end
      end
    end

Passengerを使ってEc2にRailsアプリを公開しましょう。

gemで簡単インストール。

gem install passenger


次にpassenger-install-apache2-moduleを実行し、Apacheモジュールのビルドとインストールを行いましょう。

passenger-install-apache2-module


このスクリプトは対話形式で処理を実行します。
画面の指示に従って進めれば容易に処理を完了できます。


ビルドに成功すると、Passengerを組み込むためのhttpd.confの設定が表示されるのでコピーしておきましょう。

Deploying a Ruby on Rails application: an example

Suppose you have a Ruby on Rails application in /somewhere. Add a virtual host
to your Apache configuration file, and set its DocumentRoot to
/somewhere/public, like this:

   <VirtualHost *:80>
      ServerName www.yourhost.com
      DocumentRoot /somewhere/public    # <-- be sure to point to 'public'!
   </VirtualHost>

passenger-install-apache2-moduleの最終段階の画面で
"Please edit your Apache configuration file, and add these lines:"
という指示とともにhttpd.confに追加すべき設定内容が表示されます。
これに合わせてhttpd.confを修正します。

vi /etc/httpd/conf/httpd.conf

LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-1.0.1/ext/apache2/mod_passenger.so
RailsSpawnServer /usr/lib/ruby/gems/1.8/gems/passenger-1.0.1/bin/passenger-spawn-server
RailsRuby /usr/bin/ruby1.8

# developmentモードで動かす場合は忘れずに。
RailsEnv development


あとは、ApacheのDocumentRootを
$RAILS_ROOT/publicに設定すれば、
自動的にRailsアプリケーションが認識されます。


詳しくはこちら。
http://redmine.jp/tech_note/apache-passenger/


追記:
成果物公開しました。
芸能人ブログで紹介されている商品が検索できるサイト。
セレブログ

CentosにImageMagick(ImageMagick-6.5.5-10)とRMagickをインストールしましょう。

yum -y install ImageMagick ImageMagick-perl


とすれば簡単ですが、現時点でyumでインストールできるImageMagickは6.2.8で、
最新版のRMagickをインストールするには、6.3.0以上が必要との事です。
RMagickを1.0系に指定するとyumでも簡単に入れられますが、
今回は頑張って最新版を入れることにします。


まず、依存するライブラリをまとめてインストールしましょう。

sudo yum install bzip2-devel freetype-devel libpng-devel libtiff-devel freetype-devel libjpeg-devel

次に最新版のImageMagickソースコードからインストールします。

wget ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick.tar.gz
tar zxvf ImageMagick.tar.gz
cd ImageMagick-6.5.5-10
./configure --disable-static --with-modules --without-perl --without-magick-plus-plus --with-quantum-depth=8 --prefix=/usr/local/ImageMagick-6.5.5-10
make
make install


ただし、上記コンパイルでライブラリファイルは /usr/local/lib にインストールされますが、
CentOS の標準ではこのディレクトリはライブラリ用パスに含まれていないため、Id.so.confを編集します。

vi /etc/ld.so.conf


末尾に「/usr/local/ImageMagick-6.5.5-10/lib」を追加しましょう。


次に共有ライブラリを認識させます。

/sbin/ldconfig


/etc/profileにもパスを通しておきましょう。

export PATH=$PATH:/usr/local/ImageMagick-6.5.5-10/bin

続いてgemでRMagickをインストール。

gem install rmagick -v 2.11.0


すんなりインストールできるはず。


あとはirbから確認しておきましょう。

irb -rubygems -r RMagick
irb(main):001:0> puts Magick::Long_version


と入力して、

This is RMagick 2.11.1 ($Date: 2009/09/05 20:01:08 $) Copyright (C) 2009 by Timothy P. Hunter
Built with ImageMagick 6.5.5-0 2009-09-10 Q8 OpenMP http://www.imagemagick.org
Built for ruby 1.8.7
Web page: http://rmagick.rubyforge.org
Email: rmagick@rubyforge.org
=> nil


と出ればOK。



追記:
成果物公開しました。
芸能人ブログで紹介されている商品が検索できるサイト。
セレブログ

Ruby on Rails のアプリを公開するときの設定

vi /etc/httpd/conf/httpd.conf


/DocumentRootで検索し、定義の最後に

# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot /usr/local/rails/apri/public


このように、DocumentRoot /usr/local/rails/apri/publicを追加。


その後、apacheを再起動します。

[root@fedora ~]# /etc/rc.d/init.d/httpd restart
httpd を停止中: [ OK ]
httpd を起動中: [ OK ]


:3000を付けなくてもRuby on Railsのアプリケーションが起動しているところがポイントです。これでApacheでPassengerを使ってRuby on Railsアプリ公開ができました。


追記:
成果物公開しました。
芸能人ブログで紹介されている商品が検索できるサイト。
セレブログ