BBS の改良
チャットと掲示板を融合したような環境を作りたいなと。ご意見くだされ。
投稿フォーム:
お名前: ニックネームでも何でもかまいません(必須)
パスワード: なりすまし防止のため利用できます(任意)
記事:
 
キャンセル
88 owa #e8faefa 2008/06/21 22:31 prob:%
スパムフィルタを実装 SpamBayesをBBSに実装しました。おかげで面白くなって来ました、どうぞいらっしゃい; スパムと判定 → 999:「ごみ箱」 あやしいもの → 997:「逮捕しる」に自動で入ります。 とりあえず逮捕したものは目視で判断し 997:まともな投稿 → 996:「無罪です。すまんのぅ」 997:スパムと確認 → 998:「スパムお溜まり」に手作業で移動します 後は定期的に以下のバッチ処理を起動します(同時にスパムデータベースを教育する) 996:まともな投稿 → xxx: 投稿時の板に戻す 998:スパム溜まり → 999:「ごみ箱」に移動 と言いながら、現時点では日本語スパムの献体がほとんど登録されていないので圧倒的に不利な状況...orz
87 owa #e8faefa 2008/06/20 22:26 prob:%
スパム確率を表示 各記事のヘッドラインに prob=x.xxx と表示しています。最大値は 1.000 です。 なお 0.900 以上はスパムと判断し赤色で表示します。 しばらく使った後、このBBSのフィルタリング処理を置き換える予定です。 何が嬉しいのかと言えば、コメントスパムへの対処がほぼ自動化されることです。 三日くらい家を空けても大丈夫。 ブラックリストやバズワードを手作業で登録する必要がありません。 時々スパム溜まりをチェックし、判別できなかったものを移動するだけです。 インターフェースは Zope プロダクトにしてあるので、そのうち公開するつもり。
86 owa #e8faefa 2008/06/16 22:32 prob:%
SpamBayes データベース作成 bbs のエントリと mail ではスパム情報が大分違います。 うまく判定してくれないこともあるので新規に作成することにした。 果たして、判別結果は(今のところ)恐ろしいほど的確です;; 下記プログラムは PostgreSQL に保存してある BBS 記事を取り出し、 SpamBayes データベースを作成します。 #! /usr/bin/env python import os import psycopg from spambayes import storage from unicodeblock_tokenizer import tokenize # 適当なスプリッタ def bbsEntries(cond): conn = psycopg.connect('dbname=bbs user=zope host=localhost') curs = conn.cursor() curs.execute("SELECT * FROM chatsubtb WHERE %s" % (cond,)) rows = curs.fetchall() for r0, r1, r2, name, mail, comm, r6, r7 in rows: yield 'X-NAME:%s X-MAIL:%s %s' % (name, mail, comm) conn.close() def train(cond, is_spam=False): path = os.path.expanduser('./hammiedb') # 作成する DB へのパス bayes = storage.open_storage(path, 'dbm', 'w') for s in bbsEntries(cond): s = unicode(s, 'utf-8') bayes.learn(tokenize(s), is_spam) # データベースに教え込む bayes = None if __name__ == '__main__': train('mid<=900', is_spam=False) # 900番以下は通常の記事 train('mid>=997 and mid<=999', is_spam=True) # 99{7,8,9} はスパムが保存されている
85 owa #e8faefa 2008/06/15 23:02 prob:%
コメントスパムうざい SpamBayes を利用して簡単にフィルタリング出来ないかな? と、試してみると普通のテキストでも使える。さて効果あるかしら ------------------------------------------------------ #! /usr/bin/env python import os from spambayes import storage from spambayes.SplitterForU import tokenize def getScore(s): tokens = tokenize(s) fname = os.path.expanduser('~/.hammiedb') bayes = storage.open_storage(fname, 'dbm', 'r') score, items = bayes.spamprob(tokens, True) print 'spamprob: score=%.3f' % score for k, v in items: print '%.3f: %s' % (v, k.encode('utf-8')) if __name__ == '__main__': getScore(u'この前はありがとう。とても参考になりました。') ------------------------ 〆 ------------------------------ 実行出力: spamprob: score=0.798 0.103: *H* 0.605: になりました 0.699: *S* 0.706: 前 0.767: とても
84 owa #e8faefa 2008/02/22 20:23 prob:%
Papasan のところで全文検索対応 http://papasan.org/papablog/483 http://papasan.org/papablog/30b530fc30fc/ping30b530fc30fc/51686587691c7d22/ 必要なものは postgresql, mecab, senna, ludia http://mecab.sourceforge.net/ http://qwik.jp/senna/FrontPageJ.html https://sourceforge.jp/projects/ludia/ 軽くて正確で速そう。感謝^^
83 owa #e8faefa 2005/07/26 22:34 prob:%
「PostgreSQLで全文検索」なんて記事がありました。 http://blog.postgresql.jp/28 - JPUG広報担当blog *rast* を使うと like 検索より 100 倍くらい速いらしい。 http://www.netlab.jp/rast/ インデクス作るのであたりまえか。でも後で試してみようっと。
82 owa #e8faefa 2004/10/09 23:37 prob:%
kiyo さん like な検索方式試してます。 http://owa.as.wakwak.ne.jp/zope/labs/bbs/2/254 便利ですね。論理式で検索するには PostgreSQL との間に一枚かますしかないのかな。like 演算子でも可能かもしれないけどペンディング。
81 owa #e8faefa 2004/07/18 22:15 prob:%
BBS のトップページに Google 検索機能追加した。本当は独自検索処理を付けたかったけど、ものは試し。 10 分もあれば追加できる Google はとても便利だ。 当然、もし Google がダウンした場合使えないし、イントラネットでも使えない。 使ってみれば、どういうものが必要か自然と解かるであろう。
80 kiyo #18390ca 2004/07/04 10:39 prob:%
>>79 基本的なアイディアは↓です これ以前見たんだけど。。。 成る程{ 左手(パー)を右手(グー)で叩く心境 } 「次へ」の表示でなく、2件とか3件先もワンクリックで見れるし、なによりURLがスッキリで良いですね。
79 owa #e8faefa 2004/07/04 10:22 prob:%
お二人様いらっしゃい^^ これで外からの書き込みも確認できたので助かりました。昔の /zope/bbs はリダイレクトで /zope/labs/bbs に今切替えました。梯子を外したら、もう後戻りできません。 >>77 どうやったんだろう? 基本的なアイディアは↓です http://owa.as.wakwak.ne.jp/zope/coreblog/83 あまり一般的な方法じゃないとすると、どこかに落し穴があるかもしれません;; なにはともあれ、書き込みありがとうございます m(.".)m