diff --git a/web/dev/user.clj b/web/dev/user.clj index 95e38c8..fea585b 100644 --- a/web/dev/user.clj +++ b/web/dev/user.clj @@ -95,20 +95,31 @@ (-> state/system :database.kv/connection) (car-mq/enqueue "limericks" '((A 8) (A 8) (B 4) (B 4) (A 8)))))) + (->> (car/wcar + (-> state/system :database.kv/connection) + #_#_(car/ping) + (car/set "baz" "buzz") + (car/keys "*")) + (map + #(car/wcar (-> state/system :database.kv/connection) (car/get %)))) + (car/wcar (-> state/system :database.kv/connection) - (car/ping) - (car/set "baz" "buzz") - (car/get "baz")) + (car/get "carmine:session:174a7525-04cb-4d73-a03c-1141bef6ad75")) + (limericks/get-artist-and-album-for-new-limerick (-> state/system :database.sql/connection)) (repeatedly 1 (fn [] (let [handler (handlers/limerick-generation-post-handler - (-> state/system :database.sql/connection) - (-> state/system :app/cache))] - (handler {:params {:scheme "A9 A9 B5 B5 A9" #_'((A 9) (A 9) (B 5) (B 5) (A 9))}})))) + (-> state/system :com.darklimericks.db.core/connection) + (-> state/system :com.darklimericks.kv.core/connection)) + session-id "carmine:session:174a7525-04cb-4d73-a03c-1141bef6ad75" + router (state/system :com.darklimericks.server.router/router)] + (handler {:params {:scheme "A9 A9 B6 B6 A9" #_'((A 9) (A 9) (B 5) (B 5) (A 9))} + :session/key session-id + ::reitit/router router})))) ;; If the namespace gets dirty, this can clear it up. (run! diff --git a/web/src/com/darklimericks/linguistics/core.clj b/web/src/com/darklimericks/linguistics/core.clj index f791c68..89b5f63 100644 --- a/web/src/com/darklimericks/linguistics/core.clj +++ b/web/src/com/darklimericks/linguistics/core.clj @@ -14,3 +14,8 @@ (map string/capitalize) (string/join " "))) + +(defn rhymes + "All rhymes. Slightly flexible. Ordered by number of rhyming syllables. + Most generic and likely desired rhyming algorithm." + [target]) diff --git a/web/src/com/darklimericks/server/limericks.clj b/web/src/com/darklimericks/server/limericks.clj index db5b4db..85c23d7 100644 --- a/web/src/com/darklimericks/server/limericks.clj +++ b/web/src/com/darklimericks/server/limericks.clj @@ -2,13 +2,20 @@ (:require [clojure.string :as string] [reitit.core :as reitit] [com.darklimericks.db.artists :as artists] + [com.owoga.prhyme.data-transform :as data-transform] [com.darklimericks.db.albums :as albums] [com.darklimericks.db.limericks :as db.limericks] [com.darklimericks.util.identicon :as identicon] [com.darklimericks.linguistics.core :as linguistics] - [com.owoga.prhyme.limerick :as limerick] + [com.owoga.corpus.markov :as markov] [com.owoga.prhyme.data.dictionary :as dict] - [com.owoga.prhyme.data.darklyrics :refer [darklyrics-markov-2]])) + [com.owoga.prhyme.data.darklyrics :refer [darklyrics-markov-2]] + [com.owoga.tightly-packed-trie :as tpt] + [clojure.java.io :as io] + [com.owoga.tightly-packed-trie.encoding :as encoding] + [taoensso.nippy :as nippy] + [com.owoga.trie :as trie] + [taoensso.timbre :as timbre])) (defn parse-scheme-element [[tokens ctx]] (cond @@ -99,12 +106,36 @@ (map string/capitalize) (string/join " "))) +(def database (nippy/thaw-from-file (io/resource "models/database.bin"))) +(def rhyme-trie (into (trie/make-trie) (nippy/thaw-from-file (io/resource "models/rhyme-trie.bin")))) +(def markov-trie (tpt/load-tightly-packed-trie-from-file + (io/resource "models/tpt.bin") + (markov/decode-fn database))) + +(comment + (->> (markov/rhyme-from-scheme + '[[A 9] [A 9] [B 6] [B 6] [A 9]] + database + markov-trie + rhyme-trie) + (map reverse) + (map (partial map second)) + (map data-transform/untokenize)) + + ) + (defn generate-limerick-worker [db message] + (timbre/info "Begin generate limerick worker.") (let [{:keys [scheme session-id]} message - limerick (limerick/rhyme-from-scheme - dict/prhyme-dict - darklyrics-markov-2 - scheme) + limerick (->> (markov/rhyme-from-scheme + scheme + database + markov-trie + rhyme-trie) + (map reverse) + (map (partial map second)) + (map data-transform/untokenize)) + _ (timbre/info "Limerick: " limerick) album-artist (get-artist-and-album-for-new-limerick db) [artist-id album-id] album-artist album (albums/album db album-id)]