#Duckling ってなに?
Ducklingとは、もともとClojureだったProjectがHaskellに移行し、Facebookの一部のプロジェクトが使用しているオープンソース自然言語テキスト分析の事です。
#Duclkingの名前の由来は?
Ducklingは、もともと“Picsou”と呼ばれていました。“Picsou”はフランス版のドナルドダックのことで、なんでも食べてしまうところから名付けられました。後に英語のコミュニティに親しみやすくするため、ドナルドダックの“duck”と言語学(linguistic)のlingを取って“Duckling”と改名することにしました。
#Duckling で何が出来るのか?
以下の情報を、自然言語のテキストから抽出出来ます。
- 金額
- クレジットカード番号
- 単位
- 距離
- 時間間隔
- メールアドレス
- 数字
- 順序
- 電話番号
- 数量
- 気温
- 時刻
- URL
- 体積
#Ducklingのここがすごい!
抽出した情報の中に、誤字が多少混ざっていても上手に拾ってくれます。
以下サイトで試せます。
https://duckling.wit.ai/#faq
#それでは実際に試してみましょう!
ここでは、Haskell環境構築は割愛させていただきます。
home brewを使うなり、cabalなりstackを使うなりご自由にどうぞ。
以下は、あと2分で会議がはじまるよー
あと2分で行くよー 等の文から抽出した例です。
$ stack repl --no-load
> :l Duckling.Debug
> debug (makeLocale EN $ Just US) "in two minutes" [This Time]
in|within|after <duration> (in two minutes)
-- regex (in)
-- <integer> <unit-of-duration> (two minutes)
-- -- integer (0..19) (two)
-- -- -- regex (two)
-- -- minute (grain) (minutes)
-- -- -- regex (minutes)
[Entity {dim = "time", body = "in two minutes", value = RVal Time (TimeValue (SimpleValue (InstantValue {vValue = 2013-02-12 04:32:00 -0200, vGrain = Second})) [SimpleValue (InstantValue {vValue = 2013-02-12 04:32:00 -0200, vGrain = Second})] Nothing), start = 0, end = 14}]
2分後がちゃんと抽出できました。
もっと便利な機能がありますので、機会があり次第アップデート、あるいは別記事で書きたいと思います。
以上
ありがとうございました。(•ө•) (•ө•) (•ө•)
Thanks
Mr, Julien Odent