Skip to content

Commit

Permalink
NLU-3857 - Arabic Time: am and pm bug (#101)
Browse files Browse the repository at this point in the history
* Fix for TimeRegex4 and 7

* Fix for issue 1 and 3

* Update timex

* Added test case for 2nd failure and fixed it

* Update versions

* Updated to release version
  • Loading branch information
Conor-Keaney committed Oct 25, 2023
1 parent 67897d2 commit 3bafc20
Show file tree
Hide file tree
Showing 12 changed files with 120 additions and 21 deletions.
6 changes: 3 additions & 3 deletions Patterns/Arabic/Arabic-DateTime.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ OclockRegex: !simpleRegex
SpecialDescRegex: !simpleRegex
def: ((?<ipm>)p\b)
AmDescRegex: !nestedRegex
def: (في\s)?(صباح(ا)?|صباحًا|الصباح|{BaseDateTime.BaseAmDescRegex})
def: (في\s)?(صباح(ا)?|صباحًا|ص|الصباح|{BaseDateTime.BaseAmDescRegex})
references: [BaseDateTime.BaseAmDescRegex]
PmDescRegex: !nestedRegex
def: (في\s)?((ال)?مساء|مساءً|ليلًا|ليلا|(ال)?ليل(ة)?|بعد الظهر|الظهر|ظهرا|{BaseDateTime.BasePmDescRegex})
Expand All @@ -90,7 +90,7 @@ AmPmDescRegex: !nestedRegex
def: (في\s)?(صباح(ا)?|صباحًا|الصباح|(ال)?مساء|مساءً|{BaseDateTime.BaseAmPmDescRegex})
references: [BaseDateTime.BaseAmPmDescRegex]
DescRegex: !nestedRegex
def: (:?(:?({OclockRegex}\s+)?(?<desc>({AmPmDescRegex}|{AmDescRegex}|{PmDescRegex}|{SpecialDescRegex})))|{OclockRegex})
def: (?:(?:({OclockRegex}\s+)?(?<desc>({AmPmDescRegex}|{AmDescRegex}|{PmDescRegex}|{SpecialDescRegex})))|{OclockRegex})
references: [ OclockRegex, AmDescRegex, PmDescRegex, AmPmDescRegex, SpecialDescRegex ]
OfPrepositionRegex: !simpleRegex
def: (\bof\b)
Expand Down Expand Up @@ -453,7 +453,7 @@ TimeRegex3: !nestedRegex
def: (\b{TimePrefix}\s+)?{BaseDateTime.HourRegex}\.{BaseDateTime.MinuteRegex}(\s*{DescRegex})
references: [ TimePrefix, BaseDateTime.HourRegex, BaseDateTime.MinuteRegex, DescRegex ]
TimeRegex4: !nestedRegex
def: \b({TimePrefix}\s+)?{BasicTime}(\s*{DescRegex})?\s+{TimeSuffix}(\s*{DescRegex})?\b
def: \b({TimePrefix}\s+)?{BasicTime}(\s*{DescRegex})?(\s+{TimeSuffix})?(\s*{DescRegex})?\b
references: [ TimePrefix, BasicTime, DescRegex, TimeSuffix ]
TimeRegex5: !nestedRegex
def: \b({DescRegex}\s)?{BasicTime}((\s*{DescRegex})((\s+{TimePrefix})?)|(\s+{TimePrefix}(\s+{TimePrefix})?))(\s{DescRegex})?
Expand Down
2 changes: 1 addition & 1 deletion Python/libraries/datatypes-timex-expression/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ def read(fname):


NAME = 'datatypes_timex_expression_genesys'
VERSION = '1.0.71'
VERSION = '1.0.72'
REQUIRES = []

setup(
Expand Down
2 changes: 1 addition & 1 deletion Python/libraries/recognizers-choice/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ def read(fname):


NAME = 'recognizers-text-choice-genesys'
VERSION = '1.0.71'
VERSION = '1.0.72'
REQUIRES = ['recognizers-text-genesys', 'regex', 'grapheme']

setup(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,10 @@ class ArabicDateTime:
FullTextYearRegex = f'(?<firsttwoyearnum>{CenturyRegex})\\s*(?<lasttwoyearnum>{LastTwoYearNumRegex})|(?<firsttwoyearnum>{WrittenCenturyFullYearRegex})|{WrittenCenturyOrdinalYearRegex}'
OclockRegex = f'(?<oclock>(ال)?ساعة|(ال)?ساعات)'
SpecialDescRegex = f'((?<ipm>)p\\b)'
AmDescRegex = f'(في\\s)?(صباح(ا)?|صباحًا|الصباح|{BaseDateTime.BaseAmDescRegex})'
AmDescRegex = f'(في\\s)?(صباح(ا)?|صباحًا|ص|الصباح|{BaseDateTime.BaseAmDescRegex})'
PmDescRegex = f'(في\\s)?((ال)?مساء|مساءً|ليلًا|ليلا|(ال)?ليل(ة)?|بعد الظهر|الظهر|ظهرا|{BaseDateTime.BasePmDescRegex})'
AmPmDescRegex = f'({BaseDateTime.BaseAmPmDescRegex})'
DescRegex = f'(:?(:?({OclockRegex}\\s+)?(?<desc>({AmPmDescRegex}|{AmDescRegex}|{PmDescRegex}|{SpecialDescRegex})))|{OclockRegex})'
DescRegex = f'(?:(?:({OclockRegex}\\s+)?(?<desc>({AmPmDescRegex}|{AmDescRegex}|{PmDescRegex}|{SpecialDescRegex})|{OclockRegex})))'
OfPrepositionRegex = f'(\\bof\\b)'
TwoDigitYearRegex = f'\\b(?<![$])(?<year>([0-9]\\d))(?!(\\s*((\\:\\d)|{AmDescRegex}|{PmDescRegex}|\\.\\d)))\\b'
YearRegex = f'(?:{BaseDateTime.FourDigitYearRegex}|{FullTextYearRegex})'
Expand Down Expand Up @@ -177,7 +177,7 @@ class ArabicDateTime:
TimeRegex1 = f'\\b({TimePrefix}\\s+)?({WrittenTimeRegex}(\\s{TimePrefix})?|{HourNumRegex}|{BaseDateTime.HourRegex})(\\s*|[.]){DescRegex}'
TimeRegex2 = f'(\\b{TimePrefix}\\s+)?(t)?{BaseDateTime.HourRegex}(\\s*)?:(\\s*)?{BaseDateTime.MinuteRegex}((\\s*)?:(\\s*)?{BaseDateTime.SecondRegex})?(?<iam>a)?((\\s*{DescRegex})|\\b)'
TimeRegex3 = f'(\\b{TimePrefix}\\s+)?{BaseDateTime.HourRegex}\\.{BaseDateTime.MinuteRegex}(\\s*{DescRegex})'
TimeRegex4 = f'\\b({TimePrefix}\\s+)?{BasicTime}(\\s*{DescRegex})?\\s+{TimeSuffix}(\\s*{DescRegex})?\\b'
TimeRegex4 = f'\\b({TimePrefix}\\s+)?{BasicTime}(\\s*{DescRegex})?(\\s+{TimeSuffix})?(\\s*{DescRegex})?\\b'
TimeRegex5 = f'\\b({DescRegex}\\s)?{BasicTime}((\\s*{DescRegex})((\\s+{TimePrefix})?)|(\\s+{TimePrefix}(\\s+{TimePrefix})?))(\\s{DescRegex})?'
TimeRegex6 = f'{BasicTime}(\\s*{DescRegex})?\\s+{TimeSuffix}\\b'
TimeRegex7 = f'\\b({DescRegex}\\s)?(وقت الغداء\\s)?{TimeSuffixFull}\\s+(في\\s+)?{BasicTime}(\\s{DescRegex})?(\\sوقت الغداء)?(\\s{TimePrefix})?((\\s*{DescRegex})|\\b)?'
Expand Down
2 changes: 1 addition & 1 deletion Python/libraries/recognizers-date-time/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ def read(fname):


NAME = 'recognizers-text-date-time-genesys'
VERSION = '1.0.71'
VERSION = '1.0.72'
REQUIRES = ['recognizers-text-genesys', 'recognizers-text-number-genesys',
'recognizers-text-number-with-unit-genesys', 'regex', 'datedelta', 'python-dateutil']

Expand Down
2 changes: 1 addition & 1 deletion Python/libraries/recognizers-number-with-unit/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ def read(fname):


NAME = "recognizers-text-number-with-unit-genesys"
VERSION = "1.0.71"
VERSION = "1.0.72"
REQUIRES = ['recognizers-text-genesys', 'recognizers-text-number-genesys', 'regex']

setup(
Expand Down
2 changes: 1 addition & 1 deletion Python/libraries/recognizers-number/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ def read(fname):


NAME = "recognizers-text-number-genesys"
VERSION = "1.0.71"
VERSION = "1.0.72"
REQUIRES = ['recognizers-text-genesys', 'regex']

setup(
Expand Down
2 changes: 1 addition & 1 deletion Python/libraries/recognizers-sequence/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ def read(fname):


NAME = "recognizers-text-sequence-genesys"
VERSION = "1.0.71"
VERSION = "1.0.72"
REQUIRES = ['recognizers-text-genesys', 'recognizers-text-number-genesys', 'regex']

setup(
Expand Down
16 changes: 8 additions & 8 deletions Python/libraries/recognizers-suite/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,15 @@ def read(fname):


NAME = 'recognizers-text-suite-genesys'
VERSION = '1.0.71'
VERSION = '1.0.72'
REQUIRES = [
'recognizers-text-genesys==1.0.71',
'recognizers-text-number-genesys==1.0.71',
'recognizers-text-number-with-unit-genesys==1.0.71',
'recognizers-text-date-time-genesys==1.0.71',
'recognizers-text-sequence-genesys==1.0.71',
'recognizers-text-choice-genesys==1.0.71',
'datatypes_timex_expression_genesys==1.0.71'
'recognizers-text-genesys==1.0.72',
'recognizers-text-number-genesys==1.0.72',
'recognizers-text-number-with-unit-genesys==1.0.72',
'recognizers-text-date-time-genesys==1.0.72',
'recognizers-text-sequence-genesys==1.0.72',
'recognizers-text-choice-genesys==1.0.72',
'datatypes_timex_expression_genesys==1.0.72'
]

setup(
Expand Down
2 changes: 1 addition & 1 deletion Python/libraries/recognizers-text/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from setuptools import setup, find_packages

NAME = "recognizers-text-genesys"
VERSION = "1.0.71"
VERSION = "1.0.72"
REQUIRES = ['emoji==1.1.0', 'multipledispatch']

setup(
Expand Down
36 changes: 36 additions & 0 deletions Specs/DateTime/Arabic/TimeExtractor.json
Original file line number Diff line number Diff line change
Expand Up @@ -872,5 +872,41 @@
"Type": "time"
}
]
},
{
"Input": "نعم 4:25 مساءً من فضلك",
"NotSupportedByDesign": "java, javascript",
"Results": [
{
"Text": "4:25 مساءً",
"Start": 4,
"Length": 10,
"Type": "time"
}
]
},
{
"Input": "12:09 صباحًا",
"NotSupportedByDesign": "java, javascript",
"Results": [
{
"Text": "12:09 صباحًا",
"Start": 0,
"Length": 12,
"Type": "time"
}
]
},
{
"Input": "7:00 ص",
"NotSupportedByDesign": "java, javascript",
"Results": [
{
"Text": "7:00 ص",
"Start": 0,
"Length": 6,
"Type": "time"
}
]
}
]
63 changes: 63 additions & 0 deletions Specs/DateTime/Arabic/TimeParser.json
Original file line number Diff line number Diff line change
Expand Up @@ -1587,5 +1587,68 @@
}
}
]
},
{
"Input": "نعم 4:25 مساءً من فضلك",
"NotSupportedByDesign": "java, javascript",
"Results": [
{
"Text": "4:25 مساءً",
"Start": 4,
"Length": 10,
"Type": "time",
"Value": {
"Timex": "T16:25",
"FutureResolution": {
"time": "16:25:00"
},
"PastResolution": {
"time": "16:25:00"
}
}
}
]
},
{
"Input": "12:09 صباحًا",
"NotSupportedByDesign": "java, javascript",
"Results": [
{
"Text": "12:09 صباحًا",
"Start": 0,
"Length": 12,
"Type": "time",
"Value": {
"Timex": "T00:09",
"FutureResolution": {
"time": "00:09:00"
},
"PastResolution": {
"time": "00:09:00"
}
}
}
]
},
{
"Input": "7:00 ص",
"NotSupportedByDesign": "java, javascript",
"Results": [
{
"Text": "7:00 ص",
"Start": 0,
"Length": 6,
"Type": "time",
"Value": {
"Timex": "T07:00",
"FutureResolution": {
"time": "07:00:00"
},
"PastResolution": {
"time": "07:00:00"
}
}
}
]
}
]

0 comments on commit 3bafc20

Please sign in to comment.