mirror of
https://github.com/facebook/duckling.git
synced 2024-09-11 21:27:13 +03:00
Added IT Rules and Corpus for Distance
Summary: Pull Request resolved: https://github.com/facebook/duckling/pull/307 Reviewed By: girifb Differential Revision: D13606124 Pulled By: patapizza fbshipit-source-id: 5c8718d4d7dea818d8d70117c2b0d799796ab33c
This commit is contained in:
parent
392e584d1b
commit
33b9d20a7a
@ -14,7 +14,8 @@ import Duckling.Dimensions.Types
|
||||
|
||||
allDimensions :: [Some Dimension]
|
||||
allDimensions =
|
||||
[ This Duration
|
||||
[ This Distance
|
||||
, This Duration
|
||||
, This Numeral
|
||||
, This Ordinal
|
||||
, This Temperature
|
||||
|
51
Duckling/Distance/IT/Corpus.hs
Normal file
51
Duckling/Distance/IT/Corpus.hs
Normal file
@ -0,0 +1,51 @@
|
||||
-- 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.IT.Corpus
|
||||
( corpus
|
||||
) where
|
||||
|
||||
import Data.String
|
||||
import Prelude
|
||||
|
||||
import Duckling.Distance.Types
|
||||
import Duckling.Locale
|
||||
import Duckling.Resolve
|
||||
import Duckling.Testing.Types
|
||||
|
||||
context :: Context
|
||||
context = testContext {locale = makeLocale IT Nothing}
|
||||
|
||||
corpus :: Corpus
|
||||
corpus = (context, testOptions, allExamples)
|
||||
|
||||
allExamples :: [Example]
|
||||
allExamples = concat
|
||||
[ examples (simple Kilometre 3)
|
||||
[ "3 kilometri"
|
||||
, "3 chilometri"
|
||||
, "3 km"
|
||||
, "3km"
|
||||
]
|
||||
, examples (simple Kilometre 3.0)
|
||||
[ "3,0 km"
|
||||
]
|
||||
, examples (simple Mile 8)
|
||||
[ "8 miglia"
|
||||
]
|
||||
, examples (simple Metre 9)
|
||||
[ "9 metri"
|
||||
, "9m"
|
||||
]
|
||||
, examples (simple Centimetre 2)
|
||||
[ "2cm"
|
||||
, "2 centimetri"
|
||||
]
|
||||
]
|
82
Duckling/Distance/IT/Rules.hs
Normal file
82
Duckling/Distance/IT/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.IT.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 "km|(k|ch)(ilo)?m?(etr)o?i?"
|
||||
]
|
||||
, 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 "metro?i?|m"
|
||||
]
|
||||
, 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|centimetro?i?"
|
||||
]
|
||||
, 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 "miglio?a?"
|
||||
]
|
||||
, prod = \tokens -> case tokens of
|
||||
(Token Distance dd:_) ->
|
||||
Just . Token Distance $ withUnit TDistance.Mile dd
|
||||
_ -> Nothing
|
||||
}
|
||||
|
||||
rules :: [Rule]
|
||||
rules =
|
||||
[ ruleDistCentimeters
|
||||
, ruleDistMeters
|
||||
, ruleDistMiles
|
||||
, ruleLatentDistKm
|
||||
]
|
@ -320,10 +320,10 @@ classifiers
|
||||
unseen = -4.31748811353631,
|
||||
likelihoods =
|
||||
HashMap.fromList
|
||||
[("<integer> (latent time-of-day)", -0.9718605830289658),
|
||||
[("<integer> (latent time-of-day)", -0.9718605830289657),
|
||||
("intersect by \"di\", \"della\", \"del\"", -3.20545280453606),
|
||||
("day", -2.3581549441488563), ("Lunedi", -3.6109179126442243),
|
||||
("hour", -0.9718605830289658),
|
||||
("hour", -0.9718605830289657),
|
||||
("two time tokens separated by `di`", -3.20545280453606),
|
||||
("Domenica", -3.6109179126442243)],
|
||||
n = 33}}),
|
||||
|
@ -19,6 +19,7 @@ import Duckling.Dimensions.Types
|
||||
import Duckling.Locale
|
||||
import Duckling.Types
|
||||
import qualified Duckling.AmountOfMoney.IT.Rules as AmountOfMoney
|
||||
import qualified Duckling.Distance.IT.Rules as Distance
|
||||
import qualified Duckling.Duration.IT.Rules as Duration
|
||||
import qualified Duckling.Email.IT.Rules as Email
|
||||
import qualified Duckling.Numeral.IT.Rules as Numeral
|
||||
@ -38,7 +39,7 @@ localeRules _ _ = []
|
||||
langRules :: Some Dimension -> [Rule]
|
||||
langRules (This AmountOfMoney) = AmountOfMoney.rules
|
||||
langRules (This CreditCardNumber) = []
|
||||
langRules (This Distance) = []
|
||||
langRules (This Distance) = Distance.rules
|
||||
langRules (This Duration) = Duration.rules
|
||||
langRules (This Email) = Email.rules
|
||||
langRules (This Numeral) = Numeral.rules
|
||||
|
@ -281,6 +281,8 @@ library
|
||||
, Duckling.Distance.GA.Rules
|
||||
, Duckling.Distance.HR.Corpus
|
||||
, Duckling.Distance.HR.Rules
|
||||
, Duckling.Distance.IT.Corpus
|
||||
, Duckling.Distance.IT.Rules
|
||||
, Duckling.Distance.KM.Corpus
|
||||
, Duckling.Distance.KM.Rules
|
||||
, Duckling.Distance.KO.Corpus
|
||||
|
23
tests/Duckling/Distance/IT/Tests.hs
Normal file
23
tests/Duckling/Distance/IT/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.IT.Tests
|
||||
( tests
|
||||
) where
|
||||
|
||||
import Data.String
|
||||
import Test.Tasty
|
||||
|
||||
import Duckling.Dimensions.Types
|
||||
import Duckling.Distance.IT.Corpus
|
||||
import Duckling.Testing.Asserts
|
||||
|
||||
tests :: TestTree
|
||||
tests = testGroup "IT Tests"
|
||||
[ makeCorpusTest [This Distance] corpus
|
||||
]
|
@ -21,6 +21,7 @@ import qualified Duckling.Distance.ES.Tests as ES
|
||||
import qualified Duckling.Distance.FR.Tests as FR
|
||||
import qualified Duckling.Distance.GA.Tests as GA
|
||||
import qualified Duckling.Distance.HR.Tests as HR
|
||||
import qualified Duckling.Distance.IT.Tests as IT
|
||||
import qualified Duckling.Distance.KM.Tests as KM
|
||||
import qualified Duckling.Distance.KO.Tests as KO
|
||||
import qualified Duckling.Distance.MN.Tests as MN
|
||||
@ -41,6 +42,7 @@ tests = testGroup "Distance Tests"
|
||||
, FR.tests
|
||||
, GA.tests
|
||||
, HR.tests
|
||||
, IT.tests
|
||||
, KM.tests
|
||||
, KO.tests
|
||||
, MN.tests
|
||||
|
Loading…
Reference in New Issue
Block a user