def test_RootWordStatistics(self): fsm = FsmMorphologicalAnalyzer("../turkish_dictionary.txt", "../turkish_misspellings.txt", "../turkish_finite_state_machine.xml") rootWordStatistics = RootWordStatistics( "../penntreebank_statistics.txt") self.assertTrue(rootWordStatistics.containsKey("it$iti$itici")) self.assertTrue(rootWordStatistics.containsKey("yas$yasa$yasama")) self.assertTrue(rootWordStatistics.containsKey("tutuk$tutukla")) self.assertEqual( "çık", rootWordStatistics.bestRootWord(fsm.morphologicalAnalysis("çıkma"), 0.0)) self.assertEqual( "danışman", rootWordStatistics.bestRootWord( fsm.morphologicalAnalysis("danışman"), 0.0)) self.assertIsNone( rootWordStatistics.bestRootWord( fsm.morphologicalAnalysis("danışman"), 0.7)) self.assertEqual( "görüşme", rootWordStatistics.bestRootWord( fsm.morphologicalAnalysis("görüşme"), 0.0)) self.assertIsNone( rootWordStatistics.bestRootWord( fsm.morphologicalAnalysis("görüşme"), 0.7)) self.assertEqual( "anlaş", rootWordStatistics.bestRootWord( fsm.morphologicalAnalysis("anlaşma"), 0.0)) self.assertIsNone( rootWordStatistics.bestRootWord( fsm.morphologicalAnalysis("anlaşma"), 0.7))
def setUp(self) -> None: fsm = FsmMorphologicalAnalyzer("../turkish_dictionary.txt", "../turkish_misspellings.txt", "../turkish_finite_state_machine.xml") self.parse1 = fsm.morphologicalAnalysis("açılır") self.parse2 = fsm.morphologicalAnalysis("koparılarak") self.parse3 = fsm.morphologicalAnalysis("toplama") self.parse4 = fsm.morphologicalAnalysis("değerlendirmede") self.parse5 = fsm.morphologicalAnalysis("soruşturmasının") self.parse6 = fsm.morphologicalAnalysis("karşılaştırmalı") self.parse7 = fsm.morphologicalAnalysis("esaslarını") self.parse8 = fsm.morphologicalAnalysis("güçleriyle") self.parse9 = fsm.morphologicalAnalysis("bulmayacakları")
def test_Deasciify(self): fsm = FsmMorphologicalAnalyzer("../turkish_dictionary.txt", "../turkish_misspellings.txt", "../turkish_finite_state_machine.xml") nGram = NGram("../ngram.txt") nGram.calculateNGramProbabilitiesSimple(NoSmoothing()) nGramDeasciifier = NGramDeasciifier(fsm, nGram, True) simpleAsciifier = SimpleAsciifier() corpus = Corpus("../corpus.txt") for i in range(corpus.sentenceCount()): sentence = corpus.getSentence(i) for j in range(1, sentence.wordCount()): if fsm.morphologicalAnalysis(sentence.getWord(j).getName()).size() > 0: asciified = simpleAsciifier.asciifyWord(sentence.getWord(j)) if asciified != sentence.getWord(j).getName(): deasciified = nGramDeasciifier.deasciify(Sentence(sentence.getWord(j - 1).getName() + " " + sentence.getWord(j).getName())) self.assertEqual(sentence.getWord(j).getName(), deasciified.getWord(1).getName())
class FsmParseTest(unittest.TestCase): parse1: FsmParse parse2: FsmParse parse3: FsmParse parse4: FsmParse parse5: FsmParse parse6: FsmParse parse7: FsmParse parse8: FsmParse parse9: FsmParse parse10: FsmParse def setUp(self) -> None: self.fsm = FsmMorphologicalAnalyzer() self.parse1 = self.fsm.morphologicalAnalysis("açılır").getFsmParse(0) self.parse2 = self.fsm.morphologicalAnalysis( "koparılarak").getFsmParse(0) self.parse3 = self.fsm.morphologicalAnalysis("toplama").getFsmParse(0) self.parse4 = self.fsm.morphologicalAnalysis( "değerlendirmede").getFsmParse(0) self.parse5 = self.fsm.morphologicalAnalysis( "soruşturmasının").getFsmParse(0) self.parse6 = self.fsm.morphologicalAnalysis( "karşılaştırmalı").getFsmParse(0) self.parse7 = self.fsm.morphologicalAnalysis("esaslarını").getFsmParse( 0) self.parse8 = self.fsm.morphologicalAnalysis("güçleriyle").getFsmParse( 0) self.parse9 = self.fsm.morphologicalAnalysis( "bulmayacakları").getFsmParse(0) self.parse10 = self.fsm.morphologicalAnalysis("mü").getFsmParse(0) def test_GetLastLemmaWithTag(self): self.assertEqual("açıl", self.parse1.getLastLemmaWithTag("VERB")) self.assertEqual("koparıl", self.parse2.getLastLemmaWithTag("VERB")) self.assertEqual("değerlendir", self.parse4.getLastLemmaWithTag("VERB")) self.assertEqual("soruştur", self.parse5.getLastLemmaWithTag("VERB")) self.assertEqual("karşı", self.parse6.getLastLemmaWithTag("ADJ")) def test_GetLastLemma(self): self.assertEqual("açıl", self.parse1.getLastLemma()) self.assertEqual("koparılarak", self.parse2.getLastLemma()) self.assertEqual("değerlendirme", self.parse4.getLastLemma()) self.assertEqual("soruşturma", self.parse5.getLastLemma()) self.assertEqual("karşılaştır", self.parse6.getLastLemma()) def test_GetTransitionList(self): self.assertEqual("aç+VERB^DB+VERB+PASS+POS+AOR+A3SG", self.parse1.__str__()) self.assertEqual( "kop+VERB^DB+VERB+CAUS^DB+VERB+PASS+POS^DB+ADV+BYDOINGSO", self.parse2.__str__()) self.assertEqual("topla+NOUN+A3SG+P1SG+DAT", self.parse3.__str__()) self.assertEqual( "değer+NOUN+A3SG+PNON+NOM^DB+VERB+ACQUIRE^DB+VERB+CAUS+POS^DB+NOUN+INF2+A3SG+PNON+LOC", self.parse4.__str__()) self.assertEqual( "sor+VERB+RECIP^DB+VERB+CAUS+POS^DB+NOUN+INF2+A3SG+P3SG+GEN", self.parse5.__str__()) self.assertEqual( "karşı+ADJ^DB+VERB+BECOME^DB+VERB+CAUS+POS+NECES+A3SG", self.parse6.__str__()) self.assertEqual("esas+ADJ^DB+NOUN+ZERO+A3PL+P2SG+ACC", self.parse7.__str__()) self.assertEqual("güç+ADJ^DB+NOUN+ZERO+A3PL+P3PL+INS", self.parse8.__str__()) self.assertEqual("bul+VERB+NEG^DB+ADJ+FUTPART+P3PL", self.parse9.__str__()) self.assertEqual("mi+QUES+PRES+A3SG", self.parse10.__str__()) def test_WithList(self): self.assertEqual("aç+Hl+Hr", self.parse1.withList()) self.assertEqual("kop+Ar+Hl+yArAk", self.parse2.withList()) self.assertEqual("topla+Hm+yA", self.parse3.withList()) self.assertEqual("değer+lAn+DHr+mA+DA", self.parse4.withList()) self.assertEqual("sor+Hs+DHr+mA+sH+nHn", self.parse5.withList()) self.assertEqual("karşı+lAs+DHr+mAlH", self.parse6.withList()) self.assertEqual("esas+lAr+Hn+yH", self.parse7.withList()) self.assertEqual("güç+lArH+ylA", self.parse8.withList()) self.assertEqual("bul+mA+yAcAk+lArH", self.parse9.withList()) def test_SuffixList(self): self.assertEqual( "VerbalRoot(F5PR)(aç)+PassiveHl(açıl)+OtherTense2(açılır)", self.parse1.suffixList()) self.assertEqual( "VerbalRoot(F1P1)(kop)+CausativeAr(kopar)+PassiveHl(koparıl)+Adverb1(koparılarak)", self.parse2.suffixList()) self.assertEqual( "NominalRoot(topla)+Possessive(toplam)+Case1(toplama)", self.parse3.suffixList()) self.assertEqual( "NominalRoot(değer)+VerbalRoot(F5PR)(değerlen)+CausativeDHr(değerlendir)+NominalRoot(değerlendirme)+Case1(değerlendirmede)", self.parse4.suffixList()) self.assertEqual( "VerbalRoot(F5PR)(sor)+Reciprocal(soruş)+CausativeDHr(soruştur)+NominalRoot(soruşturma)+Possessive3(soruşturması)+Case1(soruşturmasının)", self.parse5.suffixList()) self.assertEqual( "AdjectiveRoot(karşı)+VerbalRoot(F5PR)(karşılaş)+CausativeDHr(karşılaştır)+OtherTense(karşılaştırmalı)", self.parse6.suffixList()) self.assertEqual( "AdjectiveRoot(esas)+Plural(esaslar)+Possessive(esasların)+AccusativeNoun(esaslarını)", self.parse7.suffixList()) self.assertEqual( "AdjectiveRoot(güç)+Possesive3(güçleri)+Case1(güçleriyle)", self.parse8.suffixList()) self.assertEqual( "VerbalRoot(F5PW)(bul)+Negativema(bulma)+AdjectiveParticiple(bulmayacak)+Adjective(bulmayacakları)", self.parse9.suffixList())
class TransitionTest(unittest.TestCase): fsm : FsmMorphologicalAnalyzer def setUp(self) -> None: self.fsm = FsmMorphologicalAnalyzer() def test_NumberWithAccusative(self): self.assertTrue(self.fsm.morphologicalAnalysis("2'yi").size() != 0) self.assertEqual(0, self.fsm.morphologicalAnalysis("2'i").size()) self.assertTrue(self.fsm.morphologicalAnalysis("5'i").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("9'u").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("10'u").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("30'u").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("3'ü").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("4'ü").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("100'ü").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("6'yı").size() != 0) self.assertEqual(0, self.fsm.morphologicalAnalysis("6'ı").size()) self.assertTrue(self.fsm.morphologicalAnalysis("40'ı").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("60'ı").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("90'ı").size() != 0) def test_NumberWithDative(self): self.assertTrue(self.fsm.morphologicalAnalysis("6'ya").size() != 0) self.assertEqual(0, self.fsm.morphologicalAnalysis("6'a").size()) self.assertTrue(self.fsm.morphologicalAnalysis("9'a").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("10'a").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("30'a").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("40'a").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("60'a").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("90'a").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("2'ye").size() != 0) self.assertEqual(0, self.fsm.morphologicalAnalysis("2'e").size()) self.assertTrue(self.fsm.morphologicalAnalysis("8'e").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("5'e").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("4'e").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("1'e").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("3'e").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("7'ye").size() != 0) self.assertEqual(0, self.fsm.morphologicalAnalysis("7'e").size()) def test_PresentTense(self): self.assertTrue(self.fsm.morphologicalAnalysis("büyülüyor").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("bölümlüyor").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("buğuluyor").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("bulguluyor").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("açıklıyor").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("çalkalıyor").size() != 0) def test_A(self): self.assertTrue(self.fsm.morphologicalAnalysis("alkole").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("anormale").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("sakala").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("kabala").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("faika").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("halika").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("kediye").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("eve").size() != 0) def test_C(self): self.assertTrue(self.fsm.morphologicalAnalysis("gripçi").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("güllaççı").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("gülütçü").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("gülükçü").size() != 0) def test_SH(self): self.assertTrue(self.fsm.morphologicalAnalysis("altışar").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("yedişer").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("üçer").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("beşer").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("dörder").size() != 0) def test_NumberWithD(self): self.assertTrue(self.fsm.morphologicalAnalysis("1'di").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("2'ydi").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("3'tü").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("4'tü").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("5'ti").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("6'ydı").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("7'ydi").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("8'di").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("9'du").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("30'du").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("40'tı").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("60'tı").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("70'ti").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("50'ydi").size() != 0) def test_D(self): self.assertTrue(self.fsm.morphologicalAnalysis("koştu").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("kitaptı").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("kaçtı").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("evdi").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("fraktı").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("sattı").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("aftı").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("kesti").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("ahtı").size() != 0) def test_Exceptions(self): self.assertTrue(self.fsm.morphologicalAnalysis("yiyip").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("sana").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("bununla").size() != 0) self.assertEqual(0, self.fsm.morphologicalAnalysis("buyla").size()) self.assertTrue(self.fsm.morphologicalAnalysis("onunla").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("şununla").size() != 0) self.assertEqual(0, self.fsm.morphologicalAnalysis("şuyla").size()) self.assertTrue(self.fsm.morphologicalAnalysis("bana").size() != 0) def test_VowelEChangesToIDuringYSuffixation(self): self.assertTrue(self.fsm.morphologicalAnalysis("diyor").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("yiyor").size() != 0) def test_LastIdropsDuringPassiveSuffixation(self): self.assertTrue(self.fsm.morphologicalAnalysis("yoğruldu").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("buyruldu").size() != 0) def test_ShowsSuRegularities(self): self.assertTrue(self.fsm.morphologicalAnalysis("karasuyu").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("suyu").size() != 0) def test_DuplicatesDuringSuffixation(self): self.assertTrue(self.fsm.morphologicalAnalysis("tıbbı").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("ceddi").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("zıddı").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("serhaddi").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("fenni").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("haddi").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("hazzı").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("şakkı").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("şakı").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("halli").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("hali").size() != 0) def test_LastIdropsDuringSuffixation(self): self.assertTrue(self.fsm.morphologicalAnalysis("hizbi").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("kaybı").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("ahdi").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("nesci").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("zehri").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("zikri").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("metni").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("metini").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("katli").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("katili").size() != 0) def test_NounSoftenDuringSuffixation(self): self.assertTrue(self.fsm.morphologicalAnalysis("adabı").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("amibi").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("armudu").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("ağacı").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("akacı").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("arkeoloğu").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("filoloğu").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("ahengi").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("küngü").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("kitaplığı").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("küllüğü").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("adedi").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("adeti").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("ağıdı").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("ağıtı").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("anotu").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("anodu").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("Kuzguncuk'u").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("Leylak'ı").size() != 0) def test_VerbSoftenDuringSuffixation(self): self.assertTrue(self.fsm.morphologicalAnalysis("cezbediyor").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("ediyor").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("bahsediyor").size() != 0)
def setUp(self) -> None: fsm = FsmMorphologicalAnalyzer() self.parse1 = fsm.morphologicalAnalysis("açılır") self.parse2 = fsm.morphologicalAnalysis("koparılarak") self.parse3 = fsm.morphologicalAnalysis("toplama") self.parse4 = fsm.morphologicalAnalysis("değerlendirmede") self.parse5 = fsm.morphologicalAnalysis("soruşturmasının") self.parse6 = fsm.morphologicalAnalysis("karşılaştırmalı") self.parse7 = fsm.morphologicalAnalysis("esaslarını") self.parse8 = fsm.morphologicalAnalysis("güçleriyle") self.parse9 = fsm.morphologicalAnalysis("bulmayacakları") self.parse10 = fsm.morphologicalAnalysis("kitabı") self.parse11 = fsm.morphologicalAnalysis("kitapları") self.parse12 = fsm.morphologicalAnalysis("o") self.parse13 = fsm.morphologicalAnalysis("arabası") self.parse14 = fsm.morphologicalAnalysis("sana")
class FsmMorphologicalAnalyzerTest(unittest.TestCase): fsm: FsmMorphologicalAnalyzer def setUp(self) -> None: self.fsm = FsmMorphologicalAnalyzer( "../turkish_dictionary.txt", "../turkish_misspellings.txt", "../turkish_finite_state_machine.xml") def test_morphologicalAnalysisDataTimeNumber(self): self.assertTrue(self.fsm.morphologicalAnalysis("3/4").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("3\\/4").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("4/2/1973").size() != 0) self.assertTrue( self.fsm.morphologicalAnalysis("14/2/1993").size() != 0) self.assertTrue( self.fsm.morphologicalAnalysis("14/12/1933").size() != 0) self.assertTrue( self.fsm.morphologicalAnalysis("6/12/1903").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("%34.5").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("%3").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("%56").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("2:3").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("12:3").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("4:23").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("11:56").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("1:2:3").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("3:12:3").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("5:4:23").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("7:11:56").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("12:2:3").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("10:12:3").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("11:4:23").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("22:11:56").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("45").size() != 0) self.assertTrue(self.fsm.morphologicalAnalysis("34.23").size() != 0) def test_morphologicalAnalysisProperNoun(self): dictionary = self.fsm.getDictionary() for i in range(dictionary.size()): word = dictionary.getWordWithIndex(i) if isinstance(word, TxtWord): if word.isProperNoun(): self.assertTrue( self.fsm.morphologicalAnalysis(word.getName().replace( "i", "İ").upper()).size() != 0) def test_morphologicalAnalysisNounSoftenDuringSuffixation(self): dictionary = self.fsm.getDictionary() for i in range(dictionary.size()): word = dictionary.getWordWithIndex(i) if isinstance(word, TxtWord): if word.isNominal() and word.nounSoftenDuringSuffixation(): transitionState = State("Possessive", False, False) startState = State("NominalRoot", True, False) transition = Transition("yH", transitionState, "ACC") surfaceForm = transition.makeTransition( word, word.getName(), startState) self.assertTrue( self.fsm.morphologicalAnalysis(surfaceForm).size() != 0 ) def test_morphologicalAnalysisVowelAChangesToIDuringYSuffixation(self): dictionary = self.fsm.getDictionary() for i in range(dictionary.size()): word = dictionary.getWordWithIndex(i) if isinstance(word, TxtWord): if word.isVerb() and word.vowelAChangesToIDuringYSuffixation(): transitionState = State("VerbalStem", False, False) startState = State("VerbalRoot", True, False) transition = Transition("Hyor", transitionState, "PROG1") surfaceForm = transition.makeTransition( word, word.getName(), startState) self.assertTrue( self.fsm.morphologicalAnalysis(surfaceForm).size() != 0 ) def test_morphologicalAnalysisIsPortmanteau(self): dictionary = self.fsm.getDictionary() for i in range(dictionary.size()): word = dictionary.getWordWithIndex(i) if isinstance(word, TxtWord): if word.isNominal() and word.isPortmanteau() and not word.isPlural() and \ not word.isPortmanteauFacedVowelEllipsis(): transitionState = State("CompoundNounRoot", True, False) startState = State("CompoundNounRoot", True, False) transition = Transition("lArH", transitionState, "A3PL+P3PL") exceptLast2 = word.getName()[:len(word.getName()) - 2] exceptLast = word.getName()[:len(word.getName()) - 1] if word.isPortmanteauFacedSoftening(): if word.getName()[len(word.getName()) - 2] == "b": rootForm = exceptLast2 + 'p' elif word.getName()[len(word.getName()) - 2] == "c": rootForm = exceptLast2 + 'ç' elif word.getName()[len(word.getName()) - 2] == "d": rootForm = exceptLast2 + 't' elif word.getName()[len(word.getName()) - 2] == "ğ": rootForm = exceptLast2 + 'k' else: rootForm = exceptLast else: if word.isPortmanteauEndingWithSI(): rootForm = exceptLast2 else: rootForm = exceptLast surfaceForm = transition.makeTransition( word, rootForm, startState) self.assertTrue( self.fsm.morphologicalAnalysis(surfaceForm).size() != 0 ) def test_morphologicalAnalysisNotObeysVowelHarmonyDuringAgglutination( self): dictionary = self.fsm.getDictionary() for i in range(dictionary.size()): word = dictionary.getWordWithIndex(i) if isinstance(word, TxtWord): if word.isNominal( ) and word.notObeysVowelHarmonyDuringAgglutination(): transitionState = State("Possessive", False, False) startState = State("NominalRoot", True, False) transition = Transition("yH", transitionState, "ACC") surfaceForm = transition.makeTransition( word, word.getName(), startState) self.assertTrue( self.fsm.morphologicalAnalysis(surfaceForm).size() != 0 ) def test_morphologicalAnalysisLastIdropsDuringSuffixation(self): dictionary = self.fsm.getDictionary() for i in range(dictionary.size()): word = dictionary.getWordWithIndex(i) if isinstance(word, TxtWord): if word.isNominal() and word.lastIdropsDuringSuffixation(): transitionState = State("Possessive", False, False) startState = State("NominalRoot", True, False) transition = Transition("yH", transitionState, "ACC") surfaceForm = transition.makeTransition( word, word.getName(), startState) self.assertTrue( self.fsm.morphologicalAnalysis(surfaceForm).size() != 0 ) def test_morphologicalAnalysisVerbSoftenDuringSuffixation(self): dictionary = self.fsm.getDictionary() for i in range(dictionary.size()): word = dictionary.getWordWithIndex(i) if isinstance(word, TxtWord): if word.isVerb() and word.verbSoftenDuringSuffixation(): transitionState = State("VerbalStem", False, False) startState = State("VerbalRoot", True, False) transition = Transition("Hyor", transitionState, "PROG1") surfaceForm = transition.makeTransition( word, word.getName(), startState) self.assertTrue( self.fsm.morphologicalAnalysis(surfaceForm).size() != 0 ) def test_morphologicalAnalysisDuplicatesDuringSuffixation(self): dictionary = self.fsm.getDictionary() for i in range(dictionary.size()): word = dictionary.getWordWithIndex(i) if isinstance(word, TxtWord): if word.isNominal() and word.duplicatesDuringSuffixation(): transitionState = State("Possessive", False, False) startState = State("NominalRoot", True, False) transition = Transition("yH", transitionState, "ACC") surfaceForm = transition.makeTransition( word, word.getName(), startState) self.assertTrue( self.fsm.morphologicalAnalysis(surfaceForm).size() != 0 ) def test_morphologicalAnalysisEndingKChangesIntoG(self): dictionary = self.fsm.getDictionary() for i in range(dictionary.size()): word = dictionary.getWordWithIndex(i) if isinstance(word, TxtWord): if word.isNominal() and word.endingKChangesIntoG(): transitionState = State("Possessive", False, False) startState = State("NominalRoot", True, False) transition = Transition("yH", transitionState, "ACC") surfaceForm = transition.makeTransition( word, word.getName(), startState) self.assertTrue( self.fsm.morphologicalAnalysis(surfaceForm).size() != 0 ) def test_morphologicalAnalysisLastIdropsDuringPassiveSuffixation(self): dictionary = self.fsm.getDictionary() for i in range(dictionary.size()): word = dictionary.getWordWithIndex(i) if isinstance(word, TxtWord): if word.isVerb() and word.lastIdropsDuringPassiveSuffixation(): transitionState = State("VerbalStem", False, False) startState = State("VerbalRoot", True, False) transition = Transition("Hl", transitionState, "^DB+VERB+PASS") surfaceForm = transition.makeTransition( word, word.getName(), startState) self.assertTrue( self.fsm.morphologicalAnalysis(surfaceForm).size() != 0 )