BBS の改良
チャットと掲示板を融合したような環境を作りたいなと。ご意見くだされ。
-
90
owa
2014/06/07 03:28
id: mJs8kxp1Zus
prob: 0.1%
-
-
画像鯖だけは別にしようと
それは3年っ以上前のことでした。
ちあきなおみは今どこに。
画像管理が面倒。
画像サーバー作って分離できたら便利だと思ってます。
考える時間が無くて今に至ってます。
-
89
owa
2008/06/22 16:50
id: mJs8kxp1Zus
prob: 0.1%
-
-
ちと修正
投稿時に機械的にモデレートします。
あやしいもの → 997:「逮捕しる」
スパムと判定 → 998:「スパムお溜まり」
逮捕したものは目視で判定し手作業で移動します。
このとき自動的に SpamBayes データベースが更新されます。
997:問題ない投稿 → xxx: 投稿時の板に戻す
997:スパム → 998:「スパムお溜まり」に移動
-
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 がダウンした場合使えないし、イントラネットでも使えない。
使ってみれば、どういうものが必要か自然と解かるであろう。
|