| 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.1%
			
		
	
			
		
		
					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.1%
			
		
	
			
		
		
					コメントスパムうざい
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
 
 |