tsykの日記: CommonLisp → Ruby (Bayesian SPAM Filtering)
日記 by
tsyk
===========================================================
(let ((g (* 2 (or (gethash word good) 0)))
(b (or (gethash word bad) 0)))
(unless (< (+ g b) 5)
(max .01
(min .99 (float (/ (min 1 (/ b nbad))
(+ (min 1 (/ g ngood))
(min 1 (/ b nbad)))))))))
-----
g = (good[word] or 0) * 2
b = (bad[word] or 0)
unless (g + b) < 5
[0.01,
[0.99, [1, b / nbad].min /
([1, g / ngood].min +
[1, b / nbad].min)].min].max
end
===========================================================
(let ((prod (apply #'* probs)))
(/ prod (+ prod (apply #'* (mapcar #'(lambda (x) (- 1 x))
probs)))))
-----
class Array
def apply(m)
arr = self.dup
r = arr.shift
arr.each{|a| r = r.send(m, a)}
r
end
end
prod = probs.apply(:*)
prod / (prod + probs.map{|a| 1 - a}.apply(:*))
===========================================================
(let ((g (* 2 (or (gethash word good) 0)))
(b (or (gethash word bad) 0)))
(unless (< (+ g b) 5)
(max .01
(min .99 (float (/ (min 1 (/ b nbad))
(+ (min 1 (/ g ngood))
(min 1 (/ b nbad)))))))))
-----
g = (good[word] or 0) * 2
b = (bad[word] or 0)
unless (g + b) < 5
[0.01,
[0.99, [1, b / nbad].min /
([1, g / ngood].min +
[1, b / nbad].min)].min].max
end
===========================================================
(let ((prod (apply #'* probs)))
(/ prod (+ prod (apply #'* (mapcar #'(lambda (x) (- 1 x))
probs)))))
-----
class Array
def apply(m)
arr = self.dup
r = arr.shift
arr.each{|a| r = r.send(m, a)}
r
end
end
prod = probs.apply(:*)
prod / (prod + probs.map{|a| 1 - a}.apply(:*))
===========================================================
CommonLisp → Ruby More ログイン