Added Temperature support for Hindi (HI) language (#206)

Summary:
This PR adds Temperature dimension support for Hindi (HI). Let me know if there are any changes to be made :)

Cheers!
Closes https://github.com/facebook/duckling/pull/206

Reviewed By: haoxuany

Differential Revision: D8381472

Pulled By: patapizza

fbshipit-source-id: a085ba73910a80a51385f01475d9ba75f72fd4c5
This commit is contained in:
Anshuman Chhabra 2018-06-13 16:51:23 -07:00 committed by Facebook Github Bot
parent c7bef34bc2
commit 5ab49060e1
7 changed files with 136 additions and 1 deletions

View File

@ -17,4 +17,5 @@ allDimensions =
[ This Duration
, This Numeral
, This Ordinal
, This Temperature
]

View File

@ -21,6 +21,7 @@ import qualified Duckling.Numeral.HI.Rules as Numeral
import qualified Duckling.Ordinal.HI.Rules as Ordinal
import qualified Duckling.Duration.HI.Rules as Duration
import qualified Duckling.TimeGrain.HI.Rules as TimeGrain
import qualified Duckling.Temperature.HI.Rules as Temperature
defaultRules :: Some Dimension -> [Rule]
defaultRules = langRules
@ -39,7 +40,7 @@ langRules (This Ordinal) = Ordinal.rules
langRules (This PhoneNumber) = []
langRules (This Quantity) = []
langRules (This RegexMatch) = []
langRules (This Temperature) = []
langRules (This Temperature) = Temperature.rules
langRules (This Time) = []
langRules (This TimeGrain) = TimeGrain.rules
langRules (This Url) = []

View File

@ -0,0 +1,43 @@
-- 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.Temperature.HI.Corpus
( corpus
) where
import Data.String
import Prelude
import Duckling.Locale
import Duckling.Resolve
import Duckling.Temperature.Types
import Duckling.Testing.Types
context :: Context
context = testContext {locale = makeLocale HI Nothing}
corpus :: Corpus
corpus = (context, testOptions, allExamples)
allExamples :: [Example]
allExamples = concat
[ examples (simple Celsius 37)
[ "37 डिग्री सेल्सीयस"
, "37 ° सेल्सीयस"
]
, examples (simple Fahrenheit 71)
[ "71 डिग्री फारेनहाइट"
, "71 ° फारेनहाइट"
]
, examples (simple Degree 45)
[ "45 डिग्री"
, "45 °"
]
]

View File

@ -0,0 +1,61 @@
-- 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 LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
module Duckling.Temperature.HI.Rules
( rules
) where
import Data.String
import Prelude
import qualified Data.Text as Text
import Duckling.Dimensions.Types
import Duckling.Regex.Types
import Duckling.Temperature.Helpers
import Duckling.Types
import qualified Duckling.Temperature.Types as TTemperature
ruleLatentTempDegrees :: Rule
ruleLatentTempDegrees = Rule
{ name = "<latent temp> degrees"
, pattern =
[ Predicate $ isValueOnly False
, regex "डिग्री|°"
]
, prod = \case
(Token Temperature td:_) -> Just . Token Temperature $
withUnit TTemperature.Degree td
_ -> Nothing
}
ruleTempSpecific :: Rule
ruleTempSpecific = Rule
{ name = "<temp> Fahrenheit|Celsius"
, pattern =
[ Predicate $ isValueOnly True
, regex "(सेल्सीयस|फारेनहाइट)"
]
, prod = \case
(Token Temperature td:Token RegexMatch (GroupMatch (match:_)):_) ->
case Text.toLower match of
"सेल्सीयस" -> Just . Token Temperature $ withUnit TTemperature.Celsius td
"फारेनहाइट" -> Just . Token Temperature $ withUnit TTemperature.Fahrenheit td
_ -> Nothing
_ -> Nothing
}
rules :: [Rule]
rules =
[ ruleLatentTempDegrees
, ruleTempSpecific
]

View File

@ -498,6 +498,8 @@ library
, Duckling.Temperature.FR.Rules
, Duckling.Temperature.GA.Corpus
, Duckling.Temperature.GA.Rules
, Duckling.Temperature.HI.Corpus
, Duckling.Temperature.HI.Rules
, Duckling.Temperature.HR.Corpus
, Duckling.Temperature.HR.Rules
, Duckling.Temperature.IT.Corpus
@ -867,6 +869,7 @@ test-suite duckling-test
, Duckling.Temperature.ES.Tests
, Duckling.Temperature.FR.Tests
, Duckling.Temperature.GA.Tests
, Duckling.Temperature.HI.Tests
, Duckling.Temperature.HR.Tests
, Duckling.Temperature.IT.Tests
, Duckling.Temperature.JA.Tests

View File

@ -0,0 +1,24 @@
-- 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.Temperature.HI.Tests
( tests
) where
import Data.String
import Prelude
import Test.Tasty
import Duckling.Dimensions.Types
import Duckling.Temperature.HI.Corpus
import Duckling.Testing.Asserts
tests :: TestTree
tests = testGroup "HI Tests"
[ makeCorpusTest [This Temperature] corpus
]

View File

@ -17,6 +17,7 @@ import qualified Duckling.Temperature.EN.Tests as EN
import qualified Duckling.Temperature.ES.Tests as ES
import qualified Duckling.Temperature.FR.Tests as FR
import qualified Duckling.Temperature.GA.Tests as GA
import qualified Duckling.Temperature.HI.Tests as HI
import qualified Duckling.Temperature.HR.Tests as HR
import qualified Duckling.Temperature.IT.Tests as IT
import qualified Duckling.Temperature.JA.Tests as JA
@ -33,6 +34,7 @@ tests = testGroup "Temperature Tests"
, ES.tests
, FR.tests
, GA.tests
, HI.tests
, HR.tests
, IT.tests
, JA.tests