Пример #1
0
        // Encode returns the encoded-word form of s. If s is ASCII without special
        // characters, it is returned unchanged. The provided charset is the IANA
        // charset name of s. It is case insensitive.
        public static @string Encode(this WordEncoder e, @string charset, @string s)
        {
            if (!needsEncoding(s))
            {
                return(s);
            }

            return(e.encodeWord(charset, s));
        }
Пример #2
0
 // encodeWord encodes a string into an encoded-word.
 public static @string encodeWord(this WordEncoder e, @string charset, @string s)
 {
     ref strings.Builder buf = ref heap(out ptr <strings.Builder> _addr_buf);
    public void Init()
    {
        if (LANGUAGE == "ru")
        {
            LanguageID = SolarixGrammarEngineNET.GrammarEngineAPI.RUSSIAN_LANGUAGE;
        }
        else if (LANGUAGE == "en")
        {
            LanguageID = SolarixGrammarEngineNET.GrammarEngineAPI.ENGLISH_LANGUAGE;
        }

        encoder = new WordEncoder();
        encoder.load(@"e:\MVoice\lem\demo\ai\solarix\argon\WordShingles\bin\Debug");



        tags = new TagBook("featureset");

        if (LANGUAGE == "ru")
        {
            #region ru
            string str_tags =
                @"
  СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ТВОР ЧИСЛО:ЕД РОД:МУЖ
  СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ТВОР ЧИСЛО:ЕД РОД:ЖЕН
  СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ТВОР ЧИСЛО:ЕД РОД:СР
  СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ТВОР ЧИСЛО:МН

  СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ИМ ЧИСЛО:ЕД РОД:ЖЕН
  СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ИМ ЧИСЛО:ЕД РОД:МУЖ
  СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ИМ ЧИСЛО:ЕД РОД:СР
  СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ИМ ЧИСЛО:МН

  СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ЗВАТ

  СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:РОД ЧИСЛО:ЕД РОД:ЖЕН
  СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:РОД ЧИСЛО:ЕД РОД:МУЖ
  СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:РОД ЧИСЛО:ЕД РОД:СР
  СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:РОД ЧИСЛО:МН

  СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ПАРТ ЧИСЛО:ЕД РОД:ЖЕН
  СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ПАРТ ЧИСЛО:ЕД РОД:МУЖ
  СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ПАРТ ЧИСЛО:ЕД РОД:СР

  СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ВИН ЧИСЛО:ЕД РОД:ЖЕН
  СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ВИН ЧИСЛО:ЕД РОД:МУЖ ОДУШ:ОДУШ
  СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ВИН ЧИСЛО:ЕД РОД:МУЖ
  СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ВИН ЧИСЛО:ЕД РОД:СР
  СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ВИН ЧИСЛО:МН ОДУШ:ОДУШ
  СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ВИН ЧИСЛО:МН

  СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ДАТ ЧИСЛО:ЕД РОД:ЖЕН
  СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ДАТ ЧИСЛО:ЕД РОД:МУЖ
  СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ДАТ ЧИСЛО:ЕД РОД:СР
  СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ДАТ ЧИСЛО:МН

  СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ПРЕДЛ ЧИСЛО:ЕД РОД:ЖЕН
  СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ПРЕДЛ ЧИСЛО:ЕД РОД:МУЖ
  СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ПРЕДЛ ЧИСЛО:ЕД РОД:СР
  СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:ПРЕДЛ ЧИСЛО:МН

  СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:МЕСТ ЧИСЛО:ЕД РОД:ЖЕН
  СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:МЕСТ ЧИСЛО:ЕД РОД:МУЖ
  СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:МЕСТ ЧИСЛО:ЕД РОД:СР

  СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:СЧЕТН ЧИСЛО:ЕД РОД:ЖЕН
  СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:СЧЕТН ЧИСЛО:ЕД РОД:МУЖ
  СУЩЕСТВИТЕЛЬНОЕ ПАДЕЖ:СЧЕТН ЧИСЛО:ЕД РОД:СР

  ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ИМ ЧИСЛО:ЕД РОД:ЖЕН
  ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ИМ ЧИСЛО:ЕД РОД:МУЖ
  ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ИМ ЧИСЛО:ЕД РОД:СР
  ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ИМ ЧИСЛО:МН

  ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:РОД ЧИСЛО:ЕД РОД:ЖЕН
  ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:РОД ЧИСЛО:ЕД РОД:МУЖ
  ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:РОД ЧИСЛО:ЕД РОД:СР
  ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:РОД ЧИСЛО:МН

  ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ТВОР ЧИСЛО:ЕД РОД:ЖЕН
  ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ТВОР ЧИСЛО:ЕД РОД:МУЖ
  ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ТВОР ЧИСЛО:ЕД РОД:СР
  ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ТВОР ЧИСЛО:МН

  ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ВИН ЧИСЛО:ЕД РОД:ЖЕН
  ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ВИН ЧИСЛО:ЕД РОД:МУЖ
  ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ВИН ЧИСЛО:ЕД РОД:МУЖ ОДУШ:ОДУШ
  ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ВИН ЧИСЛО:ЕД РОД:СР
  ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ВИН ЧИСЛО:МН
  ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ВИН ЧИСЛО:МН ОДУШ:ОДУШ

  ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ДАТ ЧИСЛО:ЕД РОД:ЖЕН
  ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ДАТ ЧИСЛО:ЕД РОД:МУЖ
  ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ДАТ ЧИСЛО:ЕД РОД:СР
  ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ДАТ ЧИСЛО:МН

  ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ПРЕДЛ ЧИСЛО:ЕД РОД:ЖЕН
  ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ПРЕДЛ ЧИСЛО:ЕД РОД:МУЖ
  ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ПРЕДЛ ЧИСЛО:ЕД РОД:СР
  ПРИЛАГАТЕЛЬНОЕ ПАДЕЖ:ПРЕДЛ ЧИСЛО:МН

  ПРИЛАГАТЕЛЬНОЕ КРАТКИЙ РОД:ЖЕН ЧИСЛО:ЕД
  ПРИЛАГАТЕЛЬНОЕ КРАТКИЙ РОД:МУЖ ЧИСЛО:ЕД
  ПРИЛАГАТЕЛЬНОЕ КРАТКИЙ РОД:СР ЧИСЛО:ЕД
  ПРИЛАГАТЕЛЬНОЕ КРАТКИЙ ЧИСЛО:МН

  ПРИЛАГАТЕЛЬНОЕ СТЕПЕНЬ:СРАВН

  МЕСТОИМЕНИЕ ПАДЕЖ:ИМ ЧИСЛО:ЕД ЛИЦО:1
  МЕСТОИМЕНИЕ ПАДЕЖ:ИМ ЧИСЛО:МН ЛИЦО:1

  МЕСТОИМЕНИЕ ПАДЕЖ:ИМ ЧИСЛО:ЕД ЛИЦО:2
  МЕСТОИМЕНИЕ ПАДЕЖ:ИМ ЧИСЛО:МН ЛИЦО:2

  МЕСТОИМЕНИЕ ПАДЕЖ:ИМ ЧИСЛО:ЕД ЛИЦО:3 РОД:МУЖ
  МЕСТОИМЕНИЕ ПАДЕЖ:ИМ ЧИСЛО:ЕД ЛИЦО:3 РОД:ЖЕН
  МЕСТОИМЕНИЕ ПАДЕЖ:ИМ ЧИСЛО:ЕД ЛИЦО:3 РОД:СР
  МЕСТОИМЕНИЕ ПАДЕЖ:ИМ ЧИСЛО:МН ЛИЦО:3

  МЕСТОИМЕНИЕ ПАДЕЖ:РОД ЧИСЛО:ЕД
  МЕСТОИМЕНИЕ ПАДЕЖ:РОД ЧИСЛО:МН

  МЕСТОИМЕНИЕ ПАДЕЖ:ТВОР ЧИСЛО:ЕД
  МЕСТОИМЕНИЕ ПАДЕЖ:ТВОР ЧИСЛО:МН

  МЕСТОИМЕНИЕ ПАДЕЖ:ВИН ЧИСЛО:ЕД
  МЕСТОИМЕНИЕ ПАДЕЖ:ВИН ЧИСЛО:МН

  МЕСТОИМЕНИЕ ПАДЕЖ:ДАТ ЧИСЛО:ЕД
  МЕСТОИМЕНИЕ ПАДЕЖ:ДАТ ЧИСЛО:МН

  МЕСТОИМЕНИЕ ПАДЕЖ:ПРЕДЛ ЧИСЛО:ЕД
  МЕСТОИМЕНИЕ ПАДЕЖ:ПРЕДЛ ЧИСЛО:МН

  МЕСТОИМ_СУЩ ПАДЕЖ:ИМ
  МЕСТОИМ_СУЩ ПАДЕЖ:РОД
  МЕСТОИМ_СУЩ ПАДЕЖ:ТВОР
  МЕСТОИМ_СУЩ ПАДЕЖ:ВИН
  МЕСТОИМ_СУЩ ПАДЕЖ:ДАТ
  МЕСТОИМ_СУЩ ПАДЕЖ:ПРЕДЛ

  ЧИСЛИТЕЛЬНОЕ ПАДЕЖ:ИМ
  ЧИСЛИТЕЛЬНОЕ ПАДЕЖ:РОД
  ЧИСЛИТЕЛЬНОЕ ПАДЕЖ:ТВОР
  ЧИСЛИТЕЛЬНОЕ ПАДЕЖ:ВИН
  ЧИСЛИТЕЛЬНОЕ ПАДЕЖ:ДАТ
  ЧИСЛИТЕЛЬНОЕ ПАДЕЖ:ПРЕДЛ
  ЧИСЛИТЕЛЬНОЕ

ГЛАГОЛ НАКЛОНЕНИЕ:ИЗЪЯВ ВРЕМЯ:ПРОШЕДШЕЕ РОД:МУЖ ЧИСЛО:ЕД
ГЛАГОЛ НАКЛОНЕНИЕ:ИЗЪЯВ ВРЕМЯ:ПРОШЕДШЕЕ РОД:ЖЕН ЧИСЛО:ЕД
ГЛАГОЛ НАКЛОНЕНИЕ:ИЗЪЯВ ВРЕМЯ:ПРОШЕДШЕЕ РОД:СР ЧИСЛО:ЕД
ГЛАГОЛ НАКЛОНЕНИЕ:ИЗЪЯВ ВРЕМЯ:ПРОШЕДШЕЕ ЧИСЛО:МН
ГЛАГОЛ НАКЛОНЕНИЕ:ИЗЪЯВ ЛИЦО:1 ЧИСЛО:ЕД
ГЛАГОЛ НАКЛОНЕНИЕ:ИЗЪЯВ ЛИЦО:1 ЧИСЛО:МН
ГЛАГОЛ НАКЛОНЕНИЕ:ИЗЪЯВ ЛИЦО:2 ЧИСЛО:ЕД
ГЛАГОЛ НАКЛОНЕНИЕ:ИЗЪЯВ ЛИЦО:2 ЧИСЛО:МН
ГЛАГОЛ НАКЛОНЕНИЕ:ИЗЪЯВ ЛИЦО:3 ЧИСЛО:ЕД
ГЛАГОЛ НАКЛОНЕНИЕ:ИЗЪЯВ ЛИЦО:3 ЧИСЛО:МН

  ГЛАГОЛ НАКЛОНЕНИЕ:ИЗЪЯВ
  ГЛАГОЛ НАКЛОНЕНИЕ:ПОБУД
  ГЛАГОЛ

  ВВОДНОЕ
  БЕЗЛИЧ_ГЛАГОЛ
  NUM_WORD
  ИНФИНИТИВ
  ДЕЕПРИЧАСТИЕ
  ПРЕДЛОГ
  ПОСЛЕЛОГ
  СОЮЗ
  ЧАСТИЦА
  ПУНКТУАТОР
  НАРЕЧИЕ
  BETH:BEGIN{}
  BETH:END{}
  UNKNOWNENTRIES
  ПРИТЯЖ_ЧАСТИЦА
  ЕДИНИЦА_ИЗМЕРЕНИЯ
  ВОСКЛ_ГЛАГОЛ

  ПРЕФИКС_СОСТАВ_ПРИЛ
  ПРЕФИКС_СОСТАВ_СУЩ
  ";
            #endregion ru

            tags.Load(str_tags, gren);
        }
        else if (LANGUAGE == "en")
        {
            #region en
            string str_tags =
                @"
   ENG_VERB
   ENG_ARTICLE
   ENG_NOUN
   ENG_ADVERB
   ENG_ADJECTIVE
   ENG_PREP
   ENG_CONJ
   ENG_PRONOUN
   ENG_POSTPOS
   ENG_NUMERAL
   ENG_INTERJECTION
   ENG_POSSESSION
   ENG_COMPOUND_PRENOUN
   ENG_COMPOUND_PREADJ
   ENG_COMPOUND_PREVERB
   ENG_COMPOUND_PREADV
   ENG_PARTICLE

  NUM_WORD
  ПУНКТУАТОР
  BETH:BEGIN{}
  BETH:END{}
  UNKNOWNENTRIES
";
            #endregion en

            tags.Load(str_tags, gren);
        }
        else
        {
            throw new NotImplementedException();
        }

        return;
    }
Пример #4
0
        public void encode_big_assume_result_is_gIb()
        {
            var wordEncoder = new WordEncoder();

            Assert.Equal("gIb", wordEncoder.Encode("big"));
        }
Пример #5
0
        public void encode_ab_assume_result_equals_bA()
        {
            var wordEncoder = new WordEncoder();

            Assert.Equal("bA", wordEncoder.Encode("ab"));
        }
Пример #6
0
        public void encode_jumped_assume_result_equals_dEpMuJ()
        {
            var wordEncoder = new WordEncoder();

            Assert.Equal("dEpMuJ", wordEncoder.Encode("jumped"));
        }
Пример #7
0
        public void encode_empty_string_assume_result_is_empty()
        {
            var wordEncoder = new WordEncoder();

            Assert.Equal(string.Empty, wordEncoder.Encode("    "));
        }
Пример #8
0
        public void encode_number_assume_result_is_rEbMuN()
        {
            var wordEncoder = new WordEncoder();

            Assert.Equal("rEbMuN", wordEncoder.Encode("number"));
        }