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))
Beispiel #2
0
 def test_SpellCheck(self):
     original = [Sentence("demokratik cumhuriyet en kıymetli varlığımızdır"),
             Sentence("bu tablodaki değerler zedelenmeyecektir"),
             Sentence("milliyet'in geleneksel yılın sporcusu anketi 43. yaşını doldurdu"),
             Sentence("demokrasinin icadı bu ayrımı bulandırdı"),
             Sentence("dışişleri müsteşarı Öymen'in 1997'nin ilk aylarında Bağdat'a gitmesi öngörülüyor"),
             Sentence("büyüdü , palazlandı , devleti ele geçirdi"),
             Sentence("her maskenin ciltte kalma süresi farklıdır"),
             Sentence("yılın son ayında 10 gazeteci gözaltına alındı"),
             Sentence("iki pilotun kullandığı uçakta bir hostes görev alıyor"),
             Sentence("son derece kısıtlı kelimeler çerçevesinde kendilerini uzun cümlelerle ifade edebiliyorlar")]
     modified = [Sentence("demokratik cumhüriyet en kımetli varlıgımızdır"),
             Sentence("bu tblodaki değerlğr zedelenmeyecüktir"),
             Sentence("milliyet'in geeneksel yılın spoşcusu ankşti 43. yeşını doldürdu"),
             Sentence("demokrasinin icşdı bu ayrmıı bulandürdı"),
             Sentence("dışişleri mütseşarı Öymen'in 1997'nin ilk aylğrında Bağdat'a gitmesi öngşrülüyor"),
             Sentence("büyüdü , palazandı , devltei ele geçridi"),
             Sentence("her makenin cültte kalma sürdsi farlkıdır"),
             Sentence("yılın sno ayında 10 gazteci gözlatına alündı"),
             Sentence("iki piotun kulçandığı uçkata üir hotes görçv alyıor"),
             Sentence("son deece kısütlı keilmeler çeçevesinde kendülerini uzuü cümllerle ifüde edbeiliyorlar")]
     fsm = FsmMorphologicalAnalyzer("../turkish_dictionary.txt", "../turkish_misspellings.txt",
                                    "../turkish_finite_state_machine.xml")
     nGram = NGram("../ngram.txt")
     nGram.calculateNGramProbabilitiesSimple(NoSmoothing())
     nGramSpellChecker = NGramSpellChecker(fsm, nGram)
     for i in range(len(modified)):
         self.assertEqual(original[i].toString(), nGramSpellChecker.spellCheck(modified[i]).toString())
 def test_Disambiguation(self):
     fsm = FsmMorphologicalAnalyzer("../turkish_dictionary.txt",
                                    "../turkish_misspellings.txt",
                                    "../turkish_finite_state_machine.xml")
     corpus = DisambiguationCorpus("../penntreebank.txt")
     algorithm = RootFirstDisambiguation()
     algorithm.train(corpus)
     correctParse = 0
     correctRoot = 0
     for i in range(corpus.sentenceCount()):
         sentenceAnalyses = fsm.robustMorphologicalAnalysis(
             corpus.getSentence(i))
         fsmParses = algorithm.disambiguate(sentenceAnalyses)
         for j in range(corpus.getSentence(i).wordCount()):
             word = corpus.getSentence(i).getWord(j)
             if isinstance(word, DisambiguatedWord):
                 if fsmParses[j].transitionList() == word.getParse(
                 ).__str__():
                     correctParse = correctParse + 1
                 if fsmParses[j].getWord() == word.getParse().getWord():
                     correctRoot = correctRoot + 1
     self.assertEqual(0.9590, (correctRoot + 0.0) / corpus.numberOfWords(),
                      0.002)
     self.assertEqual(0.8639, (correctParse + 0.0) / corpus.numberOfWords(),
                      0.002)
 def test_Deasciify2(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, False)
     self.assertEqual("noter hakkında", nGramDeasciifier.deasciify(Sentence("noter hakkinda")).__str__())
     self.assertEqual("sandık medrese", nGramDeasciifier.deasciify(Sentence("sandik medrese")).__str__())
     self.assertEqual("kuran'ı karşılıklı", nGramDeasciifier.deasciify(Sentence("kuran'ı karsilikli")).__str__())
Beispiel #5
0
    def __init__(self, corpus, example, pdf_path=None):
        self.corpus = corpus
        self.example = example
        self.result = None
        self.pdf_path = pdf_path

        if self.example == Tool.KELIMEYI_OGELERINE_AYIR:
            self.result = zemberekTool.ogelere_ayir(corpus)
            if self.result is None:
                self.result = "Cümle yerine kelime girmeniz gerekiyor veya girdiğiniz kelime yanlış"

        if self.example == Tool.CUMLEDE_GECEN_KOKLERI_BUL:
            self.result = zemberekTool.metinde_gecen_kokleri_bul(self.corpus)

        if self.example == Tool.CUMLEYI_PARCALARA_AYIR:
            self.result = zemberekTool.cumleyi_parcalara_ayir(self.corpus)

        if self.example == Tool.KELIME_ONERICI:
            self.result = zemberekTool.kelime_onerici(self.corpus)
            if self.result is None:
                self.result = "Cümle yerine kelime girmeniz gerekiyor"

        if self.example == Tool.KELIME_HECELE:
            self.result = zemberekTool.kelime_hecele(self.corpus)
            if self.result is None:
                self.result = "Cümle yerine kelime girmeniz gerekiyor"

        if self.example == Tool.NLTK_FILES_DOWNLOAD:
            self.result = nltk_download()

        if self.example == Tool.PERSONIFICATION_COPULA:
            self.result = personal(self.corpus, Person.FIRST, is_plural=True)
            if self.result is None:
                self.result = "Cümle yerine kelime girmeniz gerekiyor"

        if self.example == Tool.INFERENTIAL_MOOD:
            self.result = inferential(self.corpus, Person.SECOND, is_plural=False)
            if self.result is None:
                self.result = "Cümle yerine kelime girmeniz gerekiyor"

        if self.example == Tool.CONVERT_PDF_TO_TXT:
            self.result = pdfconverter.PDFParser(pdf_path).parse()
            if self.result is None:
                self.result = "PDF path yanlış olabilir veya PDF olmayabilir"

        if self.example == Tool.SENTENCE_CORRECTOR:
            fsm = FsmMorphologicalAnalyzer("./SpellChecker/turkish_dictionary.txt",
                                           "./SpellChecker/turkish_misspellings.txt",
                                           "./SpellChecker/turkish_finite_state_machine.xml")
            spellChecker = SimpleSpellChecker(fsm)
            sentence = Sentence(self.corpus)
            self.result = spellChecker.spellCheck(sentence)
 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_SpellCheck(self):
     fsm = FsmMorphologicalAnalyzer("../turkish_dictionary.txt",
                                    "../turkish_misspellings.txt",
                                    "../turkish_finite_state_machine.xml")
     simpleSpellChecker = SimpleSpellChecker(fsm)
     input = open("../misspellings.txt")
     lines = input.readlines()
     for line in lines:
         items = line.strip().split(" ")
         misspelled = items[0]
         corrected = items[1]
         self.assertEqual(
             corrected,
             simpleSpellChecker.spellCheck(Sentence(misspelled)).toString())
 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())
 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")
Beispiel #10
0
 def test_SpellCheckSurfaceForm(self):
     fsm = FsmMorphologicalAnalyzer("../turkish_dictionary.txt",
                                    "../turkish_misspellings.txt",
                                    "../turkish_finite_state_machine.xml")
     nGram = NGram("../ngram.txt")
     nGram.calculateNGramProbabilitiesSimple(NoSmoothing())
     nGramSpellChecker = NGramSpellChecker(fsm, nGram, False)
     self.assertEqual(
         "noter hakkında",
         nGramSpellChecker.spellCheck(Sentence("noter hakkınad")).__str__())
     self.assertEqual(
         "arçelik'in çamaşır",
         nGramSpellChecker.spellCheck(
             Sentence("arçelik'in çamşaır")).__str__())
     self.assertEqual(
         "ruhsat yanında",
         nGramSpellChecker.spellCheck(Sentence("ruhset yanında")).__str__())
 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_Disambiguation(self):
     fsm = FsmMorphologicalAnalyzer()
     corpus = DisambiguationCorpus("../penntreebank.txt")
     algorithm = HmmDisambiguation()
     algorithm.train(corpus)
     correctParse = 0
     correctRoot = 0
     for i in range(corpus.sentenceCount()):
         sentenceAnalyses = fsm.robustMorphologicalAnalysis(corpus.getSentence(i))
         fsmParses = algorithm.disambiguate(sentenceAnalyses)
         for j in range(corpus.getSentence(i).wordCount()):
             word = corpus.getSentence(i).getWord(j)
             if isinstance(word, DisambiguatedWord):
                 if fsmParses[j].transitionList().lower() == word.getParse().__str__().lower():
                     correctParse = correctParse + 1
                 if fsmParses[j].getWord() == word.getParse().getWord():
                     correctRoot = correctRoot + 1
     self.assertAlmostEqual(0.9233, (correctRoot + 0.0) / corpus.numberOfWords(), 3)
     self.assertAlmostEqual(0.8630, (correctParse + 0.0) / corpus.numberOfWords(), 3)
Beispiel #13
0
 def test_Deasciify(self):
     fsm = FsmMorphologicalAnalyzer("../turkish_dictionary.txt",
                                    "../turkish_misspellings.txt",
                                    "../turkish_finite_state_machine.xml")
     simpleDeasciifier = SimpleDeasciifier(fsm)
     simpleAsciifier = SimpleAsciifier()
     for i in range(fsm.getDictionary().size()):
         word = fsm.getDictionary().getWordWithIndex(i)
         count = 0
         for j in range(len(word.getName())):
             if word.getName()[j] == 'ç' or word.getName()[j] == 'ö' or word.getName()[j] == 'ğ' or \
                     word.getName()[j] == 'ü' or word.getName()[j] == 'ş' or word.getName()[j] == 'ı':
                 count = count + 1
         if (count > 0 and not word.getName().endswith("fulü")
                 and (word.isNominal() or word.isAdjective()
                      or word.isAdverb() or word.isVerb())):
             asciified = simpleAsciifier.asciifyWord(word)
             if len(simpleDeasciifier.candidateList(Word(asciified))) == 1:
                 deasciified = simpleDeasciifier.deasciify(
                     Sentence(asciified)).toString()
                 self.assertEqual(word.getName(), deasciified)
Beispiel #14
0
 def setUp(self) -> None:
     self.fsm = FsmMorphologicalAnalyzer()
     self.wordNet = WordNet()
 def setUp(self) -> None:
     self.fsm = FsmMorphologicalAnalyzer()
Beispiel #16
0
 def setUp(self) -> None:
     self.fsm = FsmMorphologicalAnalyzer(
         "../turkish_dictionary.txt", "../turkish_misspellings.txt",
         "../turkish_finite_state_machine.xml")