added Distance for CZ language

Summary:
Added first Czech language file
Closes https://github.com/facebookincubator/duckling/pull/16

Reviewed By: niteria

Differential Revision: D5044499

Pulled By: patapizza

fbshipit-source-id: c736a35
This commit is contained in:
rfranek@email.cz 2017-05-12 08:05:32 -07:00 committed by Facebook Github Bot
parent 3b64603d81
commit 325fa69304
7 changed files with 160 additions and 4 deletions

View File

@ -14,5 +14,6 @@ import Duckling.Dimensions.Types
allDimensions :: [Some Dimension]
allDimensions =
[ This Numeral
[ This Distance
, This Numeral
]

View File

@ -0,0 +1,46 @@
-- Copyright (c) 2016-present, Facebook, Inc.
-- All rights reserved.
--
-- This source code is licensed under the BSD-style license found in the
-- LICENSE file in the root directory of this source tree. An additional grant
-- of patent rights can be found in the PATENTS file in the same directory.
{-# LANGUAGE OverloadedStrings #-}
module Duckling.Distance.CS.Corpus
( corpus ) where
import Data.String
import Prelude
import Duckling.Distance.Types
import Duckling.Lang
import Duckling.Resolve
import Duckling.Testing.Types
corpus :: Corpus
corpus = (testContext {lang = CS}, allExamples)
allExamples :: [Example]
allExamples = concat
[ examples (DistanceValue Kilometre 3)
[ "3 kilometry"
, "3 km"
, "3km"
, "3k"
]
, examples (DistanceValue Mile 8)
[ "8 mil"
, "osm mil"
]
, examples (DistanceValue Metre 9)
[ "9m"
, "9 metr"
, "9 metry"
]
, examples (DistanceValue Centimetre 2)
[ "2cm"
, "2 centimetry"
]
]

View File

@ -0,0 +1,81 @@
-- Copyright (c) 2016-present, Facebook, Inc.
-- All rights reserved.
--
-- This source code is licensed under the BSD-style license found in the
-- LICENSE file in the root directory of this source tree. An additional grant
-- of patent rights can be found in the PATENTS file in the same directory.
{-# LANGUAGE GADTs #-}
{-# LANGUAGE OverloadedStrings #-}
module Duckling.Distance.CS.Rules
( rules ) where
import Data.String
import Prelude
import Duckling.Dimensions.Types
import Duckling.Distance.Helpers
import Duckling.Types
import qualified Duckling.Distance.Types as TDistance
ruleLatentDistKm :: Rule
ruleLatentDistKm = Rule
{ name = "<latent dist> km"
, pattern =
[ dimension Distance
, regex "k(ilo)?m?(etr)?y?"
]
, prod = \tokens -> case tokens of
(Token Distance dd:_) ->
Just . Token Distance $ withUnit TDistance.Kilometre dd
_ -> Nothing
}
ruleDistMeters :: Rule
ruleDistMeters = Rule
{ name = "<dist> meters"
, pattern =
[ dimension Distance
, regex "m(etry?)?"
]
, prod = \tokens -> case tokens of
(Token Distance dd:_) ->
Just . Token Distance $ withUnit TDistance.Metre dd
_ -> Nothing
}
ruleDistCentimeters :: Rule
ruleDistCentimeters = Rule
{ name = "<dist> centimeters"
, pattern =
[ dimension Distance
, regex "cm|centimetry?"
]
, prod = \tokens -> case tokens of
(Token Distance dd:_) ->
Just . Token Distance $ withUnit TDistance.Centimetre dd
_ -> Nothing
}
ruleDistMiles :: Rule
ruleDistMiles = Rule
{ name = "<dist> miles"
, pattern =
[ dimension Distance
, regex "mil"
]
, prod = \tokens -> case tokens of
(Token Distance dd:_) ->
Just . Token Distance $ withUnit TDistance.Mile dd
_ -> Nothing
}
rules :: [Rule]
rules =
[ ruleDistCentimeters
, ruleDistMeters
, ruleDistMiles
, ruleLatentDistKm
]

View File

@ -14,11 +14,12 @@ module Duckling.Rules.CS
) where
import Duckling.Dimensions.Types
import qualified Duckling.Numeral.CS.Rules as Numeral
import Duckling.Types
import qualified Duckling.Distance.CS.Rules as Distance
import qualified Duckling.Numeral.CS.Rules as Numeral
rules :: Some Dimension -> [Rule]
rules (This Distance) = []
rules (This Distance) = Distance.rules
rules (This Duration) = []
rules (This Numeral) = Numeral.rules
rules (This Email) = []

View File

@ -164,6 +164,8 @@ library
, Duckling.AmountOfMoney.Types
-- Distance
, Duckling.Distance.CS.Corpus
, Duckling.Distance.CS.Rules
, Duckling.Distance.EN.Corpus
, Duckling.Distance.EN.Rules
, Duckling.Distance.ES.Corpus
@ -540,6 +542,7 @@ test-suite duckling-test
, Duckling.AmountOfMoney.Tests
-- Distance
, Duckling.Distance.CS.Tests
, Duckling.Distance.EN.Tests
, Duckling.Distance.ES.Tests
, Duckling.Distance.FR.Tests

View File

@ -0,0 +1,22 @@
-- Copyright (c) 2016-present, Facebook, Inc.
-- All rights reserved.
--
-- This source code is licensed under the BSD-style license found in the
-- LICENSE file in the root directory of this source tree. An additional grant
-- of patent rights can be found in the PATENTS file in the same directory.
module Duckling.Distance.CS.Tests
( tests ) where
import Data.String
import Test.Tasty
import Duckling.Dimensions.Types
import Duckling.Distance.CS.Corpus
import Duckling.Testing.Asserts
tests :: TestTree
tests = testGroup "CS Tests"
[ makeCorpusTest [This Distance] corpus
]

View File

@ -12,6 +12,7 @@ import Prelude
import Data.String
import Test.Tasty
import qualified Duckling.Distance.CS.Tests as CS
import qualified Duckling.Distance.EN.Tests as EN
import qualified Duckling.Distance.ES.Tests as ES
import qualified Duckling.Distance.FR.Tests as FR
@ -24,7 +25,8 @@ import qualified Duckling.Distance.RO.Tests as RO
tests :: TestTree
tests = testGroup "Distance Tests"
[ EN.tests
[ CS.tests
, EN.tests
, ES.tests
, FR.tests
, GA.tests