Example #1
0
    def test_should_have_paths_for_ques(self):
        parser_logger.setLevel(logging.DEBUG)
        suffix_applier_logger.setLevel(logging.DEBUG)

        self.predefined_paths._create_predefined_path_of_question_particles()

        self.morpheme_container_map = self.predefined_paths._morpheme_container_map

        QUES = SyntacticCategory.QUESTION

        # last one ends with transition to derivation state
        self.assert_defined_path(u'mı', QUES, None,
            u'mı(mı)+Ques+Pres+A1sg(yım[yım])',
            u'mı(mı)+Ques+Pres+A2sg(sın[sın])',
            u'mı(mı)+Ques+Pres+A3sg',
            u'mı(mı)+Ques+Pres+A1pl(yız[yız])',
            u'mı(mı)+Ques+Pres+A2pl(sınız[sınız])',
            u'mı(mı)+Ques+Pres+A3pl(lar[lar])',
            u'mı(mı)+Ques+Past(ydı[ydı])+A1sg(m[m])',
            u'mı(mı)+Ques+Past(ydı[ydı])+A2sg(n[n])',
            u'mı(mı)+Ques+Past(ydı[ydı])+A3sg',
            u'mı(mı)+Ques+Past(ydı[ydı])+A1pl(k[k])',
            u'mı(mı)+Ques+Past(ydı[ydı])+A2pl(nız[nız])',
            u'mı(mı)+Ques+Past(ydı[ydı])+A3pl(lar[lar])',
            u'mı(mı)+Ques+Narr(ymış[ymış])+A1sg(ım[ım])',
            u'mı(mı)+Ques+Narr(ymış[ymış])+A2sg(sın[sın])',
            u'mı(mı)+Ques+Narr(ymış[ymış])+A3sg',
            u'mı(mı)+Ques+Narr(ymış[ymış])+A1pl(ız[ız])',
            u'mı(mı)+Ques+Narr(ymış[ymış])+A2pl(sınız[sınız])',
            u'mı(mı)+Ques+Narr(ymış[ymış])+A3pl(lar[lar])')
    def test_should_have_paths_for_ques(self):
        parser_logger.setLevel(logging.DEBUG)
        suffix_applier_logger.setLevel(logging.DEBUG)

        self.predefined_paths._create_predefined_path_of_question_particles()

        self.morpheme_container_map = self.predefined_paths._morpheme_container_map

        QUES = SyntacticCategory.QUESTION

        # last one ends with transition to derivation state
        self.assert_defined_path(
            u'mı', QUES, None, u'mı(mı)+Ques+Pres+A1sg(yım[yım])',
            u'mı(mı)+Ques+Pres+A2sg(sın[sın])', u'mı(mı)+Ques+Pres+A3sg',
            u'mı(mı)+Ques+Pres+A1pl(yız[yız])',
            u'mı(mı)+Ques+Pres+A2pl(sınız[sınız])',
            u'mı(mı)+Ques+Pres+A3pl(lar[lar])',
            u'mı(mı)+Ques+Past(ydı[ydı])+A1sg(m[m])',
            u'mı(mı)+Ques+Past(ydı[ydı])+A2sg(n[n])',
            u'mı(mı)+Ques+Past(ydı[ydı])+A3sg',
            u'mı(mı)+Ques+Past(ydı[ydı])+A1pl(k[k])',
            u'mı(mı)+Ques+Past(ydı[ydı])+A2pl(nız[nız])',
            u'mı(mı)+Ques+Past(ydı[ydı])+A3pl(lar[lar])',
            u'mı(mı)+Ques+Narr(ymış[ymış])+A1sg(ım[ım])',
            u'mı(mı)+Ques+Narr(ymış[ymış])+A2sg(sın[sın])',
            u'mı(mı)+Ques+Narr(ymış[ymış])+A3sg',
            u'mı(mı)+Ques+Narr(ymış[ymış])+A1pl(ız[ız])',
            u'mı(mı)+Ques+Narr(ymış[ymış])+A2pl(sınız[sınız])',
            u'mı(mı)+Ques+Narr(ymış[ymış])+A3pl(lar[lar])')
Example #3
0
    def setUp(self):
        super(PredefinedPathsTest, self).setUp()

        logging.basicConfig(level=logging.INFO)
        parser_logger.setLevel(logging.INFO)
        suffix_applier_logger.setLevel(logging.INFO)

        self.predefined_paths = PredefinedPaths(self.root_map, self.suffix_graph)
    def setUp(self):
        super(PredefinedPathsTest, self).setUp()

        logging.basicConfig(level=logging.INFO)
        parser_logger.setLevel(logging.INFO)
        suffix_applier_logger.setLevel(logging.INFO)

        self.predefined_paths = PredefinedPaths(self.root_map,
                                                self.suffix_graph)
Example #5
0
    def test_should_have_paths_for_irregular_pronouns(self):
        parser_logger.setLevel(logging.DEBUG)
        suffix_applier_logger.setLevel(logging.DEBUG)

        self.predefined_paths._create_predefined_path_of_herkes()

        self.morpheme_container_map = self.predefined_paths._morpheme_container_map

        PRON = SyntacticCategory.PRONOUN

        self.assert_defined_path(u'herkes', PRON, None, u'herkes(herkes)+Pron+A3sg+Pnon')
Example #6
0
    def setUp(self):
        logging.basicConfig(level=logging.INFO)
        parser_logger.setLevel(logging.INFO)
        suffix_applier_logger.setLevel(logging.INFO)

        suffix_graph = BasicSuffixGraph()
        suffix_graph.initialize()

        word_root_finder = WordRootFinder(self.root_map)

        self.parser = ContextlessMorphologicalParser(suffix_graph, None, [word_root_finder])
    def setUp(self):
        logging.basicConfig(level=logging.INFO)
        parser_logger.setLevel(logging.INFO)
        suffix_applier_logger.setLevel(logging.INFO)

        suffix_graph = BasicSuffixGraph()
        suffix_graph.initialize()

        self.mock_brute_force_noun_root_finder = BruteForceVerbRootFinder()

        self.parser = ContextlessMorphologicalParser(suffix_graph, None, [self.mock_brute_force_noun_root_finder])
Example #8
0
    def test_should_have_paths_for_iceri_disari(self):
        parser_logger.setLevel(logging.DEBUG)
        suffix_applier_logger.setLevel(logging.DEBUG)

        self.predefined_paths._create_predefined_path_of_iceri_disari()

        self.morpheme_container_map = self.predefined_paths._morpheme_container_map

        NOUN = SyntacticCategory.NOUN

        self.assert_defined_path(u'içer',  NOUN, None, u'i\xe7er(i\xe7eri)+Noun+A3sg+Pnon+Loc(de[de])', u'i\xe7er(i\xe7eri)+Noun+A3sg+Pnon+Abl(den[den])', u'i\xe7er(i\xe7eri)+Noun+A3sg+P3sg(si[si])')
        self.assert_defined_path(u'dışar', NOUN, None, u'd\u0131\u015far(d\u0131\u015far\u0131)+Noun+A3sg+Pnon+Loc(da[da])', u'd\u0131\u015far(d\u0131\u015far\u0131)+Noun+A3sg+Pnon+Abl(dan[dan])', u'd\u0131\u015far(d\u0131\u015far\u0131)+Noun+A3sg+P3sg(s\u0131[s\u0131])')
Example #9
0
    def test_should_parse_proper_nouns_TDK(self):
        parser_logger.setLevel(logging.DEBUG)
        suffix_applier_logger.setLevel(logging.DEBUG)

        # TODO: implementing these features is almost impossible without context and historical data

        # tests based on TDK
        # http://www.tdk.gov.tr/index.php?option=com_content&view=article&id=187:Noktalama-Isaretleri-Aciklamalar&catid=50:yazm-kurallar&Itemid=132

        # Özel adlara getirilen iyelik, durum ve bildirme ekleri kesme işaretiyle ayrılır
        self.assert_parse_correct(u"Kayseri'm",          u'Kayseri(Kayseri)+Noun+Prop+Apos+A3sg+P1sg(+Im[m])+Nom')
        self.assert_parse_correct(u"Türkiye'mizin",      u'Türkiye(Türkiye)+Noun+Prop+Apos+A3sg+P1sg(+ImIz[miz])+Gen(+nIn[nin])')
        self.assert_parse_correct(u"Muhibbi'nin",        u'Muhibbi(Muhibbi)+Noun+Prop+Apos+A3sg+Pnon+Gen(+nIn[in])')
        self.assert_parse_correct(u"Emre'yi")
        self.assert_parse_correct(u"Şinasi'yle")
        self.assert_parse_correct(u"Alman'sınız")
        self.assert_parse_correct(u"Kırgız'ım")
        self.assert_parse_correct(u"Karakeçili'nin")
        self.assert_parse_correct(u"Cebrail'den")
        self.assert_parse_correct(u"Samanyolu'nda")
        self.assert_parse_correct(u"Eminönü'nde")
        self.assert_parse_correct(u"Ahmet'miş")
        self.assert_parse_correct(u"Ahmet'ti")

        # Sonunda 3. teklik kişi iyelik eki olan özel ada, bu ek dışında başka bir iyelik eki getirildiğinde kesme işareti konmaz
        self.assert_parse_correct(u"Boğaz_Köprümüz")
        self.assert_parse_correct(u"Boğaz_Köprümüzün")
        self.assert_parse_correct(u"Kuşadamızda")

        # Kurum, kuruluş, kurul, birleşim, oturum ve iş yeri adlarına gelen ekler kesmeyle ayrılmaz:
        self.assert_parse_correct(u"Türk_Dil_Kurumundan")
        self.assert_parse_correct(u"Başbakanlığa")

        # Özel adlara getirilen yapım ekleri, çokluk eki ve bunlardan sonra gelen diğer ekler kesmeyle ayrılmaz
        self.assert_parse_correct(u"Türklük")
        self.assert_parse_correct(u"Türkleşmek")
        self.assert_parse_correct(u"Türkçü")
        self.assert_parse_correct(u"Türkçülük")
        self.assert_parse_correct(u"Türkçe")
        self.assert_parse_correct(u"Avrupalı")
        self.assert_parse_correct(u"Avrupalılaşmak")
        self.assert_parse_correct(u"Mehmetler")
        self.assert_parse_correct(u"Mehmetlere")
        self.assert_parse_correct(u"Mehmetgil")
        self.assert_parse_correct(u"Mehmetgile")
        self.assert_parse_correct(u"Türklerin")
        self.assert_parse_correct(u"Türkçenin")
        self.assert_parse_correct(u"Müslümanlıkta")

        # Kişi adlarından sonra gelen saygı ve unvan sözlerine getirilen ekleri ayırmak için konur:
        self.assert_parse_correct(u"Nihat_Bey'e")
        self.assert_parse_correct(u"Ayşe_Hanım'dan")
        self.assert_parse_correct(u"Enver_Paşa'ya")
Example #10
0
    def setUp(self):
        logging.basicConfig(level=logging.INFO)
        parser_logger.setLevel(logging.INFO)
        suffix_applier_logger.setLevel(logging.INFO)

        suffix_graph = BasicSuffixGraph()
        suffix_graph.initialize()

        word_root_finder = WordRootFinder(self.root_map)

        self.parser = ContextlessMorphologicalParser(suffix_graph, None,
                                                     [word_root_finder])
    def test_should_have_paths_for_irregular_pronouns(self):
        parser_logger.setLevel(logging.DEBUG)
        suffix_applier_logger.setLevel(logging.DEBUG)

        self.predefined_paths._create_predefined_path_of_herkes()

        self.morpheme_container_map = self.predefined_paths._morpheme_container_map

        PRON = SyntacticCategory.PRONOUN

        self.assert_defined_path(u'herkes', PRON, None,
                                 u'herkes(herkes)+Pron+A3sg+Pnon')
    def setUp(self):
        logging.basicConfig(level=logging.INFO)
        parser_logger.setLevel(logging.INFO)
        suffix_applier_logger.setLevel(logging.INFO)

        suffix_graph = BasicSuffixGraph()
        suffix_graph.initialize()

        self.mock_brute_force_noun_root_finder = BruteForceVerbRootFinder()

        self.parser = ContextlessMorphologicalParser(
            suffix_graph, None, [self.mock_brute_force_noun_root_finder])
Example #13
0
    def test_should_generate_transitions(self):
        parser_logger.setLevel(logging.DEBUG)
        suffix_applier_logger.setLevel(logging.DEBUG)

        self.assert_transitions_generated(
            u'elmaya', u'elma(elma)+Noun+A3sg+Pnon+Dat(+yA[ya])',
            [
                (u'elma',  u'elma(elma)+Noun'),
                (u'elma',  u'elma(elma)+Noun+A3sg'),
                (u'elma',  u'elma(elma)+Noun+A3sg+Pnon'),
                (u'elmaya', u'elma(elma)+Noun+A3sg+Pnon+Dat(+yA[ya])'),
            ]
        )

        self.assert_transitions_generated(
            u'armudu', u'armud(armut)+Noun+A3sg+Pnon+Acc(+yI[u])',
            [
                (u'armud',  u'armud(armut)+Noun'),
                (u'armud',  u'armud(armut)+Noun+A3sg'),
                (u'armud',  u'armud(armut)+Noun+A3sg+Pnon'),
                (u'armudu', u'armud(armut)+Noun+A3sg+Pnon+Acc(+yI[u])'),
            ]
        )

        self.assert_transitions_generated(
            u'yapabildiklerimizden', u'yap(yapmak)+Verb+Verb+Able(+yAbil[abil])+Pos+Noun+PastPart(dIk[dik])+A3pl(lAr[ler])+P1pl(+ImIz[imiz])+Abl(dAn[den])',
            [
                (u'yap',                  u'yap(yapmak)+Verb'),
                (u'yapabil',              u'yap(yapmak)+Verb+Verb+Able(+yAbil[abil])'),
                (u'yapabil',              u'yap(yapmak)+Verb+Verb+Able(+yAbil[abil])+Pos'),
                (u'yapabildik',           u'yap(yapmak)+Verb+Verb+Able(+yAbil[abil])+Pos+Noun+PastPart(dIk[dik])'),
                (u'yapabildikler',        u'yap(yapmak)+Verb+Verb+Able(+yAbil[abil])+Pos+Noun+PastPart(dIk[dik])+A3pl(lAr[ler])'),
                (u'yapabildiklerimiz',    u'yap(yapmak)+Verb+Verb+Able(+yAbil[abil])+Pos+Noun+PastPart(dIk[dik])+A3pl(lAr[ler])+P1pl(+ImIz[imiz])'),
                (u'yapabildiklerimizden', u'yap(yapmak)+Verb+Verb+Able(+yAbil[abil])+Pos+Noun+PastPart(dIk[dik])+A3pl(lAr[ler])+P1pl(+ImIz[imiz])+Abl(dAn[den])')
            ]
        )

        self.assert_transitions_generated(
            u'yaptırttıramazmışız',       u'yap(yapmak)+Verb+Verb+Caus(dIr[tır])+Verb+Caus(t[t])+Verb+Caus(dIr[tır])+Verb+Able(+yA[a])+Neg(mA[ma])+Aor(z[z])+Narr(mIş[mış])+A1pl(+Iz[ız])',
            [
                (u'yap',                  u'yap(yapmak)+Verb'),
                (u'yaptır',               u'yap(yapmak)+Verb+Verb+Caus(dIr[tır])'),
                (u'yaptırt',              u'yap(yapmak)+Verb+Verb+Caus(dIr[tır])+Verb+Caus(t[t])'),
                (u'yaptırttır',           u'yap(yapmak)+Verb+Verb+Caus(dIr[tır])+Verb+Caus(t[t])+Verb+Caus(dIr[tır])'),
                (u'yaptırttıra',          u'yap(yapmak)+Verb+Verb+Caus(dIr[tır])+Verb+Caus(t[t])+Verb+Caus(dIr[tır])+Verb+Able(+yA[a])'),
                (u'yaptırttırama',        u'yap(yapmak)+Verb+Verb+Caus(dIr[tır])+Verb+Caus(t[t])+Verb+Caus(dIr[tır])+Verb+Able(+yA[a])+Neg(mA[ma])'),
                (u'yaptırttıramaz',       u'yap(yapmak)+Verb+Verb+Caus(dIr[tır])+Verb+Caus(t[t])+Verb+Caus(dIr[tır])+Verb+Able(+yA[a])+Neg(mA[ma])+Aor(z[z])'),
                (u'yaptırttıramazmış',    u'yap(yapmak)+Verb+Verb+Caus(dIr[tır])+Verb+Caus(t[t])+Verb+Caus(dIr[tır])+Verb+Able(+yA[a])+Neg(mA[ma])+Aor(z[z])+Narr(mIş[mış])'),
                (u'yaptırttıramazmışız',  u'yap(yapmak)+Verb+Verb+Caus(dIr[tır])+Verb+Caus(t[t])+Verb+Caus(dIr[tır])+Verb+Able(+yA[a])+Neg(mA[ma])+Aor(z[z])+Narr(mIş[mış])+A1pl(+Iz[ız])')
            ]
        )
Example #14
0
    def test_should_have_paths_for_pronouns_bura_sura_ora(self):
        parser_logger.setLevel(logging.DEBUG)
        suffix_applier_logger.setLevel(logging.DEBUG)

        self.predefined_paths._create_predefined_path_of_ora_bura_sura_nere()

        self.morpheme_container_map = self.predefined_paths._morpheme_container_map

        PRON = SyntacticCategory.PRONOUN

        self.assert_defined_path(u'or',  PRON, None, u'or(ora)+Pron+A3sg+Pnon+Loc(da[da])', u'or(ora)+Pron+A3sg+Pnon+Abl(dan[dan])')
        self.assert_defined_path(u'bur', PRON, None, u'bur(bura)+Pron+A3sg+Pnon+Loc(da[da])', u'bur(bura)+Pron+A3sg+Pnon+Abl(dan[dan])')
        self.assert_defined_path(u'şur', PRON, None, u'şur(şura)+Pron+A3sg+Pnon+Loc(da[da])', u'şur(şura)+Pron+A3sg+Pnon+Abl(dan[dan])')
        self.assert_defined_path(u'ner', PRON, SecondarySyntacticCategory.QUESTION, u'ner(nere)+Pron+Ques+A3sg+Pnon+Loc(de[de])', u'ner(nere)+Pron+Ques+A3sg+Pnon+Abl(den[den])')
    def setUp(self):
        logging.basicConfig(level=logging.INFO)
        parser_logger.setLevel(logging.INFO)
        suffix_applier_logger.setLevel(logging.INFO)

        self.cloned_root_map = copy(self._org_root_map)

        suffix_graph = CopulaSuffixGraph(BasicSuffixGraph())
        suffix_graph.initialize()
        predefined_paths = PredefinedPaths(self.cloned_root_map, suffix_graph)
        predefined_paths.create_predefined_paths()

        word_root_finder = WordRootFinder(self.cloned_root_map)

        self.parser = ContextlessMorphologicalParser(suffix_graph, predefined_paths,
            [word_root_finder])
Example #16
0
    def test_should_have_paths_for_pronouns_with_implicit_possession(self):
        parser_logger.setLevel(logging.DEBUG)
        suffix_applier_logger.setLevel(logging.DEBUG)

        self.predefined_paths._create_predefined_path_of_bazilari_bazisi()
        self.predefined_paths._create_predefined_path_of_kimileri_kimisi_kimi()
        self.predefined_paths._create_predefined_path_of_birileri_birisi_biri()
        self.predefined_paths._create_predefined_path_of_hicbirisi_hicbiri()
        self.predefined_paths._create_predefined_path_of_birbiri()
        self.predefined_paths._create_predefined_path_of_cogu_bircogu_coklari_bircoklari()
        self.predefined_paths._create_predefined_path_of_birkaci()
        self.predefined_paths._create_predefined_path_of_cumlesi()
        self.predefined_paths._create_predefined_path_of_digeri_digerleri()

        self.morpheme_container_map = self.predefined_paths._morpheme_container_map

        PRON = SyntacticCategory.PRONOUN

        self.assert_defined_path(u'bazıları',   PRON, None, u'bazıları(bazıları)+Pron+A3sg+P3sg', u'bazıları(bazıları)+Pron+A3sg+P1pl(mız[mız])', u'bazıları(bazıları)+Pron+A3sg+P2pl(nız[nız])')
        self.assert_defined_path(u'bazısı',     PRON, None, u'bazısı(bazısı)+Pron+A3sg+P3sg')

        self.assert_defined_path(u'kimileri',   PRON, None, u'kimileri(kimileri)+Pron+A3sg+P3sg', u'kimileri(kimileri)+Pron+A3sg+P1pl(miz[miz])', u'kimileri(kimileri)+Pron+A3sg+P2pl(niz[niz])')
        self.assert_defined_path(u'kimisi',     PRON, None, u'kimisi(kimisi)+Pron+A3sg+P3sg')
        self.assert_defined_path(u'kimi',       PRON, None, u'kimi(kimi)+Pron+A3sg+P3sg', u'kimi(kimi)+Pron+A3sg+P1pl(miz[miz])', u'kimi(kimi)+Pron+A3sg+P2pl(niz[niz])')

        self.assert_defined_path(u'birileri',   PRON, None, u'birileri(birileri)+Pron+A3sg+P3sg', u'birileri(birileri)+Pron+A3sg+P1pl(miz[miz])', u'birileri(birileri)+Pron+A3sg+P2pl(niz[niz])')
        self.assert_defined_path(u'birisi',     PRON, None, u'birisi(birisi)+Pron+A3sg+P3sg')
        self.assert_defined_path(u'biri',       PRON, None, u'biri(biri)+Pron+A3sg+P3sg', u'biri(biri)+Pron+A3sg+P1pl(miz[miz])', u'biri(biri)+Pron+A3sg+P2pl(niz[niz])')

        self.assert_defined_path(u'hiçbirisi',  PRON, None, u'hiçbirisi(hiçbirisi)+Pron+A3sg+P3sg')
        self.assert_defined_path(u'hiçbiri',    PRON, None, u'hiçbiri(hiçbiri)+Pron+A3sg+P3sg', u'hiçbiri(hiçbiri)+Pron+A3sg+P1pl(miz[miz])', u'hiçbiri(hiçbiri)+Pron+A3sg+P2pl(niz[niz])')

        self.assert_defined_path(u'birbiri',    PRON, None, u'birbiri(birbiri)+Pron+A3sg+P3sg', u'birbiri(birbiri)+Pron+A1pl+P1pl(miz[miz])', u'birbiri(birbiri)+Pron+A2pl+P2pl(niz[niz])')
        self.assert_defined_path(u'birbir',     PRON, None, u'birbir(birbiri)+Pron+A3pl+P3pl(leri[leri])')

        self.assert_defined_path(u'çoğu',       PRON, None, u'çoğu(çoğu)+Pron+A3sg+P3sg', u'çoğu(çoğu)+Pron+A3sg+P1pl(muz[muz])', u'çoğu(çoğu)+Pron+A3sg+P2pl(nuz[nuz])')
        self.assert_defined_path(u'birçoğu',    PRON, None, u'birçoğu(birçoğu)+Pron+A3sg+P3sg', u'birçoğu(birçoğu)+Pron+A3sg+P1pl(muz[muz])', u'birçoğu(birçoğu)+Pron+A3sg+P2pl(nuz[nuz])')
        self.assert_defined_path(u'çokları',    PRON, None, u'çokları(çokları)+Pron+A3sg+P3pl')
        self.assert_defined_path(u'birçokları', PRON, None, u'birçokları(birçokları)+Pron+A3sg+P3pl')

        self.assert_defined_path(u'birkaçı',    PRON, None, u'birkaçı(birkaçı)+Pron+A3sg+P3sg', u'birkaçı(birkaçı)+Pron+A3sg+P1pl(mız[mız])', u'birkaçı(birkaçı)+Pron+A3sg+P2pl(nız[nız])')

        self.assert_defined_path(u'cümlesi',    PRON, None, u'cümlesi(cümlesi)+Pron+A3sg+P3sg')

        self.assert_defined_path(u'diğeri',     PRON, None, u'diğeri(diğeri)+Pron+A3sg+P3sg', u'diğeri(diğeri)+Pron+A3sg+P1pl(miz[miz])', u'diğeri(diğeri)+Pron+A3sg+P2pl(niz[niz])')
        self.assert_defined_path(u'diğerleri',  PRON, None, u'diğerleri(diğerleri)+Pron+A3sg+P3pl', u'diğerleri(diğerleri)+Pron+A3sg+P1pl(miz[miz])', u'diğerleri(diğerleri)+Pron+A3sg+P2pl(niz[niz])')
Example #17
0
    def test_should_have_paths_for_hepsi(self):
        parser_logger.setLevel(logging.DEBUG)
        suffix_applier_logger.setLevel(logging.DEBUG)

        self.predefined_paths._create_predefined_path_of_hepsi()

        self.morpheme_container_map = self.predefined_paths._morpheme_container_map

        PRON = SyntacticCategory.PRONOUN

        # last one ends with transition to derivation state
        self.assert_defined_path(u'hepsi', PRON, None,
            u'hepsi(hepsi)+Pron+A3pl+P3pl+Nom',
            u'hepsi(hepsi)+Pron+A3pl+P3pl+Acc(ni[ni])',
            u'hepsi(hepsi)+Pron+A3pl+P3pl+Dat(ne[ne])',
            u'hepsi(hepsi)+Pron+A3pl+P3pl+Loc(nde[nde])',
            u'hepsi(hepsi)+Pron+A3pl+P3pl+Abl(nden[nden])',
            u'hepsi(hepsi)+Pron+A3pl+P3pl+Ins(yle[yle])',
            u'hepsi(hepsi)+Pron+A3pl+P3pl+Gen(nin[nin])',
            u'hepsi(hepsi)+Pron+A3pl+P3pl+AccordingTo(nce[nce])',
            u'hepsi(hepsi)+Pron+A3pl+P3pl+Nom')

        # last one ends with transition to derivation state
        self.assert_defined_path(u'hep', PRON, None,
            u'hep(hepsi)+Pron+A1pl+P1pl(imiz[imiz])+Nom',
            u'hep(hepsi)+Pron+A1pl+P1pl(imiz[imiz])+Acc(i[i])',
            u'hep(hepsi)+Pron+A1pl+P1pl(imiz[imiz])+Dat(e[e])',
            u'hep(hepsi)+Pron+A1pl+P1pl(imiz[imiz])+Loc(de[de])',
            u'hep(hepsi)+Pron+A1pl+P1pl(imiz[imiz])+Abl(den[den])',
            u'hep(hepsi)+Pron+A1pl+P1pl(imiz[imiz])+Ins(le[le])',
            u'hep(hepsi)+Pron+A1pl+P1pl(imiz[imiz])+Gen(in[in])',
            u'hep(hepsi)+Pron+A1pl+P1pl(imiz[imiz])+AccordingTo(ce[ce])',
            u'hep(hepsi)+Pron+A1pl+P1pl(imiz[imiz])+Nom',
            u'hep(hepsi)+Pron+A2pl+P2pl(iniz[iniz])+Nom',
            u'hep(hepsi)+Pron+A2pl+P2pl(iniz[iniz])+Acc(i[i])',
            u'hep(hepsi)+Pron+A2pl+P2pl(iniz[iniz])+Dat(e[e])',
            u'hep(hepsi)+Pron+A2pl+P2pl(iniz[iniz])+Loc(de[de])',
            u'hep(hepsi)+Pron+A2pl+P2pl(iniz[iniz])+Abl(den[den])',
            u'hep(hepsi)+Pron+A2pl+P2pl(iniz[iniz])+Ins(le[le])',
            u'hep(hepsi)+Pron+A2pl+P2pl(iniz[iniz])+Gen(in[in])',
            u'hep(hepsi)+Pron+A2pl+P2pl(iniz[iniz])+AccordingTo(ce[ce])',
            u'hep(hepsi)+Pron+A2pl+P2pl(iniz[iniz])+Nom')
    def test_should_have_paths_for_hepsi(self):
        parser_logger.setLevel(logging.DEBUG)
        suffix_applier_logger.setLevel(logging.DEBUG)

        self.predefined_paths._create_predefined_path_of_hepsi()

        self.morpheme_container_map = self.predefined_paths._morpheme_container_map

        PRON = SyntacticCategory.PRONOUN

        # last one ends with transition to derivation state
        self.assert_defined_path(
            u'hepsi', PRON, None, u'hepsi(hepsi)+Pron+A3pl+P3pl+Nom',
            u'hepsi(hepsi)+Pron+A3pl+P3pl+Acc(ni[ni])',
            u'hepsi(hepsi)+Pron+A3pl+P3pl+Dat(ne[ne])',
            u'hepsi(hepsi)+Pron+A3pl+P3pl+Loc(nde[nde])',
            u'hepsi(hepsi)+Pron+A3pl+P3pl+Abl(nden[nden])',
            u'hepsi(hepsi)+Pron+A3pl+P3pl+Ins(yle[yle])',
            u'hepsi(hepsi)+Pron+A3pl+P3pl+Gen(nin[nin])',
            u'hepsi(hepsi)+Pron+A3pl+P3pl+AccordingTo(nce[nce])',
            u'hepsi(hepsi)+Pron+A3pl+P3pl+Nom')

        # last one ends with transition to derivation state
        self.assert_defined_path(
            u'hep', PRON, None, u'hep(hepsi)+Pron+A1pl+P1pl(imiz[imiz])+Nom',
            u'hep(hepsi)+Pron+A1pl+P1pl(imiz[imiz])+Acc(i[i])',
            u'hep(hepsi)+Pron+A1pl+P1pl(imiz[imiz])+Dat(e[e])',
            u'hep(hepsi)+Pron+A1pl+P1pl(imiz[imiz])+Loc(de[de])',
            u'hep(hepsi)+Pron+A1pl+P1pl(imiz[imiz])+Abl(den[den])',
            u'hep(hepsi)+Pron+A1pl+P1pl(imiz[imiz])+Ins(le[le])',
            u'hep(hepsi)+Pron+A1pl+P1pl(imiz[imiz])+Gen(in[in])',
            u'hep(hepsi)+Pron+A1pl+P1pl(imiz[imiz])+AccordingTo(ce[ce])',
            u'hep(hepsi)+Pron+A1pl+P1pl(imiz[imiz])+Nom',
            u'hep(hepsi)+Pron+A2pl+P2pl(iniz[iniz])+Nom',
            u'hep(hepsi)+Pron+A2pl+P2pl(iniz[iniz])+Acc(i[i])',
            u'hep(hepsi)+Pron+A2pl+P2pl(iniz[iniz])+Dat(e[e])',
            u'hep(hepsi)+Pron+A2pl+P2pl(iniz[iniz])+Loc(de[de])',
            u'hep(hepsi)+Pron+A2pl+P2pl(iniz[iniz])+Abl(den[den])',
            u'hep(hepsi)+Pron+A2pl+P2pl(iniz[iniz])+Ins(le[le])',
            u'hep(hepsi)+Pron+A2pl+P2pl(iniz[iniz])+Gen(in[in])',
            u'hep(hepsi)+Pron+A2pl+P2pl(iniz[iniz])+AccordingTo(ce[ce])',
            u'hep(hepsi)+Pron+A2pl+P2pl(iniz[iniz])+Nom')
    def test_should_have_paths_for_iceri_disari(self):
        parser_logger.setLevel(logging.DEBUG)
        suffix_applier_logger.setLevel(logging.DEBUG)

        self.predefined_paths._create_predefined_path_of_iceri_disari()

        self.morpheme_container_map = self.predefined_paths._morpheme_container_map

        NOUN = SyntacticCategory.NOUN

        self.assert_defined_path(
            u'içer', NOUN, None,
            u'i\xe7er(i\xe7eri)+Noun+A3sg+Pnon+Loc(de[de])',
            u'i\xe7er(i\xe7eri)+Noun+A3sg+Pnon+Abl(den[den])',
            u'i\xe7er(i\xe7eri)+Noun+A3sg+P3sg(si[si])')
        self.assert_defined_path(
            u'dışar', NOUN, None,
            u'd\u0131\u015far(d\u0131\u015far\u0131)+Noun+A3sg+Pnon+Loc(da[da])',
            u'd\u0131\u015far(d\u0131\u015far\u0131)+Noun+A3sg+Pnon+Abl(dan[dan])',
            u'd\u0131\u015far(d\u0131\u015far\u0131)+Noun+A3sg+P3sg(s\u0131[s\u0131])'
        )
    def test_should_have_paths_for_pronouns_bura_sura_ora(self):
        parser_logger.setLevel(logging.DEBUG)
        suffix_applier_logger.setLevel(logging.DEBUG)

        self.predefined_paths._create_predefined_path_of_ora_bura_sura_nere()

        self.morpheme_container_map = self.predefined_paths._morpheme_container_map

        PRON = SyntacticCategory.PRONOUN

        self.assert_defined_path(u'or', PRON, None,
                                 u'or(ora)+Pron+A3sg+Pnon+Loc(da[da])',
                                 u'or(ora)+Pron+A3sg+Pnon+Abl(dan[dan])')
        self.assert_defined_path(u'bur', PRON, None,
                                 u'bur(bura)+Pron+A3sg+Pnon+Loc(da[da])',
                                 u'bur(bura)+Pron+A3sg+Pnon+Abl(dan[dan])')
        self.assert_defined_path(u'şur', PRON, None,
                                 u'şur(şura)+Pron+A3sg+Pnon+Loc(da[da])',
                                 u'şur(şura)+Pron+A3sg+Pnon+Abl(dan[dan])')
        self.assert_defined_path(
            u'ner', PRON, SecondarySyntacticCategory.QUESTION,
            u'ner(nere)+Pron+Ques+A3sg+Pnon+Loc(de[de])',
            u'ner(nere)+Pron+Ques+A3sg+Pnon+Abl(den[den])')
Example #21
0
    def test_should_generate_transitions(self):
        parser_logger.setLevel(logging.DEBUG)
        suffix_applier_logger.setLevel(logging.DEBUG)

        self.assert_transitions_generated(
            u'elmaya', u'elma(elma)+Noun+A3sg+Pnon+Dat(+yA[ya])', [
                (u'elma', u'elma(elma)+Noun'),
                (u'elma', u'elma(elma)+Noun+A3sg'),
                (u'elma', u'elma(elma)+Noun+A3sg+Pnon'),
                (u'elmaya', u'elma(elma)+Noun+A3sg+Pnon+Dat(+yA[ya])'),
            ])

        self.assert_transitions_generated(
            u'armudu', u'armud(armut)+Noun+A3sg+Pnon+Acc(+yI[u])', [
                (u'armud', u'armud(armut)+Noun'),
                (u'armud', u'armud(armut)+Noun+A3sg'),
                (u'armud', u'armud(armut)+Noun+A3sg+Pnon'),
                (u'armudu', u'armud(armut)+Noun+A3sg+Pnon+Acc(+yI[u])'),
            ])

        self.assert_transitions_generated(
            u'yapabildiklerimizden',
            u'yap(yapmak)+Verb+Verb+Able(+yAbil[abil])+Pos+Noun+PastPart(dIk[dik])+A3pl(lAr[ler])+P1pl(+ImIz[imiz])+Abl(dAn[den])',
            [(u'yap', u'yap(yapmak)+Verb'),
             (u'yapabil', u'yap(yapmak)+Verb+Verb+Able(+yAbil[abil])'),
             (u'yapabil', u'yap(yapmak)+Verb+Verb+Able(+yAbil[abil])+Pos'),
             (u'yapabildik',
              u'yap(yapmak)+Verb+Verb+Able(+yAbil[abil])+Pos+Noun+PastPart(dIk[dik])'
              ),
             (u'yapabildikler',
              u'yap(yapmak)+Verb+Verb+Able(+yAbil[abil])+Pos+Noun+PastPart(dIk[dik])+A3pl(lAr[ler])'
              ),
             (u'yapabildiklerimiz',
              u'yap(yapmak)+Verb+Verb+Able(+yAbil[abil])+Pos+Noun+PastPart(dIk[dik])+A3pl(lAr[ler])+P1pl(+ImIz[imiz])'
              ),
             (u'yapabildiklerimizden',
              u'yap(yapmak)+Verb+Verb+Able(+yAbil[abil])+Pos+Noun+PastPart(dIk[dik])+A3pl(lAr[ler])+P1pl(+ImIz[imiz])+Abl(dAn[den])'
              )])

        self.assert_transitions_generated(
            u'yaptırttıramazmışız',
            u'yap(yapmak)+Verb+Verb+Caus(dIr[tır])+Verb+Caus(t[t])+Verb+Caus(dIr[tır])+Verb+Able(+yA[a])+Neg(mA[ma])+Aor(z[z])+Narr(mIş[mış])+A1pl(+Iz[ız])',
            [(u'yap', u'yap(yapmak)+Verb'),
             (u'yaptır', u'yap(yapmak)+Verb+Verb+Caus(dIr[tır])'),
             (u'yaptırt',
              u'yap(yapmak)+Verb+Verb+Caus(dIr[tır])+Verb+Caus(t[t])'),
             (u'yaptırttır',
              u'yap(yapmak)+Verb+Verb+Caus(dIr[tır])+Verb+Caus(t[t])+Verb+Caus(dIr[tır])'
              ),
             (u'yaptırttıra',
              u'yap(yapmak)+Verb+Verb+Caus(dIr[tır])+Verb+Caus(t[t])+Verb+Caus(dIr[tır])+Verb+Able(+yA[a])'
              ),
             (u'yaptırttırama',
              u'yap(yapmak)+Verb+Verb+Caus(dIr[tır])+Verb+Caus(t[t])+Verb+Caus(dIr[tır])+Verb+Able(+yA[a])+Neg(mA[ma])'
              ),
             (u'yaptırttıramaz',
              u'yap(yapmak)+Verb+Verb+Caus(dIr[tır])+Verb+Caus(t[t])+Verb+Caus(dIr[tır])+Verb+Able(+yA[a])+Neg(mA[ma])+Aor(z[z])'
              ),
             (u'yaptırttıramazmış',
              u'yap(yapmak)+Verb+Verb+Caus(dIr[tır])+Verb+Caus(t[t])+Verb+Caus(dIr[tır])+Verb+Able(+yA[a])+Neg(mA[ma])+Aor(z[z])+Narr(mIş[mış])'
              ),
             (u'yaptırttıramazmışız',
              u'yap(yapmak)+Verb+Verb+Caus(dIr[tır])+Verb+Caus(t[t])+Verb+Caus(dIr[tır])+Verb+Able(+yA[a])+Neg(mA[ma])+Aor(z[z])+Narr(mIş[mış])+A1pl(+Iz[ız])'
              )])
    def test_should_have_paths_for_pronouns_with_implicit_possession(self):
        parser_logger.setLevel(logging.DEBUG)
        suffix_applier_logger.setLevel(logging.DEBUG)

        self.predefined_paths._create_predefined_path_of_bazilari_bazisi()
        self.predefined_paths._create_predefined_path_of_kimileri_kimisi_kimi()
        self.predefined_paths._create_predefined_path_of_birileri_birisi_biri()
        self.predefined_paths._create_predefined_path_of_hicbirisi_hicbiri()
        self.predefined_paths._create_predefined_path_of_birbiri()
        self.predefined_paths._create_predefined_path_of_cogu_bircogu_coklari_bircoklari(
        )
        self.predefined_paths._create_predefined_path_of_birkaci()
        self.predefined_paths._create_predefined_path_of_cumlesi()
        self.predefined_paths._create_predefined_path_of_digeri_digerleri()

        self.morpheme_container_map = self.predefined_paths._morpheme_container_map

        PRON = SyntacticCategory.PRONOUN

        self.assert_defined_path(
            u'bazıları', PRON, None, u'bazıları(bazıları)+Pron+A3sg+P3sg',
            u'bazıları(bazıları)+Pron+A3sg+P1pl(mız[mız])',
            u'bazıları(bazıları)+Pron+A3sg+P2pl(nız[nız])')
        self.assert_defined_path(u'bazısı', PRON, None,
                                 u'bazısı(bazısı)+Pron+A3sg+P3sg')

        self.assert_defined_path(
            u'kimileri', PRON, None, u'kimileri(kimileri)+Pron+A3sg+P3sg',
            u'kimileri(kimileri)+Pron+A3sg+P1pl(miz[miz])',
            u'kimileri(kimileri)+Pron+A3sg+P2pl(niz[niz])')
        self.assert_defined_path(u'kimisi', PRON, None,
                                 u'kimisi(kimisi)+Pron+A3sg+P3sg')
        self.assert_defined_path(u'kimi', PRON, None,
                                 u'kimi(kimi)+Pron+A3sg+P3sg',
                                 u'kimi(kimi)+Pron+A3sg+P1pl(miz[miz])',
                                 u'kimi(kimi)+Pron+A3sg+P2pl(niz[niz])')

        self.assert_defined_path(
            u'birileri', PRON, None, u'birileri(birileri)+Pron+A3sg+P3sg',
            u'birileri(birileri)+Pron+A3sg+P1pl(miz[miz])',
            u'birileri(birileri)+Pron+A3sg+P2pl(niz[niz])')
        self.assert_defined_path(u'birisi', PRON, None,
                                 u'birisi(birisi)+Pron+A3sg+P3sg')
        self.assert_defined_path(u'biri', PRON, None,
                                 u'biri(biri)+Pron+A3sg+P3sg',
                                 u'biri(biri)+Pron+A3sg+P1pl(miz[miz])',
                                 u'biri(biri)+Pron+A3sg+P2pl(niz[niz])')

        self.assert_defined_path(u'hiçbirisi', PRON, None,
                                 u'hiçbirisi(hiçbirisi)+Pron+A3sg+P3sg')
        self.assert_defined_path(u'hiçbiri', PRON, None,
                                 u'hiçbiri(hiçbiri)+Pron+A3sg+P3sg',
                                 u'hiçbiri(hiçbiri)+Pron+A3sg+P1pl(miz[miz])',
                                 u'hiçbiri(hiçbiri)+Pron+A3sg+P2pl(niz[niz])')

        self.assert_defined_path(u'birbiri', PRON, None,
                                 u'birbiri(birbiri)+Pron+A3sg+P3sg',
                                 u'birbiri(birbiri)+Pron+A1pl+P1pl(miz[miz])',
                                 u'birbiri(birbiri)+Pron+A2pl+P2pl(niz[niz])')
        self.assert_defined_path(
            u'birbir', PRON, None,
            u'birbir(birbiri)+Pron+A3pl+P3pl(leri[leri])')

        self.assert_defined_path(u'çoğu', PRON, None,
                                 u'çoğu(çoğu)+Pron+A3sg+P3sg',
                                 u'çoğu(çoğu)+Pron+A3sg+P1pl(muz[muz])',
                                 u'çoğu(çoğu)+Pron+A3sg+P2pl(nuz[nuz])')
        self.assert_defined_path(u'birçoğu', PRON, None,
                                 u'birçoğu(birçoğu)+Pron+A3sg+P3sg',
                                 u'birçoğu(birçoğu)+Pron+A3sg+P1pl(muz[muz])',
                                 u'birçoğu(birçoğu)+Pron+A3sg+P2pl(nuz[nuz])')
        self.assert_defined_path(u'çokları', PRON, None,
                                 u'çokları(çokları)+Pron+A3sg+P3pl')
        self.assert_defined_path(u'birçokları', PRON, None,
                                 u'birçokları(birçokları)+Pron+A3sg+P3pl')

        self.assert_defined_path(u'birkaçı', PRON, None,
                                 u'birkaçı(birkaçı)+Pron+A3sg+P3sg',
                                 u'birkaçı(birkaçı)+Pron+A3sg+P1pl(mız[mız])',
                                 u'birkaçı(birkaçı)+Pron+A3sg+P2pl(nız[nız])')

        self.assert_defined_path(u'cümlesi', PRON, None,
                                 u'cümlesi(cümlesi)+Pron+A3sg+P3sg')

        self.assert_defined_path(u'diğeri', PRON, None,
                                 u'diğeri(diğeri)+Pron+A3sg+P3sg',
                                 u'diğeri(diğeri)+Pron+A3sg+P1pl(miz[miz])',
                                 u'diğeri(diğeri)+Pron+A3sg+P2pl(niz[niz])')
        self.assert_defined_path(
            u'diğerleri', PRON, None, u'diğerleri(diğerleri)+Pron+A3sg+P3pl',
            u'diğerleri(diğerleri)+Pron+A3sg+P1pl(miz[miz])',
            u'diğerleri(diğerleri)+Pron+A3sg+P2pl(niz[niz])')
 def setUp(self):
     logging.basicConfig(level=logging.INFO)
     parser_logger.setLevel(logging.INFO)
     suffix_applier_logger.setLevel(logging.INFO)
     logger.setLevel(logging.INFO)
 def setUp(self):
     logging.basicConfig(level=logging.INFO)
     parser_logger.setLevel(logging.INFO)
     suffix_applier_logger.setLevel(logging.INFO)