BBS の改良
チャットと掲示板を融合したような環境を作りたいなと。ご意見くだされ。
-
88
owa
2008/06/21 22:31
id: mJs8kxp1Zus
prob: 0.0%
-
-
スパムフィルタを実装
SpamBayesをBBSに実装しました。おかげで面白くなって来ました、どうぞいらっしゃい;
スパムと判定 → 999:「ごみ箱」
あやしいもの → 997:「逮捕しる」に自動で入ります。
とりあえず逮捕したものは目視で判断し
997:まともな投稿 → 996:「無罪です。すまんのぅ」
997:スパムと確認 → 998:「スパムお溜まり」に手作業で移動します
後は定期的に以下のバッチ処理を起動します(同時にスパムデータベースを教育する)
996:まともな投稿 → xxx: 投稿時の板に戻す
998:スパム溜まり → 999:「ごみ箱」に移動
と言いながら、現時点では日本語スパムの献体がほとんど登録されていないので圧倒的に不利な状況...orz
-
87
owa
2008/06/20 22:26
id: mJs8kxp1Zus
prob: 0.0%
-
-
スパム確率を表示
各記事のヘッドラインに prob=x.xxx と表示しています。最大値は 1.000 です。
なお 0.900 以上はスパムと判断し赤色で表示します。
しばらく使った後、このBBSのフィルタリング処理を置き換える予定です。
何が嬉しいのかと言えば、コメントスパムへの対処がほぼ自動化されることです。
三日くらい家を空けても大丈夫。
ブラックリストやバズワードを手作業で登録する必要がありません。
時々スパム溜まりをチェックし、判別できなかったものを移動するだけです。
インターフェースは Zope プロダクトにしてあるので、そのうち公開するつもり。
-
86
owa
2008/06/16 22:32
id: mJs8kxp1Zus
prob: 0.0%
-
-
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
2008/06/15 23:02
id: mJs8kxp1Zus
prob: 0.0%
-
-
コメントスパムうざい
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
2008/02/22 20:23
id: mJs8kxp1Zus
prob: 0.6%
-
-
Papasan のところで全文検索対応
http://papasan.org/papablog/483
http://papasan.org/papablog/30b530fc30fc/ping30b530fc30fc/51...
必要なものは postgresql, mecab, senna, ludia
http://mecab.sourceforge.net/
http://qwik.jp/senna/FrontPageJ.html
https://sourceforge.jp/projects/ludia/
軽くて正確で速そう。感謝^^
-
83
owa
2005/07/26 22:34
id: mJs8kxp1Zus
prob: 0.3%
-
-
「PostgreSQLで全文検索」なんて記事がありました。
http://blog.postgresql.jp/28 - JPUG広報担当blog
*rast* を使うと like 検索より 100 倍くらい速いらしい。
http://www.netlab.jp/rast/
インデクス作るのであたりまえか。でも後で試してみようっと。
-
82
owa
2004/10/09 23:37
id: mJs8kxp1Zus
prob: 0.7%
-
-
kiyo さん like な検索方式試してます。
http://owa.as.wakwak.ne.jp/zope/labs/bbs/2/254
便利ですね。論理式で検索するには PostgreSQL との間に一枚かますしかないのかな。like
演算子でも可能かもしれないけどペンディング。
-
81
owa
2004/07/18 22:15
id: mJs8kxp1Zus
prob: 0.1%
-
-
BBS のトップページに Google 検索機能追加した。本当は独自検索処理を付けたかったけど、ものは試し。
10 分もあれば追加できる Google はとても便利だ。
当然、もし Google がダウンした場合使えないし、イントラネットでも使えない。
使ってみれば、どういうものが必要か自然と解かるであろう。
-
80
kiyo
2004/07/04 10:39
id: SqALsodDuX2
prob: 0.0%
-
-
>>79 基本的なアイディアは↓です
これ以前見たんだけど。。。
成る程{ 左手(パー)を右手(グー)で叩く心境 }
「次へ」の表示でなく、2件とか3件先もワンクリックで見れるし、なによりURLがスッキリで良いですね。
-
79
owa
2004/07/04 10:22
id: mJs8kxp1Zus
prob: 0.0%
-
-
お二人様いらっしゃい^^
これで外からの書き込みも確認できたので助かりました。昔の /zope/bbs はリダイレクトで
/zope/labs/bbs に今切替えました。梯子を外したら、もう後戻りできません。
>>77 どうやったんだろう?
基本的なアイディアは↓です
http://owa.as.wakwak.ne.jp/zope/coreblog/83
あまり一般的な方法じゃないとすると、どこかに落し穴があるかもしれません;;
なにはともあれ、書き込みありがとうございます m(.".)m
|