mirror of
https://github.com/facebook/duckling.git
synced 2024-09-11 21:27:13 +03:00
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:
parent
c7bef34bc2
commit
5ab49060e1
@ -17,4 +17,5 @@ allDimensions =
|
||||
[ This Duration
|
||||
, This Numeral
|
||||
, This Ordinal
|
||||
, This Temperature
|
||||
]
|
||||
|
@ -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) = []
|
||||
|
43
Duckling/Temperature/HI/Corpus.hs
Normal file
43
Duckling/Temperature/HI/Corpus.hs
Normal 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 °"
|
||||
]
|
||||
]
|
61
Duckling/Temperature/HI/Rules.hs
Normal file
61
Duckling/Temperature/HI/Rules.hs
Normal 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
|
||||
]
|
@ -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
|
||||
|
24
tests/Duckling/Temperature/HI/Tests.hs
Normal file
24
tests/Duckling/Temperature/HI/Tests.hs
Normal 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
|
||||
]
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user