예제 #1
0
        public void TestDeasciify()
        {
            var fsm = new FsmMorphologicalAnalyzer();
            var simpleDeasciifier = new SimpleDeasciifier(fsm);
            var simpleAsciifier   = new SimpleAsciifier();

            for (var i = 0; i < fsm.GetDictionary().Size(); i++)
            {
                var word  = (TxtWord)fsm.GetDictionary().GetWord(i);
                var count = 0;
                for (var j = 0; j < word.GetName().Length; j++)
                {
                    switch (word.GetName()[j])
                    {
                    case 'ç':
                    case 'ö':
                    case 'ğ':
                    case 'ü':
                    case 'ş':
                    case 'ı':
                        count++;
                        break;
                    }
                }
                if (count > 0 && !word.GetName().EndsWith("fulü") && (word.IsNominal() || word.IsAdjective() || word.IsAdverb() || word.IsVerb()))
                {
                    var asciified = simpleAsciifier.Asciify(word);
                    if (simpleDeasciifier.CandidateList(new Word(asciified)).Count == 1)
                    {
                        var deasciified = simpleDeasciifier.Deasciify(new Sentence(asciified)).ToString();
                        Assert.AreEqual(word.GetName(), deasciified);
                    }
                }
            }
        }
        public void TestDeasciify()
        {
            var fsm   = new FsmMorphologicalAnalyzer();
            var nGram = new NGram <string>("../../../ngram.txt");

            nGram.CalculateNGramProbabilities(new NoSmoothing <string>());
            var nGramDeasciifier = new NGramDeasciifier(fsm, nGram, true);
            var simpleAsciifier  = new SimpleAsciifier();
            var corpus           = new Corpus.Corpus("../../../corpus.txt");

            for (var i = 0; i < corpus.SentenceCount(); i++)
            {
                var sentence = corpus.GetSentence(i);
                for (var j = 1; j < sentence.WordCount(); j++)
                {
                    if (fsm.MorphologicalAnalysis(sentence.GetWord(j).GetName()).Size() > 0)
                    {
                        var asciified = simpleAsciifier.Asciify(sentence.GetWord(j));
                        if (!asciified.Equals(sentence.GetWord(j).GetName()))
                        {
                            var deasciified = nGramDeasciifier.Deasciify(
                                new Sentence(sentence.GetWord(j - 1).GetName() + " " + sentence.GetWord(j).GetName()));
                            Assert.AreEqual(sentence.GetWord(j).GetName(), deasciified.GetWord(1).GetName());
                        }
                    }
                }
            }
        }
예제 #3
0
 public void Setup()
 {
     simpleAsciifier = new SimpleAsciifier();
 }