The original FB Duckling project has been deprecated as described below. The replacement is a Haskell implementation. I have forked this in order to preserve, enhance, and use the original Clojure version.
As of May 1st, 2017 we're deprecating this repository in favor of the new Duckling. See our blog post announcement.
Thanks to all the contributors!
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 our blog post announcement for more context.
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.