LoginSignup
11
4

More than 5 years have passed since last update.

Duckling (•ө•) を使って時間、日付抽出をしてみた!

Last updated at Posted at 2018-12-23

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

11
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
4