Skip to content

Commit 500bcd2

Browse files
authored
relax the rules for sr noun inflection (#177)
* relax the rules for sr noun inflection * Fix one noun * remove pos noun from tests
1 parent 5d2d21f commit 500bcd2

File tree

2 files changed

+36
-28
lines changed

2 files changed

+36
-28
lines changed

inflection/src/inflection/grammar/synthesis/SrGrammarSynthesizer_SrDisplayFunction.cpp

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -105,17 +105,25 @@ bool isProperNoun(const ::std::u16string &lemma);
105105

106106
::std::u16string SrGrammarSynthesizer_SrDisplayFunction::inflectWithRule(const ::std::map<::inflection::dialog::SemanticFeature, ::std::u16string>& constraints, const ::std::u16string& lemma) const
107107
{
108-
::std::u16string countString(GrammarSynthesizerUtil::getFeatureValue(constraints, numberFeature));
109-
::std::u16string caseString(GrammarSynthesizerUtil::getFeatureValue(constraints, caseFeature));
108+
auto countString = GrammarSynthesizerUtil::getFeatureValue(constraints, numberFeature);
109+
auto caseString = GrammarSynthesizerUtil::getFeatureValue(constraints, caseFeature);
110110
auto genderString = GrammarSynthesizerUtil::getFeatureValue(constraints, genderFeature);
111111

112112
::std::u16string inflection;
113113

114-
// If one of singular/plural, case and gender are not specified return lemma.
115-
if (countString.empty() || caseString.empty() || genderString.empty()) {
114+
if (caseString.empty()) {
116115
return lemma;
117116
}
118117

118+
// Set defaults for number and gender if missing.
119+
if (countString.empty()) {
120+
countString = GrammemeConstants::NUMBER_SINGULAR();
121+
}
122+
123+
if (genderString.empty()) {
124+
genderString = GrammemeConstants::GENDER_MASCULINE();
125+
}
126+
119127
// Do nothing for singular, nominative.
120128
if (countString == GrammemeConstants::NUMBER_SINGULAR() && caseString == GrammemeConstants::CASE_NOMINATIVE()) {
121129
return lemma;

inflection/test/resources/inflection/dialog/inflection/sr.xml

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -11,32 +11,32 @@
1111
<test><source case="nominative" number="singular">камен</source><result>камен</result></test>
1212
<test><source case="nominative" pos="proper-noun">Петар</source><result>Петар</result></test>
1313
<test><source case="vocative" number="singular" gender="feminine" pos="proper-noun">Љубица</source><result>Љубице</result></test>
14-
<test><source case="vocative" number="singular" gender="feminine" pos="noun">Србија</source><result>Србијо</result></test>
15-
<test><source case="instrumental" number="plural" gender="masculine" pos="noun">становник</source><result>становницима</result></test>
14+
<test><source case="vocative" number="singular" gender="feminine">Србија</source><result>Србијо</result></test>
15+
<test><source case="instrumental" number="plural" gender="masculine">становник</source><result>становницима</result></test>
1616
<test><source case="genitive" number="plural" gender="neuter" pos="adjective">плава</source><result>плавe</result></test>
1717
<!-- Words not in the dictionary but similar in shape -->
18-
<!-- test><source case="vocative" number="singular" gender="masculine" pos="noun">уранак</source><result>уранче</result></test -->
19-
<!-- test><source case="vocative" number="singular" gender="masculine" pos="noun">игроказ</source><result>игрокаже</result></test -->
20-
<!-- test><source case="vocative" number="singular" gender="masculine" pos="noun">пашњак</source><result>пашњаче</result></test -->
18+
<!-- test><source case="vocative" number="singular" gender="masculine">уранак</source><result>уранче</result></test -->
19+
<!-- test><source case="vocative" number="singular" gender="masculine">игроказ</source><result>игрокаже</result></test -->
20+
<!-- test><source case="vocative" number="singular" gender="masculine">пашњак</source><result>пашњаче</result></test -->
2121
<!-- Rule based inflection, group 3, all nouns ending with a -->
22-
<test><source case="instrumental" number="singular" gender="feminine" pos="noun">Италија</source><result>Италијом</result></test>
23-
<test><source case="instrumental" number="singular" gender="feminine" pos="noun">авенија</source><result>авенијом</result></test>
24-
<test><source case="locative" number="plural" gender="feminine" pos="noun">авенија</source><result>авенијама</result></test>
25-
<test><source case="vocative" number="singular" gender="masculine" pos="noun">кадија</source><result>кадија</result></test>
26-
<test><source case="vocative" number="singular" gender="feminine" pos="noun">уметница</source><result>уметнице</result></test>
27-
<test><source case="vocative" number="singular" gender="feminine" pos="noun">птица</source><result>птица</result></test>
28-
<test><source case="vocative" number="singular" gender="feminine" pos="noun">Стана</source><result>Стано</result></test>
29-
<test><source case="vocative" number="singular" gender="feminine" pos="noun">Зора</source><result>Зоро</result></test>
30-
<test><source case="vocative" number="singular" gender="masculine" pos="noun">Божа</source><result>Божо</result></test>
31-
<test><source case="vocative" number="singular" gender="masculine" pos="noun">Љуба</source><result>Љубо</result></test>
32-
<test><source case="genitive" number="plural" gender="feminine" pos="noun">пратња</source><result>пратњи</result></test>
33-
<test><source case="genitive" number="plural" gender="feminine" pos="noun">радња</source><result>радњи</result></test>
34-
<test><source case="genitive" number="plural" gender="feminine" pos="noun">лопта</source><result>лопти</result></test>
35-
<test><source case="genitive" number="plural" gender="feminine" pos="noun">молба</source><result>молби</result></test>
36-
<test><source case="genitive" number="plural" gender="feminine" pos="noun">конзерва</source><result>конзерви</result></test>
37-
<test><source case="genitive" number="plural" gender="feminine" pos="noun">гошћа</source><result>гошћа</result></test>
38-
<test><source case="genitive" number="plural" gender="feminine" pos="noun">двојка</source><result>двојака</result></test>
39-
<test><source case="genitive" number="plural" gender="feminine" pos="noun">битка</source><result>битака</result></test>
22+
<test><source case="instrumental">Италија</source><result>Италијом</result></test>
23+
<test><source case="instrumental">авенија</source><result>авенијом</result></test>
24+
<test><source case="locative" number="plural" gender="feminine">авенија</source><result>авенијама</result></test>
25+
<test><source case="vocative">кадија</source><result>кадија</result></test>
26+
<test><source case="vocative">уметница</source><result>уметнице</result></test>
27+
<test><source case="vocative">птица</source><result>птица</result></test>
28+
<test><source case="vocative">Стана</source><result>Стано</result></test>
29+
<test><source case="vocative">Зора</source><result>Зоро</result></test>
30+
<test><source case="vocative">Божа</source><result>Божо</result></test>
31+
<test><source case="vocative">Љуба</source><result>Љубо</result></test>
32+
<test><source case="genitive" number="plural">пратња</source><result>пратњи</result></test>
33+
<test><source case="genitive" number="plural">радња</source><result>радњи</result></test>
34+
<test><source case="genitive" number="plural">лопта</source><result>лопти</result></test>
35+
<test><source case="genitive" number="plural">молба</source><result>молби</result></test>
36+
<test><source case="genitive" number="plural">конзерва</source><result>конзерви</result></test>
37+
<test><source case="genitive" number="plural">гошћа</source><result>гошћа</result></test>
38+
<test><source case="genitive" number="plural">двојка</source><result>двојака</result></test>
39+
<test><source case="genitive" number="plural">битка</source><result>битака</result></test>
4040
<!-- There are some exception, like pripovetka where tk -> dak because of the base word. This has to be dictionary exception -->
41-
<!-- <test><source case="genitive" number="plural" gender="feminine" pos="noun">приповетка</source><result>приповедака</result></test> -->
41+
<!-- <test><source case="genitive" number="plural" gender="feminine">приповетка</source><result>приповедака</result></test> -->
4242
</inflectionTest>

0 commit comments

Comments
 (0)