2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

Navi2ch for Emacs (Part 11)

1 :名無しさん@お腹いっぱい。:03/10/04 14:46
Emacsen で動く 2ch 用ブラウザ、Navi2ch スレッド Part 11 です。

* Navi2ch Project Home Page
http://navi2ch.sourceforge.net/

* よくある質問とその答え
http://navi2ch.sourceforge.net/doc/navi2ch/FAQ.html

* 前スレ Navi2ch for Emacs (Part 10)
http://pc.2ch.net/test/read.cgi/unix/1054769287/

* テストは以下で。このスレでテストするのはやめてちょ。
運用情報板 http://qb.2ch.net/operate/ の書き込みテストスレ
navi2chテスト板 http://jbbs.shitaraba.com/computer/2452/

過去スレなどは >>2-10 あたり。

2 :名無しさん@お腹いっぱい。:03/10/04 14:47
過去スレッド
http://pc.2ch.net/test/read.cgi/unix/1054769287/ Part 10
http://pc.2ch.net/test/read.cgi/unix/1046402063/ Part 9
http://pc.2ch.net/test/read.cgi/unix/1039935998/ Part 8
http://pc.2ch.net/unix/kako/1031/10312/1031231315.html Part 7
http://pc.2ch.net/unix/kako/1023/10238/1023884490.html Part 6
http://pc.2ch.net/unix/kako/1013/10134/1013457056.html Part 5
http://pc.2ch.net/unix/kako/1009/10093/1009340234.html Part 4
http://pc.2ch.net/unix/kako/999/999166513.html Part 3
http://pc.2ch.net/unix/kako/996/996244120.html Part 2
http://cocoa.2ch.net/unix/kako/976/976032951.html Part 1

過去スレッドは SourceForge にも保存されています。
以下の3行を ~/.navi2ch/etc.txt に追加すれば navi2ch で読めます。

navi2ch
http://navi2ch.sourceforge.net/log/
navi2ch

3 :名無しさん@お腹いっぱい。:03/10/04 14:48
* 読めない、書けない、とにかく変です
-> 2ちゃんねるは日々変化し増築されています。
あなたの問題はきっと他の誰かにも起こっています。
つーか過去ログ読め。>>1 の FAQ 読め。
不具合報告のときは問題が起きている板・スレの URL を忘れずに。
下記も参照。
http://www.jpl.org/elips/BUGS-ja.html

* ある板がまるごと見えなくなりました
-> 板の移転かもしれません。
この場合、移転に追従した bbsmenu を navi2ch に読ませる必要があります。
http://navi2ch.sourceforge.net/doc/navi2ch/Board-Questions.html

* moved と出てスレが読めません。
-> 特定のスレだけ読めないなら、dat 落ちして html 化を待っているスレです。
オイスター作戦 (http://2ch.tora3.net/) の ID を購入すれば読めるようになります。
板のどのスレも読めないならこちら。
http://navi2ch.sourceforge.net/doc/navi2ch/Can-not-Read.html

4 :名無しさん@お腹いっぱい。:03/10/04 14:48
* 書き込み時に
「もうちょっと落ち着いて書きこみしてください。」って怒られちゃう。
-> navi2ch 1.7 以上にアップデートしましょう。

* 他所の 2ch 型 BBS は読めないのですか?
-> まち BBS や JBBS@したらば はわりと読めます。
他は読めたり読めなかったり。

* commit したのが CVS に入ってないよ
-> pserver や ViewCVS だと 24 時間程度遅れるそうです。
http://sourceforge.net/docman/display_doc.php?docid=17790&group_id=1#cvs

* remote cvs が使えない環境なのですが
-> snapshot が置いてあります。
http://navi2ch.sourceforge.net/snapshot/
-> cvsroot を固めたものがあります。
http://cvs.sourceforge.net/cvstarballs/navi2ch-cvsroot.tar.bz2

5 :名無しさん@お腹いっぱい。:03/10/04 14:49
* スレ立てについて
980 を越えたくらいで立てられる方が次スレを立ててください。
テンプレは http://navi2ch.sf.net/template.txt にあります。
状況に詳しい人が立てられるとは限らないので、900 を越えたあたりで
上記テンプレが現状に合っているかどうかの確認をお願いします。
立った後で文句を言うのはやめてね。

6 :名無しさん@お腹いっぱい。:03/10/04 15:02
C-oで.datを保存してそれを後で見るにはどうしたら良いのでしょうか?


7 :名無しさん@お腹いっぱい。:03/10/04 15:14
>>6
C-c C-f

8 :名無しさん@お腹いっぱい。:03/10/04 16:57
>7 有難う御座います

使い込むほどに鯵な椰子 Navi2ch マンセ


9 :名無しさん@お腹いっぱい。:03/10/06 02:46
sage

10 :名無しさん@お腹いっぱい。:03/10/06 02:48
ny の bbs 対応まだ〜?

11 :名無しさん@お腹いっぱい。:03/10/06 03:05
( ´д)ヒソ(´д`)ヒソ(д` ) >>10

12 :名無しさん@お腹いっぱい。:03/10/06 18:59
sf.net って、anonymous CVS の更新が止まってるのね……。


13 :名無しさん@お腹いっぱい。:03/10/06 19:07
list画面で板のブックマークを表示させることは出来ませんか?
今はbを押して切りかえているんですが、[その他]のように
カテゴリをつくって表示させることがしたいです。
[-]ブックマーク
 Linux
 UNIX
 Mona
 Hobby
 Comics
 Adalt
 Kako
[-]その他
 navi2ch
[-]リンク(←list画面で「b」 で出てくる板の一覧)
 ニュース速報+
 Linux
 UNIX
 …
みたいになれば……と思っています。

14 :mami:03/10/06 19:13
>>12
なかなか更新されないですね。
https://sourceforge.net/tracker/?func=detail&aid=815579&group_id=1&atid=200001
が同じ現象っぽいんでヲチしてるんですが
進展がないです。

15 :名無しさん@お腹いっぱい。:03/10/06 23:04
すいません質問させてください。
現状winXP-home+meadow+navi2ch(cvs-20031005)を使用していますが
特定の板でスレ一覧が更新されません。
Error: Opening output file: no such file or directory, c:/DOCUME~1/棯楷/LOCALS~1/Temp/ema00524not updated
こういうメッセージが出ます。生活板なのですが、最前まで1.7.1を使っていたのが悪かったのかと思い
CVS版を使ってバイトコンパイルしてみましたが結果は同じでした。
ほかのよく見る板では半島情勢+、SF、モバイル、UNIX 、ぃぬxなどで起こります。
回避方法を教えていただければ幸いですが、あそこに書いてあった等の教唆で結構ですので
何か教えていただけると助かります。
書き込むとあほほど文字化けするのはmeadowのスレでも探して聞くことにします。
ぃぬxほど簡単じゃないので結構めげそうですが。

16 :mami:03/10/06 23:13
>>15

>>3
> 不具合報告のときは問題が起きている板・スレの URL を忘れずに。
> 下記も参照。
> http://www.jpl.org/elips/BUGS-ja.html

17 :mami:03/10/06 23:18
>>15
> 最前まで1.7.1を使っていたのが悪かったのかと思い
> CVS版を使ってバイトコンパイルしてみましたが
今だと 1.7.1 と CVS 版はあんまり違いはないです。
>>12 >>14 な状態なので
anonymous CVS よりは 1.7.1 の方が新しかったりします。

18 :名無しさん@お腹いっぱい。:03/10/06 23:30
> c:/DOCUME~1/棯楷/
この辺が臭い。
日本語をユーザ名に使うと無用なトラブルにひっかかる率が格段に増加します。


19 :名無しさん@お腹いっぱい。:03/10/06 23:41
>>18
規定とかいうやつなのです。
しかしこれはnavi2chの問題と言うより
meadow+navi2chつーぷらとんの問題のようですね。
つっか、この入力システム激しく使い辛いですね。

20 :名無しさん@お腹いっぱい。:03/10/07 00:28
どの入力システム?

21 :名無しさん@お腹いっぱい。:03/10/07 01:32
自分の環境等を伝える努力を惜しみ、
「ぃぬx」とか「ぷらとん」みたいな語を使う。こりゃ酷いな。

22 :名無しさん@お腹いっぱい。:03/10/07 01:44
「つーぷらとん」でひとつの単語のような

23 :名無しさん@お腹いっぱい。:03/10/07 01:47
「というプラットフォーム」かな〜と想像してみたんだけど。

24 :mami:03/10/07 01:48
>>19
まずは >>16 を参考に
backtrace を取っていただけませんか?

25 :名無しさん@お腹いっぱい。:03/10/07 02:28
もう原因と解決方法は出てる。

原因: gzip を使用する必要のある板で、TEMP ディレクトリに日本語が入ってると
call-process-region でエラー発生。

解決方法: 名前に日本語を含まないユーザーを作成するなどの方法で TEMP
ディレクトリを英数字のみにする。


26 :名無しさん@お腹いっぱい。:03/10/07 02:30
>>25
それは原因ではなくて、症状なのでは?
原因なら、gzip のマルチバイト処理がダメポってことだろ。


27 :mami:03/10/07 02:35
>>25
http://navi2ch.sourceforge.net/doc/navi2ch/Misc-Questions.html#Misc%20Questions
の5番目と同じような問題でしょうか。
Windows 環境の事情はよく知らないので、
どなたか doc/navi2ch.texi の修正案を書いていただけませんか?
;; もちろん committer の方は
;; 直接書き換えていただいてかまいません。

28 :名無しさん@お腹いっぱい。:03/10/07 02:36
>>25
有難う御座います。それで解決できるかやってみます。

>>21
ツープラトンって言葉知りませんか?
大体meadowで日本語入力する方法がまだよくわかってないもので。
その片仮名が出なかった。
で、環境は書いてますが、それ以上何か必要でしょうか。


29 :名無しさん@お腹いっぱい。:03/10/07 03:12
そりゃ「ツープラトン」なんて見たことも聞いたこともない人のほうが
多いだろうよ。

30 :名無しさん@お腹いっぱい。:03/10/07 03:19
>>25
> 原因: gzip を使用する必要のある板で、TEMP ディレクトリに日本語が入ってると
> call-process-region でエラー発生。

これは、TMPDIR のほうが良いのでは?

31 :名無しさん@お腹いっぱい。:03/10/07 04:56
>>26
> 原因なら、gzip のマルチバイト処理がダメポってことだろ。
gzip はマルチバイトのファイル名を扱えるよ。
>>25 が症状とするなら、Emacs では環境変数にマルチバイト文字が入る事は
考慮されてないってのが原因。

>>27
てことで違う問題。ただ、ユーザー名に日本語使うなってのは Windows の
FAQ なんで Navi2ch の FAQ には入れなくていいと思う。

>>30
Windows では環境変数 TEMP が標準で設定され、Meadow では環境変数 TEMP が
最優先。TMPDIR は実質無視されるので、書くとかえって混乱しない?

32 :名無しさん@お腹いっぱい。:03/10/07 05:48
>>31
> Windows では環境変数 TEMP が標準で設定され、Meadow では環境変数 TEMP が
> 最優先。TMPDIR は実質無視されるので、書くとかえって混乱しない?

知りませんでした。

33 :名無しさん@お腹いっぱい。:03/10/07 07:16
プロレスおたくしか知らないんじゃない? > ツープラトン
二人でやる連携プレーのこと

34 : :03/10/07 09:04
anon CVS更新された


35 :名無しさん@お腹いっぱい。:03/10/07 13:43
>>34
わ〜い!!

36 :15.19:03/10/07 19:36
皆様、有り難うございました。
ユーザアカウントを作り直して、完全に動くようになりました。
同時にバージョンも1.7.1に置き換えました。
極楽でございます。皆様どうも有り難う。多謝!

37 :名無しさん@お腹いっぱい。:03/10/07 22:31
ウザイ香具師をあぼーんするときに
hideだと隠されるだけで
リプレイスだと「あぼぼーん」等に置き換えられるわけですが

これらを複合することはできませんか?

あぼぼーんに置換して、あまりに数が増えた場合は
あぼぼーんをhideしたいなぁ と思ったもので。

単純にhideすると、h押すと見えちゃうし。

38 :名無しさん@お腹いっぱい。:03/10/07 22:57
http://www.geocities.co.jp/SiliconValley-PaloAlto/7043/
ここのベイジアンフィルタをnavi2chで試してみた。
わりとまともに広告を検出できるかも。おもしろい。

39 :名無しさん@お腹いっぱい。:03/10/07 23:06
おーじっそうしてして。

40 :名無しさん@お腹いっぱい。:03/10/07 23:18
激しく期待sage

41 :名無しさん@お腹いっぱい。:03/10/07 23:23
>>38-40
うざいAAにも効けばうれすい

42 :名無しさん@お腹いっぱい。:03/10/07 23:26
nをオーバーライドしてまともな書き込みの例として学習、
dをオーバーライドしてスパムな書き込みの例として学習、

するようにした上で、
navi2ch-article-message-filter-by-bayesian関数書いた。
でも期待するほどじゃないかもよ、というのもさっき書いたばかりで
コーパスが鍛えられてないから、効果がまだよくわからない。


43 :名無しさん@お腹いっぱい。:03/10/07 23:34
>>42 すげー。関数名読んだだけでよだれダーラダラ。

44 :名無しさん@お腹いっぱい。:03/10/08 00:04
>>42
実現すれば初の bayesian 2ch ブラウザっすね。

45 :名無しさん@お腹いっぱい。:03/10/08 00:58
http://www.geocities.co.jp/SiliconValley-PaloAlto/7043/
のspamfilter.elをインストールしてから、以下のコードをevalして
みてください。

(defun spamf-register-token (corpus token)
(spamf-increase-word-count corpus (spamf-intern token))
(incf (spamf-corpus-message-count corpus)))

(defun spamf-register-good-token (token)
(interactive "MToken: ")
(spamf-register-token spamf-good-corpus token))

(defun spamf-register-spam-token (token)
(interactive "MToken: ")
(spamf-register-token spamf-good-corpus token))

(define-key navi2ch-article-mode-map "n" 'navi2ch-article-next-message-hack)
(define-key navi2ch-article-mode-map "d" 'navi2ch-article-hide-message-hack)
(define-key navi2ch-article-hide-mode-map "d" 'navi2ch-article-cancel-hide-message-hack)

(defun navi2ch-article-next-message-hack ()
(interactive)
(navi2ch-article-add-message-filter-by-bayesian-good)
(navi2ch-article-next-message))

(defun navi2ch-article-hide-message-hack ()
(interactive)
(navi2ch-article-add-message-filter-by-bayesian-spam)
(navi2ch-article-hide-message))


46 :名無しさん@お腹いっぱい。:03/10/08 00:58
(defun navi2ch-article-cancel-hide-message-hack (&optional prefix)
(interactive "P")
(navi2ch-article-add-message-filter-by-bayesian-good)
(navi2ch-article-cancel-hide-message prefix))

(defun navi2ch-article-bayesian-tokenizer (alist)
(nconc
(funcall spamf-tokenize-string-function
(cdr (assq 'data alist)))
(list
(concat "mail:" (cdr (assq 'mail alist)))
(concat "name:" (cdr (assq 'name alist))))))

(defun navi2ch-article-bayesian-register-current-message (func)
(mapcar func
(navi2ch-article-bayesian-tokenizer
(navi2ch-article-get-message
(navi2ch-article-get-current-number)))))

(defun navi2ch-article-add-message-filter-by-bayesian-good ()
(navi2ch-article-bayesian-register-current-message 'spamf-register-good-token))

(defun navi2ch-article-add-message-filter-by-bayesian-spam ()
(navi2ch-article-bayesian-register-current-message 'spamf-register-spam-token))


47 :名無しさん@お腹いっぱい。:03/10/08 01:00
(defun navi2ch-article-message-filter-by-bayesian (alist)
(when (> (spamf-sum-spam-probability
(mapcar #'cdr (spamf-cutoff-words
(nconc
(funcall spamf-tokenize-string-function (cdr (assq 'data alist)))
(list
(concat "mail:" (cdr (assq 'mail alist)))
(concat "name:" (cdr (assq 'name alist)))))
spamf-cutoff-words-limit)))
spamf-spamness-limit)
'hide))

(add-to-list 'navi2ch-article-message-filter-list
'navi2ch-article-message-filter-by-bayesian)

(defvar navi2ch-article-bayesian-save-file-name "~/.navi2ch/spamfilter")
(add-hook 'navi2ch-exit-hook
(lambda () (spamf-save-corpus navi2ch-article-bayesian-save-file-name)))
(add-hook 'navi2ch-hook
(lambda () (spamf-load-corpus navi2ch-article-bayesian-save-file-name)))


48 :名無しさん@お腹いっぱい。:03/10/08 01:54
*-hack って結構メジャーな命名なんかな?

49 :名無しさん@お腹いっぱい。:03/10/08 02:08
hook 追加しときました。pserver 更新されたら
(add-hook 'navi2ch-article-next-message-hook
'navi2ch-article-add-message-filter-by-bayesian-good)
(add-hook 'navi2ch-article-hide-message-hook
'navi2ch-article-add-message-filter-by-bayesian-spam)
(add-hook 'navi2ch-article-cancel-hide-message-hook
'navi2ch-article-add-message-filter-by-bayesian-good)
こんな感じでいけます。

ところで、n で学習だと good に寄りすぎな感じですね。
navi2ch-article-message-filter-by-bayesian で good なら good として
bad なら bad として再学習させてやる (bogofilter -u 方式) というのは
どうでしょうか。

50 :名無しさん@お腹いっぱい。:03/10/08 05:06
> (defun spamf-register-spam-token (token)
> (interactive "MToken: ")
× (spamf-register-token spamf-good-corpus token))
○ (spamf-register-token spamf-bad-corpus token))
だよね。

>>49
フィードバック付きフィルタ
(defvar navi2ch-article-auto-spam-register-by-filter t)
(defun navi2ch-article-message-filter-by-bayesian (alist)
(let ((token (navi2ch-article-bayesian-tokenizer alist)))
(if (> (spamf-sum-spam-probability
(mapcar #'cdr (spamf-cutoff-words
token
spamf-cutoff-words-limit)))
spamf-spamness-limit)
(progn
(if navi2ch-article-auto-spam-register-by-filter
(mapcar #'spamf-register-spam-token token))
'hide)
(if navi2ch-article-auto-spam-register-by-filter
(mapcar #'spamf-register-good-token token))
nil)))

久々の大ヒット。快適杉。

51 :38:03/10/08 08:19
2ゲットみたいなのをうまく評価するために
レス番も含めたほうがよさげ。

(defun navi2ch-article-bayesian-tokenizer (alist)
(nconc
(funcall spamf-tokenize-string-function
(cdr (assq 'data alist)))
(list
(concat "num:" (number-to-string (navi2ch-article-get-current-number)))
(concat "mail:" (cdr (assq 'mail alist)))
(concat "name:" (cdr (assq 'name alist))))))

navi2ch-article-get-messageはレス番を返さない
みたいなので、感じとしてはこうです。

52 :38:03/10/08 08:29
ごめんなさい。レス番がついてくることもある
ようなので、こうしてます。

(concat "num:" (number-to-string (or (cdr (assq 'number alist))
(navi2ch-article-get-current-number))))


53 :名無しさん@お腹いっぱい。:03/10/08 09:14
まとめてみました。
http://navi2ch.sourceforge.net/navi2ch-spamfilter.el

>>51-52
それだと特定の番号のレスの評価を上げ下げしてるだけってことになりませんか?
ベイジアンフィルタでは単語間の関連は評価しないんじゃなかったかと。

54 :38:03/10/08 10:01
単語間の確率を独立と仮定してるのは簡易化のためですよね。

スレの頭に出てくるAAとか乙は消すけど、
途中で出てくるAAは(同じものでも)見たいので、
それなりに妥当なんじゃないかと思うんですが。

レス番とspam確率が独立なら、全てのレス番にニュートラルな
結果になって、副作用はなさそうですし。

55 :名無しさん@お腹いっぱい。:03/10/08 12:20
実は統計的に意味があるかも知れませんし、入れておくのも面白いかも
しれませんね。(55 は大抵ゴミとか)

時々 probability が負になるので何か変だと思ったら。。。
--- spamfilter.el.orig Mon Jun 23 10:16:34 2003
+++ spamfilter.el Wed Oct 8 12:14:34 2003
@@ -258,7 +258,7 @@
See http://www.paulgraham.com/spam.html
See http://www.paulgraham.com/better.html"
(let ((px (float (apply #'* probs)))
- (qy (float (apply #'* (mapcar #'1- probs)))))
+ (qy (float (apply #'* (mapcar (lambda (x) (- 1 x)) probs)))))
(/ px (+ px qy))))

(defun spamf-cutoff-words (words n)


56 :38:03/10/08 21:42
ベイジアンフィルタを積極的に使ってみました。

・山崎渉(^^)が消えた
・URL一行広告の出現頻度の高いものが消えた
・一部の大きいAAも消えた

簡単なわりにはかなりよく動いてる印象ですけど、
誤認識もありますね。特に">>80 >>100"のような一行レスとか、
スパムが使ってるのと同じAAで文字部分だけ違うもの
(かおりんの頭部がポカーンと言ってるようなやつ)
とか、いくつか間違って消されてしまいました。

いまのtokenizerはexample.comを"example" "com"として
切り出してるんですが、これは一単語として切り出したほうが
よさそう。

ほかの人の使用感はどうですかねー?

57 :名無しさん@お腹いっぱい。:03/10/08 22:15
>>56
ありがたく使わせてもらってます。まだ効果を実感するところまではいってま
せん。

ところで現状の機能ですが、今迄のフィルタ(n-a-m-filter-by-name とか)で
自動的に hide されるレスは bad-corpus には登録されないですよね? >>49
の設定すると登録されるのかな?

58 :名無しさん@お腹いっぱい。:03/10/08 22:45
>>56
>>55 のパッチは当ててますよね。
語数が少ない場合(2chでは多い)、変な数値が出るとピーキーに反応する感じです。
> ・山崎渉(^^)が消えた
というレスが単純マッチと違って消えないのがいいですね。コーパスを覗くと
「^」x2 のスコアがやたら悪いのには笑いました。
> 誤認識もありますね。特に">>80 >>100"のような一行レスとか、
(funcall spamf-tokenize-string-function ">>80 >>100")
=> nil
なんですよ。
> いまのtokenizerはexample.comを"example" "com"として
> 切り出してるんですが、これは一単語として切り出したほうが
> よさそう。
のこともあるし、tokenizer に手を入れた方がいいかもしれませんね。
AA の誤認を防止するには bigram より block を元にした方がよさそう。

>>57
> >>49 の設定すると登録されるのかな?
これやっかいです。他のフィルタとは無関係に、good と判断したら
goo-corpus に、bad と判断したら bad-corpus に登録します。
hide マークついちゃうと、どのフィルタが判断したのかわからなく
なってしまうので、対策取るまではマゼルナキケンです。


59 :57:03/10/08 23:13
>>58
> なってしまうので、対策取るまではマゼルナキケンです。
むむ、っつーことは当面は >>49 の設定はしないほうがいいってことですかね。
了解です。

60 :名無しさん@お腹いっぱい。:03/10/08 23:37
ナイス。わざわざ荒れてそうなスレに行って学習させてるところです(w

漏れは navi2ch-directory いじってるので

- (defvar navi2ch-article-bayesian-save-file-name "~/.navi2ch/spamfilter")
+ (defvar navi2ch-article-bayesian-save-file-name
+ (expand-file-name "spamfilter" navi2ch-directory)

キボンヌ。

61 :名無しさん@お腹いっぱい。:03/10/09 00:27
混ぜても平気になりました。
既存の filter 処理が終った段階で bad と good を学習しなおします。
http://navi2ch.sourceforge.net/navi2ch-spamfilter.el


62 :名無しさん@お腹いっぱい。:03/10/09 15:23
>>61
spamfilter.el を書いた者です。navi2ch をいつも使わせてもらってます、早
速試してみたいと思います。とりあえずいくつかコメントです。

(defsubst navi2ch-spamf-register-token (corpus token)
(spamf-increase-word-count corpus (spamf-intern token))
(incf (spamf-corpus-message-count corpus)))

message-count はトークンの数ではなく、メッセージ(2ch の場合はレス)の数
です。そのほうが誤検出を避ける方向にバイアスが働くらしいです。
http://www.shiro.dreamhost.com/scheme/trans/spam-j.html

>>58
メールに比べて 2ch のレスはかなり短いので spamf-cutoff-words-limit を
小さくしてみると精度が上るかもしれません。また、極端に短いメッセージは
ベイジアンフィルタでは判定できないので、除外したほうがよいと思います。

>>55
すみません直しておきます。

63 :62:03/10/09 15:28
すみません、間違えて age てしまった。

>>56
以下のように URL に使われる文字を追加すれば URL を単語として扱えますが、
精度があがるかどうかはしばらく試してみたほうがよいと思います。

(defun jtoken-alnum-p (char)
(and (< char 127)
(or (and (<= ?a char) (<= char ?z))
(and (<= ?0 char) (<= char ?9))
(and (<= ?A char) (<= char ?Z))
(memq char '(?- ?' ?$ ?!))
(memq char '(?: ?/ ?.))))) ; ココ

(jtoken-bigram-tokenize-string "http://www.example.com/foo.html")
=> ("http://www.example.com/foo.html")

64 :名無しさん@お腹いっぱい。:03/10/09 15:44
list modeでブックマークのカテゴリでいいのかな? のソートって出来ないですよね
bookmark2.txt弄った方が早いですか?


65 :名無しさん@お腹いっぱい。:03/10/09 15:49
↑OKです もういいです


66 :名無しさん@お腹いっぱい。:03/10/09 17:24
今までそういうものと思って気にもしていませんでしたが
navi2ch-spamfilterつかって、2chがここまで読みやすくなるとは
感激です。感謝sage

67 :名無しさん@お腹いっぱい。:03/10/09 20:30
navi2ch-spamfilter使わせてもらってます。

新スレ取得すると(既存スレのC-u Fでもいいけど)、
spamfilterナシ時の10倍くらい時間がかかるようになりますた。
(navi2ch CVS先端/Meadow 1.14)

1000レスあれば、メール1000件振り分けるのと同じくらいコストが
かかるんだから仕方がないっちゃ仕方ないですかね。

68 :名無しさん@お腹いっぱい。:03/10/09 22:00
>>62
> message-count はトークンの数ではなく、メッセージ(2ch の場合はレス)の数
> です。そのほうが誤検出を避ける方向にバイアスが働くらしいです。
つまり、トークン毎ではなく、メッセージ毎に増加させるってことですね。
こんな感じでいいのでしょうか。
(defsubst navi2ch-spamf-register-token-list (corpus list)
(dolist (token list)
(spamf-increase-word-count corpus (spamf-intern token)))
(incf (spamf-corpus-message-count corpus)))

(defsubst navi2ch-spamf-register-good-token-list (list)
(navi2ch-spamf-register-token-list spamf-good-corpus list))

(defsubst navi2ch-spamf-register-spam-token-list (list)
(navi2ch-spamf-register-token-list spamf-bad-corpus list))

>>63
Emacs 20 だと hash 系関数が Emacs Lisp 製だから余計に遅く感じるのかも。
Emacs 21 や XEmacs だと built-in なので、少しはましです。
navi2ch-article-auto-spam-register-by-filter で学習させてるうちは
誤判定を見逃すと間違って登録されてしまうので、
navi2ch-article-\(new-\)?message-range (速い CPU を使ってると nil にしがち)
を調整して一度に処理するレスの数を制限してやった方がいいと思います。


69 :38:03/10/09 23:24
>>50
フィードバックは初めはオフにしたほうがいいですよね。
ほとんど学習してない状態を反影させるのはよくなさそうなので。

>>62
作者さんがnavi2chユーザなのにはびっくり。elispな実装がなければ
navi2chに組み合わせてみようとはしませんでしたよ。感謝してます。

spamf-corpus-message-countはそういう意味だったんですか。
極端に短いメッセージというのは数文字くらいでしょうか。
一行広告があるのでそういうのはなんとかしたいところ。


これからアルゴリズムやtokenizerに手が加わりそうなので、
"n"でimportantマークを付けるようにしてみました。
importantをgood、hideをbadとして後で再学習できるように。

(defadvice navi2ch-article-next-message
(before navi2ch-article-next-message-as-good activate)
(navi2ch-article-add-important-message)
(navi2ch-article-add-message-filter-by-bayesian-good))


70 :名無しさん@お腹いっぱい。:03/10/10 00:14
spamfilterのコーパス空間って一つしか持てないのかな?
wanderlustとnavi2ch、両方同じemacsのプロセス(別フレーム)で使うと
コーパスが混ざった上に、下手すると過去の学習が飛んでしまうので
ちょいと不便。分離できるならしたいなあ。
(wl上げる→wlで学習させずにnavi2ch使う
→navi2chコーパス保存→wl結局使わず終了、とか)

71 :62:03/10/10 00:38
>>68
そうです。そんな感じで OK だと思います。

>>67
byte-compile-file はしてますよね? 結構マクロを使っているので、コンパ
イルしたほうが 2 倍以上速くなります。
spamfilter.el, japanese-tokenizer.el にはもうちょっと高速化の余地があ
るので、インライン化などを検討してみたいと思います。

>>69
navi2ch に組みこんだら面白いかなと前々から思っていたところなのでありが
たいです。

極端に短いメッセージとは、URL だけの一行メッセージを想定していました。
短いメッセージはどうしても「見逃し」が多くなってしまうのはある程度仕方
がないです。もっと精度を上げるには、メッセージ本文だけでなく URL を辿っ
てサイトの内容をベイジアンフィルタにかける必要があるようです。
http://www.shiro.dreamhost.com/scheme/trans/ffb-j.html

72 :名無しさん@お腹いっぱい。:03/10/10 00:39
http://navi2ch.sourceforge.net/navi2ch-spamfilter.el 更新。
頭に使い方を書いてみました。まだ試行錯誤中なので、もっといいやり方が
あったら教えてください。

>>69
> importantをgood、hideをbadとして後で再学習できるように。
もできるようにしました。

ところで 38 さん、もしよろしければ navi2ch/contrib に入れたいんですが、
いかがでしょうか。

73 :62:03/10/10 00:50
>>70
あ、ウチと同じ状況です、コーパス混ざってました。対応したいと思います。

74 :名無しさん@お腹いっぱい。:03/10/10 01:21
(provide 'navi2ch-spamfilter)
を追加して使い方を~/.navi2ch/init.elで
(require 'navi2ch-spamfilter)
にしてほしいです。

75 :名無しさん@お腹いっぱい。:03/10/11 00:26
navi2ch-save-status にキーを割り当てていただけませんか?
list, board, bookmark, article の C-x C-s で save できると嬉しいです。


76 :名無しさん@お腹いっぱい。:03/10/11 00:35
http://navi2ch.sourceforge.net/navi2ch-spamfilter.el 更新。
* 初期コーパスを学習させる過程でフィルタが効いてると副作用が大きいので
 デフォルトでは無効にしました。有効にするには (navi2ch-spamf-enable)
 を評価してださい。
* 日付も評価対象にしました。荒らしと同じ日に書くとスコアが下がります。
* レスで C-u C-c C-s すると楽しい。

入れたり出したりしつつ C-u C-c C-s してて思った事
http://www.shiro.dreamhost.com/scheme/trans/spam-j.html
> だが彼らは、何であれメッセージを届けなければならない。
2ch の荒らしは場そのものの破壊が目的であり、メッセージの伝達が目的では
ない。これにより、Bayesian フィルタの有効性は spam 対策ほどではない。
特に苦手な荒らしはレスをランダムにコピペする攻撃。これは
> メイルを受け取った人にとって、spamを識別するのはたやすい。
これすら難しい。全ての板の全てのスレの内容をデータベースとして持ち、重
複チェックをしないとこの攻撃はふせげないんじゃないだろうか。


77 :名無しさん@お腹いっぱい。:03/10/11 00:36
>>75
save-buffer をつぶすのはあんまりだと思う。
navi2ch-find-file が C-c C-f なんで
navi2ch-save-status は C-c C-s なんてどう?
……と思ったら spamfilter の navi2ch-article-show-spam-probability とかぶるのか。

まあ個人的にやりなさいってこった。

78 :名無しさん@お腹いっぱい。:03/10/11 00:57
C-c S はどうでしょうか?

79 :名無しさん@お腹いっぱい。:03/10/11 01:06
C-c S はユーザー向けに予約されてます。自分でバインドしましょう。

80 :62:03/10/11 01:12
>>76
消し忘れ?
--- navi2ch-spamfilter.el~ Sat Oct 11 01:02:15 2003
+++ navi2ch-spamfilter.el Sat Oct 11 01:10:04 2003
@@ -59,8 +59,7 @@
'navi2ch-article-show-spam-probability))

(defsubst navi2ch-spamf-register-token (corpus token)
- (spamf-increase-word-count corpus (spamf-intern token))
- (incf (spamf-corpus-message-count corpus)))
+ (spamf-increase-word-count corpus (spamf-intern token)))

(defsubst navi2ch-spamf-register-good-token (token)
(interactive "MToken: ")



81 :名無しさん@お腹いっぱい。:03/10/11 01:23
>>75
(define-key navi2ch-global-map "\C-x\C-s" 'navi2ch-save-status)

>>77
> save-buffer をつぶすのはあんまりだと思う。
そうかな。
特に使わないような。
wl もつぶしてるよね。

82 :名無しさん@お腹いっぱい。:03/10/11 01:34
history でうっかり d してしまったのを
undoってできないでしょうか?

83 :名無しさん@お腹いっぱい。:03/10/11 02:15
>>80
上 3 つの関数はすでにそれだけで孤立してるんですが、interactive なので
残してます。で、手動でトークンを登録した場合、それを単独のメッセージの
登録であると見なすべきかどうかの判断をしたくなかったので、そこの incf
は元のままにしてます。(つまり手抜きです。)
まぎらわしいのであれば上 3 つの関数は消した方がいいですかね。

84 :名無しさん@お腹いっぱい。:03/10/11 02:16
>>81
> > save-buffer をつぶすのはあんまりだと思う。
> そうかな。
> 特に使わないような。

使ってもせいぜい message mode だけと思われ。


> wl もつぶしてるよね。

yes


85 :名無しさん@お腹いっぱい。:03/10/11 02:33
特に副作用はなさそうなので navi2ch-global-view-map でバインドして
commit しました。
;; pserver への反映はしばらくかかりそうですが。。。

86 :名無しさん@お腹いっぱい。:03/10/11 04:04
>>85
> ;; pserver への反映はしばらくかかりそうですが。。。

スナップショットに反映することは可能ですか?

87 :名無しさん@お腹いっぱい。:03/10/11 04:06
>>86
knok タン と (;´Д`)ハァハァ すれば可能です。

88 :名無しさん@お腹いっぱい。:03/10/11 04:13
>>86
うーん、理解してますか?

89 :38:03/10/11 18:41
>>72
> ところで 38 さん、もしよろしければ navi2ch/contrib に入れたいんですが、
> いかがでしょうか。

どうぞ。ていうかnavi2ch-logo.elとかを書いたのはぼくなので
自分でやるべきなんですがお手数かけてすみません。
最近UNIXは会社でしか使ってなくてWindowsでcvs使うには
どうしたらいいんだろう、という状態なもんで……。
navi2chもひさしぶりです。

90 :名無しさん@お腹いっぱい。:03/10/11 18:48
>>89
Cygwin 入れると UNIX っぽい環境が手に入りますよ。

91 :名無しさん@お腹いっぱい。:03/10/11 18:56
>>89
> 最近UNIXは会社でしか使ってなくてWindowsでcvs使うには
> どうしたらいいんだろう、という状態なもんで……。

ftp.m17n.org/pub/mule/Windows 以下を漁れば出てきます.

92 :名無しさん@お腹いっぱい。:03/10/11 20:57
cygwinにcvs入ってる

93 :名無しさん@お腹いっぱい。:03/10/12 00:09
>>91 だと exe ファイルだけひろってくればよろしい.


94 :名無しさん@お腹いっぱい。:03/10/12 17:47
>>70 の対策をしてみました。
http://navi2ch.sourceforge.net/navi2ch-spamfilter.el
にも置いておきます。

95 :62:03/10/12 20:00
>>94
ちょうどこちらでも同じ対策をしてました、かぶってしまいました。

spamfilter.el を 0.10 にアップデートしました。複数コーパスに対応しました。
http://www.geocities.co.jp/SiliconValley-PaloAlto/7043/#spamfilter.el

spamfilter-0.10 用の navi2ch-spamfilter.el を以下に置いておきます。よ
ろしければ取り込んでください。
http://www.geocities.co.jp/SiliconValley-PaloAlto/7043/navi2ch-spamfilter.el.txt
2003/10/12 19:19 の navi2ch-spamfilter.el に対するパッチはこちら。
http://www.geocities.co.jp/SiliconValley-PaloAlto/7043/navi2ch-spamfilter.el.patch.200310121919.txt

spamfilter-0.10 からコーパスファイルのフォーマットをちょっと変更したの
で 0.10 をインストールする前に変換スクリプトを実行してください。

% cp -p ~/.navi2ch/spamfilter ~/.navi2ch/spamfilter.org
% perl convert_corpus_0.9_to_0.10.pl -navi2ch ~/.navi2ch/spamfilter > ~/.navi2ch/spamfilter.new
% mv ~/.navi2ch/spamfilter.new ~/.navi2ch/spamfilter

96 :名無しさん@お腹いっぱい。:03/10/12 21:38
(defvar navi2ch-message-font-lock-keywords-x nil
"Internal variable used to have extraordinary level font-lock keywords
for the Navi2ch Message mode.")
(setq develock-keywords-alist
(cons '(navi2ch-message-mode navi2ch-message-font-lock-keywords-x
develock-navi2ch-message-font-lock-keywords)
develock-keywords-alist))
(setq develock-navi2ch-message-font-lock-keywords
'(("\\( +\\|\t\\)"
(0 'develock-whitespace-face-1))))
(add-hook 'navi2ch-message-mode-hook 'turn-on-font-lock)

navi2ch-message-mode で半角スペースの連続とタブをハイライトする
develock 用の設定。まぁ気休めだけど。

97 :名無しさん@お腹いっぱい。:03/10/12 21:47
>>95
変換スクリプトで navi2ch 用にしたときに、名前空間が navi2ch-spamfilter.el と齟齬を
起してますね

98 :62:03/10/13 00:14
>>97
アップデートしてから 2ch を見にいったら >>94 がでてて、慌てて変更した
のでちょっとおかしいかもしれません。具体的にどこですか?

99 :名無しさん@お腹いっぱい。:03/10/13 00:42
navi2ch-spamfilter.el.txt では navi2ch-spamf-*-corpus ですが、
変換スクリプトでは navi2ch-*-corpus となってしまいます

100 :62:03/10/13 00:51
ちょうど書き直してる途中にダウンロードしたのかも。
http://www.geocities.co.jp/SiliconValley-PaloAlto/7043/spamfilter/convert_corpus_0.9_to_0.10.pl.txt
これで大丈夫ですか?

247 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)