/duckling

Language, engine, and tooling for expressing, testing, and evaluating composable language rules on input strings. (a duckling clojure fork)

Primary LanguageClojureOtherNOASSERTION

As of May 1st, 2017 the Duckling team deprecated the Clojure version in favor of the new Duckling. See their blog post announcement.

My intention is to continue the clojure development of the Duckling project so I forked it in this new project.

Duckling

Clojars Project

Duckling is a Clojure library that parses text into structured data:

“the first Tuesday of October” => {:value "2014-10-07T00:00:00.000-07:00"
                                   :grain :day}

You can try it out at https://duckling.wit.ai

See blog post announcement for more context.

Getting started

To use Duckling in your project, you just need two functions: load! to load the default configuration, and parse to parse a string.

(ns myproject.core
  (:require [duckling.core :as p]))

(p/load!) ;; Load all languages

(p/parse :en$core ;; core configuration for English ; see also :fr$core, :es$core, :zh$core
         "wake me up the last Monday of January 2015 at 6am"
         [:time]) ;; We are interested in :time expressions only ; see also :duration, :temperature, etc.

;; => [{:label :time
;;        :start 15
;;        :end 49
;;        :value {:type "value", :value "2015-01-26T06:00:00.000-02:00", :grain :hour}
;;        :body "last Monday of January 2015 at 6am"}]

See the documentation for more information.