Duckling - phân tích văn bản sang dữ liệu có cấu trúc

Duckling là một thư viện của Haskell, phát triển bởi Facebook, rất hay để phân tích (parses) dữ liệu text sang dạng có cấu trúc (structured data). Công cụ này rất hữu ích trong các ứng dụng phân tích văn bản trong NLP và nhất là lĩnh vực chatbot.

Github: https://github.com/facebook/duckling

Sử dụng

Compile và run binary

$ stack build$ stack exec duckling-example-exe

Câu lệnh trên sẽ khởi tạo 1 HTTP server, để sử dụng API này, chỉ cần gửi request như sau:

$ curl -XPOST https://0.0.0.0:8000/parse --data 'locale=en_GB&text=tomorrow at eight'

File exe/ExampleMain.hs chứa các ví dụ để bạn có thể tích hợp Duckling vào các project sử dụng ngôn ngữ Haskell. Nếu project bạn không phải là Hashkell, bạn vẫn có thể sử dụng bằng cách gửi request HTTP đến server ở trên.

Mình có deploy một server Duckling tại địa chỉ sau để mọi người tiện test nhanh: https://duyet-duckling-bkykfkyksj.now.sh

Supported dimensions

Mình thấy rằng Duckling hỗ trợ nhiều ngôn ngữ và các dimension (tiếng Việt có ở một vài dimension). Bảng sau ví dụ các dimension mà Duckling hỗ trợ:

Dimension Example input Example value output
AmountOfMoney "42€" {"value":42,"type":"value","unit":"EUR"}
Distance "6 miles" {"value":6,"type":"value","unit":"mile"}
Duration "3 mins" {"value":3,"minute":3,"unit":"minute","normalized":{"value":180,"unit":"second"}}
Email "[email protected]" {"value":"[email protected]"}
Numeral "eighty eight" {"value":88,"type":"value"}
Ordinal "33rd" {"value":33,"type":"value"}
PhoneNumber "+1 (650) 123-4567" {"value":"(+1) 6501234567"}
Quantity "3 cups of sugar" {"value":3,"type":"value","product":"sugar","unit":"cup"}
Temperature "80F" {"value":80,"type":"value","unit":"fahrenheit"}
Time "today at 9am" {"values":[{"value":"2016-12-14T09:00:00.000-08:00","grain":"hour","type":"value"}],"value":"2016-12-14T09:00:00.000-08:00","grain":"hour","type":"value"}
Url "https://api.wit.ai/message?q=hi" {"value":"https://api.wit.ai/message?q=hi","domain":"api.wit.ai"}
Volume "4 gallons" {"value":4,"type":"value","unit":"gallon"}

Kết

Xem thêm các hướng dẫn và cách mở rộng Duckling tại trang Github của project nhé.