mirror of
https://github.com/facebook/duckling.git
synced 2024-09-11 21:27:13 +03:00
add distance to SV
Summary: Closes https://github.com/facebook/duckling/pull/168 Reviewed By: chinmay87 Differential Revision: D7322559 Pulled By: patapizza fbshipit-source-id: 3d4b86068c05a7a82442bc7c182b80b5cf75ec90
This commit is contained in:
parent
6d7d0ba354
commit
f70b4ebe07
@ -9,10 +9,11 @@
|
||||
{-# LANGUAGE OverloadedStrings #-}
|
||||
|
||||
module Duckling.Distance.EN.Corpus
|
||||
( corpus ) where
|
||||
( corpus
|
||||
) where
|
||||
|
||||
import Prelude
|
||||
import Data.String
|
||||
import Prelude
|
||||
|
||||
import Duckling.Distance.Types
|
||||
import Duckling.Testing.Types
|
||||
|
48
Duckling/Distance/SV/Corpus.hs
Normal file
48
Duckling/Distance/SV/Corpus.hs
Normal file
@ -0,0 +1,48 @@
|
||||
-- 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.SV.Corpus
|
||||
( corpus
|
||||
) where
|
||||
|
||||
import Data.String
|
||||
import Prelude
|
||||
|
||||
import Duckling.Distance.Types
|
||||
import Duckling.Locale
|
||||
import Duckling.Resolve
|
||||
import Duckling.Testing.Types
|
||||
|
||||
corpus :: Corpus
|
||||
corpus = (testContext {locale = makeLocale SV Nothing}, testOptions, allExamples)
|
||||
|
||||
allExamples :: [Example]
|
||||
allExamples = concat
|
||||
[ examples (simple Kilometre 3)
|
||||
[ "3 kilometer"
|
||||
, "3 km"
|
||||
, "3km"
|
||||
, "3k"
|
||||
, "3 mil"
|
||||
, "tre mil"
|
||||
, "några få mil"
|
||||
]
|
||||
, examples (simple Kilometre 3.0)
|
||||
[ "3,0 km"
|
||||
]
|
||||
, examples (simple Metre 9)
|
||||
[ "9 meter"
|
||||
, "9m"
|
||||
]
|
||||
, examples (simple Centimetre 2)
|
||||
[ "2cm"
|
||||
, "2 centimeter"
|
||||
]
|
||||
]
|
82
Duckling/Distance/SV/Rules.hs
Normal file
82
Duckling/Distance/SV/Rules.hs
Normal file
@ -0,0 +1,82 @@
|
||||
-- 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.SV.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?(eter)?"
|
||||
]
|
||||
, prod = \tokens -> case tokens of
|
||||
(Token Distance dd:_) ->
|
||||
Just . Token Distance $ withUnit TDistance.Kilometre dd
|
||||
_ -> Nothing
|
||||
}
|
||||
|
||||
ruleDistMeters :: Rule
|
||||
ruleDistMeters = Rule
|
||||
{ name = "<dist> meter"
|
||||
, pattern =
|
||||
[ dimension Distance
|
||||
, regex "m(eter)?"
|
||||
]
|
||||
, 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|centimeter"
|
||||
]
|
||||
, prod = \tokens -> case tokens of
|
||||
(Token Distance dd:_) ->
|
||||
Just . Token Distance $ withUnit TDistance.Centimetre dd
|
||||
_ -> Nothing
|
||||
}
|
||||
|
||||
ruleDistMils :: Rule
|
||||
ruleDistMils = Rule
|
||||
{ name = "<dist> mils"
|
||||
, pattern =
|
||||
[ dimension Distance
|
||||
, regex "mils?"
|
||||
]
|
||||
, prod = \tokens -> case tokens of
|
||||
(Token Distance dd:_) ->
|
||||
Just . Token Distance $ withUnit TDistance.Kilometre dd
|
||||
_ -> Nothing
|
||||
}
|
||||
|
||||
rules :: [Rule]
|
||||
rules =
|
||||
[ ruleDistCentimeters
|
||||
, ruleDistMeters
|
||||
, ruleDistMils
|
||||
, ruleLatentDistKm
|
||||
]
|
@ -20,6 +20,7 @@ import Duckling.Locale
|
||||
import Duckling.Types
|
||||
import qualified Duckling.AmountOfMoney.SV.Rules as AmountOfMoney
|
||||
import qualified Duckling.Duration.SV.Rules as Duration
|
||||
import qualified Duckling.Distance.SV.Rules as Distance
|
||||
import qualified Duckling.Ordinal.SV.Rules as Ordinal
|
||||
import qualified Duckling.Numeral.SV.Rules as Numeral
|
||||
import qualified Duckling.Time.SV.Rules as Time
|
||||
@ -33,7 +34,7 @@ localeRules _ _ = []
|
||||
|
||||
langRules :: Some Dimension -> [Rule]
|
||||
langRules (This AmountOfMoney) = AmountOfMoney.rules
|
||||
langRules (This Distance) = []
|
||||
langRules (This Distance) = Distance.rules
|
||||
langRules (This Duration) = Duration.rules
|
||||
langRules (This Email) = []
|
||||
langRules (This Numeral) = Numeral.rules
|
||||
|
@ -225,6 +225,8 @@ library
|
||||
, Duckling.Distance.RU.Rules
|
||||
, Duckling.Distance.TR.Corpus
|
||||
, Duckling.Distance.TR.Rules
|
||||
, Duckling.Distance.SV.Corpus
|
||||
, Duckling.Distance.SV.Rules
|
||||
, Duckling.Distance.Helpers
|
||||
, Duckling.Distance.Rules
|
||||
, Duckling.Distance.Types
|
||||
@ -699,6 +701,7 @@ test-suite duckling-test
|
||||
, Duckling.Distance.RO.Tests
|
||||
, Duckling.Distance.RU.Tests
|
||||
, Duckling.Distance.TR.Tests
|
||||
, Duckling.Distance.SV.Tests
|
||||
, Duckling.Distance.Tests
|
||||
|
||||
-- Duration
|
||||
|
23
tests/Duckling/Distance/SV/Tests.hs
Normal file
23
tests/Duckling/Distance/SV/Tests.hs
Normal file
@ -0,0 +1,23 @@
|
||||
-- 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.SV.Tests
|
||||
( tests
|
||||
) where
|
||||
|
||||
import Data.String
|
||||
import Test.Tasty
|
||||
|
||||
import Duckling.Dimensions.Types
|
||||
import Duckling.Distance.SV.Corpus
|
||||
import Duckling.Testing.Asserts
|
||||
|
||||
tests :: TestTree
|
||||
tests = testGroup "SV Tests"
|
||||
[ makeCorpusTest [This Distance] corpus
|
||||
]
|
@ -28,6 +28,7 @@ import qualified Duckling.Distance.PT.Tests as PT
|
||||
import qualified Duckling.Distance.RO.Tests as RO
|
||||
import qualified Duckling.Distance.RU.Tests as RU
|
||||
import qualified Duckling.Distance.TR.Tests as TR
|
||||
import qualified Duckling.Distance.SV.Tests as SV
|
||||
|
||||
tests :: TestTree
|
||||
tests = testGroup "Distance Tests"
|
||||
@ -44,4 +45,5 @@ tests = testGroup "Distance Tests"
|
||||
, RO.tests
|
||||
, RU.tests
|
||||
, TR.tests
|
||||
, SV.tests
|
||||
]
|
||||
|
Loading…
Reference in New Issue
Block a user