2
;; ------------------------- DICE COEFFS ------------------------

(defn dice-set-coeff [a b]
  (* (/ (count (clojure.set/intersection a b))
        (+ (count a) (count b)))
     2))

(defn dice-lst-coeff [a b]
  (dice-set-coeff (set a) (set b)))

;; ------------------------- BIGRAMS ----------------------------

(defn now-nxt [xs]
  "im sure there is a better way to write this"
  (map #(list %1 %2) xs (rest xs)))

(defn bigram [xs]
  (list now-nxt xs))

(defn dice-string-bigram [a b]
  (dice-lst-coeff (bigram a) (bigram b)))

为什么我在结果中得到 1N?

tst.core> (dice-string-bigram "hello" "hello")
1N
tst.core> (dice-string-bigram "hello" "helap")
1/2
tst.core> (dice-string-bigram "hello" "howdy")
0
tst.core> (== (dice-string-bigram "hello" "hello") 1)
true
4

1 回答 1

5

1N 是阅读器和 REPL 用于 BigInts 的语法。

其中一个调用是返回一个 bigint。


回复:“我确定有更好的方法来写这个”

user> (now-nxt a)
((\h \e) (\e \l) (\l \l) (\l \o))
user> (partition 2 1 a)
((\h \e) (\e \l) (\l \l) (\l \o))
于 2012-07-22T21:01:29.050 回答