2006年12月22日 07:53 by AzureStone

従来までSPAMASSASSINを使っていたのですが、日本語SPAMにはやはりbsfilterが良いとのことで、導入したいと思っております。

ところがMeCabとbsfilterとのバインディングにつまづいてしまい、どうか解決方法を教えていただけませんでしょうか。

サーバはCentOS4.3、rubyはyumでruby-develも同時に入れており、バージョンはruby 1.8.1 (2003-12-25) [i386-linux-gnu]です。
メールはQmailToasterを使用しています。将来的にはprocmailrcでSPAMASSASSINと同様に仕分けを考えています。

まず第一段階として、現在公開されている最新版をダウンロードし、解凍し、入れました。
bsfilter-1.0.16.rc1
そして数百通のSPAMを学習させているところです。

第二段階として、標準の形態素解析エンジンではなくMeCabの方が性能がよいということなのでこれに切り替えようと思い、つまづいている状態です。
参考)http://www.nekomimist.org/d/200403.html#d18
mecab-ruby-0.93を以下のように入れ、
$ tar zxf mecab-ruby-0.93.tar.gz
$ cd mecab-ruby-0.93
$ ruby extconf.rb
$ make
# make install
bsfilter.confにjtokenizer MeCabを書き込み、bsfilterを動かそうとすると、
bsfilter
/usr/lib/site_ruby/1.8/i386-linux-gnu/MeCab.so: libmecab.so.1: cannot open shared object file: No such file or directory - /usr/lib/site_ruby/1.8/i386-linux-gnu/MeCab.so (LoadError)
from /usr/bin/bsfilter:3126:in `get_options'
from /usr/bin/bsfilter:3268:in `setup'
from /usr/bin/bsfilter:3420

となってしまいます。

もしかすると
http://sy2920.s151.xrea.com/security/bsfilter.html
のサイトの中盤からリンクされている
SourceForge.jp: Detail: 8246 MeCab 0.90 の Ruby バインディングで動作させるためのパッチ
http://sourceforge.jp/tracker/index.php?func=detail&aid=8246&group_id=1011&atid=3877
の件かもしれないと思い、bsfilter-rubymecab0.90.patch2 リビジョン1.78.2.1へのパッチをダメ元でダウンロードし、パッチしようと思ったのですが
patch -p1 -d bsfilter-1.0.16.rc1 < bsfilter-rubymecab0.90.patch2
missing header for unified diff at line 3 of patch
can't find file to patch at input line 3
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|--- bsfilter.head 2006-04-12 02:22:13.000000000 +0900
|+++ bsfilter.head2 2006-04-12 02:39:57.000000000 +0900
--------------------------
File to patch:
となり、私の誤解があるかもしれませんがやはり違うためにpatchできません。

この場合、どのようにしたら解決するか、教えていただけませんでしょうか。
恐縮ですが、アドバイスいただければ幸いです。

1: 口コミさん : 2006-12-22 08:03
自己レスでの補足です。

/usr/lib/site_ruby/1.8/i386-linux-gnu/MeCab.so: libmecab.so.1: cannot open shared object file: No such file or directory - /usr/lib/site_ruby/1.8/i386-linux-gnu/MeCab.so (LoadError)
from /usr/bin/bsfilter:3126:in `get_options'

とありますが、実際に以下のファイルは存在します。
ls /usr/lib/site_ruby/1.8/i386-linux-gnu/ -al
total 72
drwxr-xr-x 2 root root 4096 Dec 21 22:17 .
drwxr-xr-x 3 root root 4096 Feb 25 2006 ..
-rwxr-xr-x 1 root root 59609 Dec 21 22:17 MeCab.so

root権限でコンパイルしrootでbsfilterとたたいているのになぜ見つからないと言われるのかがわかりません。
どうか、お願いいたします。
2: 口コミさん : 2006-12-22 09:48
/usr/lib/site_ruby/1.8/i386-linux-gnu/MeCab.so: libmecab.so.1: cannot open shared object file: No such file or directory - /usr/lib/site_ruby/1.8/i386-linux-gnu/MeCab.so (LoadError)
from /usr/bin/bsfilter:3126:in `get_options'
と言うのはMeCab.soが無いと言っているのではなくlibmecab.so.1が見つからないと言っています。

が、予想するにlibmecab.so.1はどこかにあるのでしょう
(きっと/usr/local/libあたり)

きっと共有ライブラリがシステムに認識されていないのが原因だと思います。
「共有ライブラリをシステムに認識させるには」
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/300sharelib.html
を見て一度Tryしてみてください。
3: 口コミさん : 2006-12-22 10:04
はじめまして。
非常に気になる技術を試されているので、感心しました。ちなみにrubyは遠い昔に入門の記事を読んだくらいです。

http://www.nekomimist.org/d/200403.html#d18
こちらのサイトのさらに参照先(ここのリンク先)が見れないのですが。上の書き込みで詳細に手順がきちんとかかれておりトラブルの内容が理解できるのですが、1つ気になることがあります。
ソースからのコンパイルであれば、./configure (オプション)に相当する処理をまず行わないといけないと思います。あるいはrubyを実行されていますが、ここで何か足りないオプションがあるのではないでしょうか。もし参照先のHPの手順どおりであれば、これは私の誤解です。

http://fg-180.katamayu.net/archives/2006/04/06/193612
<===こちらはでは、$ ./configureを実行されている。

あとは細かいことですが、コンパイルとバイナリソース作成に必要な環境変数も確認してみてください。
それから
http://sourceforge.jp/tracker/index.php?func=detail&aid=8246&group_id=1011&atid=3877
「MeCab 0.90 の Ruby バインディングで動作させるためのパッチ
先日 MeCab が 0.90 にバージョンアップしましたが、それと同時に Ruby バインディングの仕様が変更され、現在の bsfilter のソースでは動作しなくなりました。」
この文や過去のコメントを見ると、bsfilter本体には問題ないようですね。仕様が変わったというだけです。むしろlibmecab.so.1自身の内容か、作成〜配置作業に問題あるのではないでしょうか。この手のファイルは特定のフォルダに置く必要があります。警告をそのまま解釈すると、「/usr/lib/site_ruby/1.8/i386-linux-gnu/MeCab.so」の下にこのファイルが存在しなしことになります。参考のlsを実行したディレクトリの1階層下を調べて見てください。
4: 口コミさん : 2006-12-22 10:06
2: BNR32さん とかぶった内容です。必要でなければ、削除します。
5: 口コミさん : 2006-12-22 10:43
皆様ありがとうございます。
なるほど、libmecab.so.1が共有ライブラリに見あたらなかったと言うことですね。

# find / -name "libmecab.so.1"
/usr/local/src/mecab-0.93/src/.libs/libmecab.so.1
/usr/local/lib/libmecab.so.1

# vi /etc/ld.so.conf
/usr/local/lib/
include ld.so.conf.d/*.conf
と1行目に追加し、

# ldconfig
と実行し、bsfilterでの学習機能を実行すると、問題なく動作いたしました。

大変ありがとうございます。解決です。今はまだ500通程度しか学習させていないので、
3000通程度学習させたら実際に振り分け処理をはじめさせたいと思います。

P.S.
>http://www.nekomimist.org/d/200403.html#d18
> こちらのサイトのさらに参照先(ここのリンク先)が見れないのですが。
webarchiveでそこは確認いたしました。(内容は忘れてしまいましたが…
しかしながら手順自体は同じですので、問題無く動作したようです。
6: 口コミさん : 2006-12-22 20:30
>5: maru 
P.S.
>http://www.nekomimist.org/d/200403.html#d18
> こちらのサイトのさらに参照先(ここのリンク先)が見れないのですが。
webarchiveでそこは確認いたしました。(内容は忘れてしまいましたが…
しかしながら手順自体は同じですので、問題無く動作したようです。
<=了解しました。

よかったですね。こちらこそ、勉強になりました。

スレッド一覧

043:はじめまして 043:SELinuxのポリシーの修正についてです。 急成長中のベンチャー企業で働いてみたいとおもいませんか?! 065:冷却方法 067:サーバーダウン→504エラー 玄人箱に関して 052:DNSサーバーは僕が憎いに違いない ■ 単発質問コーナー 基本すぎてすみません・・・。 079:NICドライバのインストールまたは認識について 069:初めまして PHPスクリプトでメールが送信できません。 061:linux os のアンインストール方法 063:linux os アンインストール 方法(再度no付け) 056: ドメインとホスト名について。 055:mod_layoutで動的フッターを挿入 044:イントラで2つのサイト 031:パティションどうきっています? 019:mixiのようなサイトを作れる方募集!! 014:500人、超えないかなぁ〜 066:サーバーに適したマザーボード dd dumpを使ってのバックアップ、restoreについて。 012:初心者におすすめのLinuxは? 077:よろしくです 078: Web サイトが携帯電話から見られない 062:webmaster だけがメールを受け付けない 057:ご質問〜windows領域削除方法〜 053:安いサーバ情報・・・。 037:データベース認証について 029:Apacheに異常アクセスログ 017:おすすめのUPSは? 009:お勧めの無料DDNSサービスは? 002:White Box Enterprise Linux 3.0について 0023:初心者です、よろしくお願い致します。ubuntu ☆教えて☆Linuxをマスターしたい CentOS 5 i386インストール時のトラブル こんなlogがでてるんですが・・・ 初心者です。 MySQLのアップグレードについて xdm/KDE ログオフ時にスクリプトを走らせたい 086:webツール(便利ツール等) 072:AMD VS Intel とりあえずDBサーバを自鯖にしてみたいのですが 060:Squidの設定-&gt;DNSエラー 041:【Linux】apacheで複数サイト作成したいのですが・・・ 022:LINUXのDistribution 023:初心者ですみません。。。Fedora Core3 013:vsftpdのchroot設定について 001:DynamicDNS様、様々〜笑 【愛知、常駐プログラマ募集】 064 : vsftpdで外付けHDDを公開する方法を教えてください。 038:sambaで共有できません・・・ knoppixでサーバーを構築しました。 010:お勧めの書籍は? 028:自作か購入か… 064:CPU使用率が高いきが・・・ 054:マシンが一台しかなくてもお金がなくても・・・。 032:(;´Д`)え、かなり増えてきている… 025:ipnuts の新バージョンでました。 【求人】港区でのお仕事です【時給1700円以上】 007:おすすめ固定IP 1、ダイレクトEメールを送りたい ソフトウェアレイドについて。 053: 譲ります 085:覚えておきたいコマンド 070:ファイルをアップしても0kbになる 068:精神対策(堕ちない自鯖) アクセスが無いけどトラフィックがある 自鯖が止まる理由 034:pop3が利用できません 059:500 Can&#039;t connect to www.google.co.jp:80 (Bad hostname &#039;www.google.co.jp&#039;) 048:サブドメイン転送処理の賢い方法 045:sambaが見えません。 040:はじめまして 030:Linuxの情報入手、勉強方法 011:CentOS5.7で自宅サーバで外部公開に失敗します。 Postfix メールサーバー 自宅サーバ 必見!あのDCDが来日!! 001:自宅の様子を写真をw 080: DMZの構築方法 profixでバーチャルサーバ 081:Xウィンドウが起動しない(GNOME) 075:サブドメインとIPアドレス ローカル接続のDB 韓国固定IP , 韓国からのDNSが 必要なら 連絡ください。 はじめまして! 質問 Perl cpan2rpmのインストール/使用方法 新品のサーバが¥14,800から( ・_・;) サーバーにメッセージ多発 ルーセント・グローバル、Linuxガジェット開発を促進へ 自宅サーバ公開方法 084:OSは64bitか32bitか 071:サーバ用の部品 066:自鯖が止まる理由改 047:ディレクトリによって使われるphp.iniを変える的な動作をしたい 035:RAID 033:アクセスログ検索スクリプトってないですか? 026:CGIファイルの関連づけ 016:結構前からあった、自鯖ML 004:(;´Д`)え、微妙に増えてきている… 【愛知、常駐プログラマ募集】 httpサーバを作りたい。サーバマシンがネットワークにつながらない問題 066:CentOSでの仮想化について教えてください〜  067:サーバーを1週間ダウンさせてしまいました。 015:使用ディストリビューション 073:おすすめルータ 076:ダイナミックDNS下で2台のホスト名にアクセスする方法 067:回線対策(落ちない自鯖) メールサーバーコミュを立ち上げました ディレクトリの破損!? perlバスについて質問 056:biglobeから中継サーバについて 042:Bフレッツ(or ADSL)マルチセッションでセカンダリDNS 018:X端末エミュレータ 005:自鯖でも、お手軽安く使える独自ドメイン Yahoo画面、あざむきかた知ってる方、ご連絡お待ちします。 064: 帯域制限のないプロバイダ 質問です。 OPENsshのセキュリティーについて 082:外付けHDD増設の手法と機器 074:おすすめOS 他人のADSLモデムに!! 039:Apacheの設定 050:メール受信をスイッチにしてPHPを起動させるサイト 036:割り当てるグローバルIPについて 008:White Box Enterprise Linux ML 正式版稼働報告! グリー携帯無限認証 どなたかご自宅で教えていただけませんか 003:哲学?持論? ネットワークインストールについて 083:Squidの設定について 011:よろしくおねがいします。 058:Sambaで転送したファイルが表示されない 051:SPAMフィルターの構築について [bsfilter&#043;MeCab] 049:今までのトピックのサマリー 046:ドメインのname serverの変更 029:TCPIPの勉強 027:Yahoo!BBの場合の設定について 020:DICEの質問 006:ClientOSにLinuxを使用し始める。

サイト内検索