Exemplo n.º 1
0
        public void UkrainianDeclension()
        {
            var webClient = new Mock <IWebClient>();

            webClient.Setup(client => client.QueryString).Returns(new NameValueCollection());
            webClient.Setup(client => client.DownloadString(It.IsAny <string>())).Returns(DeclensionResultText);
            var morpherClient = new MorpherClient(null, null, webClient.Object);

            var declension = new Declension(morpherClient.Ukrainian);

            IParse parsedResult = declension.Parse("помідор");

            Assert.IsNotNull(parsedResult);
            Assert.AreEqual("помідор", parsedResult.Nominative);
            Assert.AreEqual("помідора", parsedResult.Genitive);
            Assert.AreEqual("помідору", parsedResult.Dative);
            Assert.AreEqual("помідора", parsedResult.Accusative);
            Assert.AreEqual("помідором", parsedResult.Instrumental);
            Assert.AreEqual("помідорі", parsedResult.Prepositional);
            Assert.AreEqual("помідоре", parsedResult.Vocative);
            Assert.IsNull(parsedResult.Gender);

            webClient.Verify(client => client.QueryString, Times.AtLeastOnce());
            webClient.Verify(client => client.DownloadString(It.IsAny <string>()), Times.Once());
        }
Exemplo n.º 2
0
    public AliceResponse WebHook([FromBody] AliceRequest req)
    {
        var str = req.Request.Command.Split(' ');

        var m = new MorpherClient();

        str = str.Where(x => !string.IsNullOrWhiteSpace(x)).Select(x => m.Russian.Parse(x).Plural.Nominative).ToArray();

        var s = str.FirstOrDefault(x => replies.ContainsKey(x));

        if (s != null)
        {
            return(req.Reply(replies[s]));
        }

        return(req.Reply("я не знаю такой цвет"));
    }
        public void RussianNumberSpelling()
        {
            var webClient = new Mock <IWebClient>();

            webClient.Setup(client => client.QueryString).Returns(new NameValueCollection());
            webClient.Setup(client => client.DownloadString(It.IsAny <string>())).Returns(SpellResultText);
            var morpherClient = new MorpherClient(null, null, webClient.Object);

            var numberSpelling = new NumberSpelling(morpherClient.Russian);

            AssertNumberSpelling(numberSpelling,
                                 "один миллиард двести тридцать четыре миллиона пятьсот шестьдесят семь тысяч восемьсот девяносто", "рублей", Case.Nominative);

            AssertNumberSpelling(numberSpelling,
                                 "одного миллиарда двухсот тридцати четырёх миллионов пятисот шестидесяти семи тысяч восьмисот девяноста", "рублей", Case.Genitive);

            AssertNumberSpelling(numberSpelling,
                                 "одному миллиарду двумстам тридцати четырём миллионам пятистам шестидесяти семи тысячам восьмистам девяноста", "рублям", Case.Dative);

            AssertNumberSpelling(numberSpelling,
                                 "один миллиард двести тридцать четыре миллиона пятьсот шестьдесят семь тысяч восемьсот девяносто", "рублей", Case.Accusative);

            AssertNumberSpelling(numberSpelling,
                                 "одним миллиардом двумястами тридцатью четырьмя миллионами пятьюстами шестьюдесятью семью тысячами восьмьюстами девяноста", "рублями", Case.Instrumental);

            AssertNumberSpelling(numberSpelling,
                                 "одном миллиарде двухстах тридцати четырёх миллионах пятистах шестидесяти семи тысячах восьмистах девяноста", "рублях", Case.Prepositional);

            Assert.Throws <NotImplementedException>(() =>
            {
                string unit = "рубль";
                numberSpelling.Spell(1, ref unit, Case.Locative);
            });


            string nullUnit = null;

            Assert.IsNull(numberSpelling.Spell(1, ref nullUnit, Case.Prepositional));

            webClient.Verify(client => client.QueryString);
            webClient.Verify(client => client.DownloadString(It.IsAny <string>()));
        }
Exemplo n.º 4
0
        public void UkrainianNumberSpelling()
        {
            var webClient = new Mock <IWebClient>();

            webClient.Setup(client => client.QueryString).Returns(new NameValueCollection());
            webClient.Setup(client => client.DownloadString(It.IsAny <string>())).Returns(SpellText);
            var morpherClient = new MorpherClient(null, null, webClient.Object);

            var numberSpelling = new NumberSpelling(morpherClient.Ukrainian);

            AssertNumberSpelling(numberSpelling,
                                 "один мільярд двісті тридцять чотири мільйони п'ятсот шістдесят сім тисяч вісімсот дев'яносто", "рублів", Case.Nominative);

            AssertNumberSpelling(numberSpelling,
                                 "одного мільярда двохсот тридцяти чотирьох мільйонів п'ятисот шістдесяти семи тисяч восьмисот дев'яноста", "рублів", Case.Genitive);

            AssertNumberSpelling(numberSpelling,
                                 "одному мільярду двомстам тридцяти чотирьом мільйонам п'ятистам шістдесяти семи тисячам восьмистам дев'яноста", "рублям", Case.Dative);

            AssertNumberSpelling(numberSpelling,
                                 "один мільярд двісті тридцять чотири мільйони п'ятсот шістдесят сім тисяч вісімсот дев'яносто", "рублів", Case.Accusative);

            AssertNumberSpelling(numberSpelling,
                                 "одним мільярдом двомастами тридцятьма чотирма мільйонами п'ятьмастами шістдесятьма сьома тисячами вісьмастами дев'яноста", "рублями", Case.Instrumental);

            AssertNumberSpelling(numberSpelling,
                                 "одному мільярді двохстах тридцяти чотирьох мільйонах п'ятистах шістдесяти семи тисячах восьмистах дев'яноста", "рублях", Case.Prepositional);

            AssertNumberSpelling(numberSpelling,
                                 "один мільярд двісті тридцять чотири мільйони п'ятсот шістдесят сім тисяч вісімсот дев'яносто", "рублів", Case.Vocative);


            string nullUnit = null;

            Assert.IsNull(numberSpelling.Spell(1, ref nullUnit, Case.Prepositional));

            webClient.Verify(client => client.QueryString);
            webClient.Verify(client => client.DownloadString(It.IsAny <string>()));
        }
        public void RussianDeclension()
        {
            var webClient = new Mock <IWebClient>();

            webClient.Setup(client => client.QueryString).Returns(new NameValueCollection());
            webClient.Setup(client => client.DownloadString(It.IsAny <string>())).Returns(DeclensionResultText);
            var morpherClient = new MorpherClient(null, null, webClient.Object);

            var declension = new Declension(morpherClient.Russian);

            IParse parsedResult = declension.Parse("помидор");

            Assert.IsNotNull(parsedResult);
            Assert.AreEqual("помидор", parsedResult.Nominative);
            Assert.AreEqual("помидора", parsedResult.Genitive);
            Assert.AreEqual("помидору", parsedResult.Dative);
            Assert.AreEqual("помидор", parsedResult.Accusative);
            Assert.AreEqual("помидором", parsedResult.Instrumental);
            Assert.AreEqual("помидоре", parsedResult.Prepositional);
            Assert.IsNull(parsedResult.Locative);

            Assert.AreEqual("помидоры", parsedResult.Plural.Nominative);
            Assert.AreEqual("помидоров", parsedResult.Plural.Genitive);
            Assert.AreEqual("помидорам", parsedResult.Plural.Dative);
            Assert.AreEqual("помидоры", parsedResult.Plural.Accusative);
            Assert.AreEqual("помидорами", parsedResult.Plural.Instrumental);
            Assert.AreEqual("помидорах", parsedResult.Plural.Prepositional);

            Assert.IsNull(parsedResult.Gender);

            Assert.Throws <NotImplementedException>(() => { var fail = parsedResult.IsAnimate; });
            Assert.Throws <NotImplementedException>(() => { var fail = parsedResult.Paucal; });

            webClient.Verify(client => client.QueryString, Times.AtLeastOnce());
            webClient.Verify(client => client.DownloadString(It.IsAny <string>()), Times.Once());
        }
Exemplo n.º 6
0
 public WebAnalyzer(MorpherClient client)
 {
     _client = client.Russian;
 }
Exemplo n.º 7
0
 public WebAnalyzer(MorpherClient client)
 {
     _client = client.Ukrainian;
 }
Exemplo n.º 8
0
        private static void Main(string[] args)
        {
            Console.OutputEncoding = Encoding.UTF8;

            // Вы можете передать токен в качестве аргумента конструктора.
            // Guid token = Guid.Parse("17ce56c3-934f-453a-9ef7-cc1feec4e344");
            // Если вы используете "Морфер.Сервер" (http://morpher.ru/webservice/local/),
            // то вы можете указать в качестве url адрес вашего локального сервера:
            // string url = "http://ws3.morpher.ru"
            // IMorpherClient morpherClient = new MorpherClient(token, url);
            // !!! Не используйте этот токен в production !!!
            var          morpherClient = new MorpherClient(Guid.Parse("a8dab5fe-7a47-4c17-84ea-46facb7d19fe"));
            const string premium       = "*****";

            Console.WriteLine("Склонение на русском языке:");
            Russian.DeclensionResult russianDeclensionResult = morpherClient.Russian.Parse("Соединенное королевство");
            Console.WriteLine("Именительный падеж: {0}", russianDeclensionResult.Nominative);
            Console.WriteLine(" Родительный падеж: {0}", russianDeclensionResult.Genitive);
            Console.WriteLine("   Дательный падеж: {0}", russianDeclensionResult.Dative);
            Console.WriteLine(" Винительный падеж: {0}", russianDeclensionResult.Accusative);
            Console.WriteLine("Творительный падеж: {0}", russianDeclensionResult.Instrumental);
            Console.WriteLine("  Предложный падеж: {0}", russianDeclensionResult.Prepositional);
            Console.WriteLine("     Местный падеж: {0}", russianDeclensionResult.PrepositionalWithO ?? premium);
            Console.WriteLine("               Где? {0}", russianDeclensionResult.Where ?? premium);
            Console.WriteLine("              Куда? {0}", russianDeclensionResult.To ?? premium);
            Console.WriteLine("            Откуда? {0}", russianDeclensionResult.From ?? premium);
            if (russianDeclensionResult.Plural != null)
            {
                Console.WriteLine("Именительный падеж: {0}", russianDeclensionResult.Plural.Nominative);
                Console.WriteLine(" Родительный падеж: {0}", russianDeclensionResult.Plural.Genitive);
                Console.WriteLine("   Дательный падеж: {0}", russianDeclensionResult.Plural.Dative);
                Console.WriteLine(" Винительный падеж: {0}", russianDeclensionResult.Plural.Accusative);
                Console.WriteLine("Творительный падеж: {0}", russianDeclensionResult.Plural.Instrumental);
                Console.WriteLine("  Предложный падеж: {0}", russianDeclensionResult.Plural.Prepositional);
                Console.WriteLine("     Местный падеж: {0}", russianDeclensionResult.Plural.PrepositionalWithO ?? premium);
            }
            Console.WriteLine();

            Console.WriteLine("Определение рода на русском языке:");
            Console.WriteLine("Род: {0}", russianDeclensionResult.Gender?.ToString() ?? premium);
            Console.WriteLine();

            Console.WriteLine("Разделение ФИО на части:");
            Russian.DeclensionResult nameDeclensionResult = morpherClient.Russian.Parse("Полад Бюльбюль-оглы Мамедов");
            Console.WriteLine("Ф: " + nameDeclensionResult.FullName.Surname);
            Console.WriteLine("И: " + nameDeclensionResult.FullName.Name);
            Console.WriteLine("О: " + nameDeclensionResult.FullName.Pantronymic);
            Console.WriteLine();

            Console.WriteLine("Склонение ФИО на украинском языке:");
            Ukrainian.DeclensionResult ukrainianDeclensionResult = morpherClient.Ukrainian.Parse("Крутько Катерина Володимирiвна");
            Console.WriteLine(" Називний вiдмiнок: " + ukrainianDeclensionResult.Nominative);
            Console.WriteLine("  Родовий вiдмiнок: " + ukrainianDeclensionResult.Genitive);
            Console.WriteLine("Давальний вiдмiнок: " + ukrainianDeclensionResult.Dative);
            Console.WriteLine("Знахідний вiдмiнок: " + ukrainianDeclensionResult.Accusative);
            Console.WriteLine("  Орудний вiдмiнок: " + ukrainianDeclensionResult.Instrumental);
            Console.WriteLine(" Місцевий вiдмiнок: " + ukrainianDeclensionResult.Prepositional);
            Console.WriteLine("  Кличний вiдмiнок: " + ukrainianDeclensionResult.Vocative);
            Console.WriteLine();

            Console.WriteLine("Определение рода на украинском языке:");
            Console.WriteLine("Род: {0}", ukrainianDeclensionResult.Gender?.ToString() ?? premium);
            Console.WriteLine();

            Console.WriteLine("Сумма прописью на двух языках:");
            uint number = 2513;

            Russian.NumberSpellingResult russianNumberSpellingResult = morpherClient.Russian.Spell(number, "рубль");
            Console.WriteLine("В размере {0} ({1}) {2}", number,
                              russianNumberSpellingResult.NumberDeclension.Genitive,
                              russianNumberSpellingResult.UnitDeclension.Genitive);
            Ukrainian.NumberSpellingResult ukrainianNumberSpellingResult = morpherClient.Ukrainian.Spell(number, "рубль");
            Console.WriteLine("У розмірі {0} ({1}) {2}", number,
                              ukrainianNumberSpellingResult.NumberDeclension.Genitive,
                              ukrainianNumberSpellingResult.UnitDeclension.Genitive);
            Console.WriteLine();

            Console.WriteLine("Склонение прилагательных по родам:");
            Russian.AdjectiveGenders adjectiveGenders = morpherClient.Russian.AdjectiveGenders("уважаемый");
            Console.WriteLine("Женский род:         " + adjectiveGenders.Feminie);
            Console.WriteLine("Средний род:         " + adjectiveGenders.Neuter);
            Console.WriteLine("Множественное число: " + adjectiveGenders.Plural);
            Console.WriteLine();

            Console.WriteLine("Образование прилагательных:");
            List <string> adjectives = morpherClient.Russian.Adjectivize("Мытищи");

            adjectives.ForEach(Console.WriteLine);
            Console.WriteLine();


            //Работа с пользовательским словарем для ws3.morpher.ru работает только при наличии токена
            // Для local сервиса токен не нужен.
            // Добавляем новое пользоватеслькое исправление
            Russian.CorrectionEntry entry = new Russian.CorrectionEntry()
            {
                Singular = new Russian.CorrectionForms()
                {
                    Nominative = "Кошка",
                    Dative     = "Пантере"
                },
                Plural = new Russian.CorrectionForms()
                {
                    Dative = "Пантерам"
                }
            };
            morpherClient.Russian.UserDict.AddOrUpdate(entry);

            Console.WriteLine("Склонение с исправлением:");
            Russian.DeclensionResult spellWithCorrection = morpherClient.Russian.Parse("Кошка");
            Console.WriteLine("           Именительный падеж: {0}", spellWithCorrection.Nominative);
            Console.WriteLine("              Дательный падеж: {0}", spellWithCorrection.Dative);
            Console.WriteLine("Дательный падеж множсетвенное: {0}", spellWithCorrection.Plural.Dative);
            Console.WriteLine();

            Console.WriteLine("Получаем список всех исправлений:");
            IEnumerable <Russian.CorrectionEntry> corrections = morpherClient.Russian.UserDict.GetAll();

            foreach (var correctionEntry in corrections)
            {
                Console.WriteLine(correctionEntry.Singular.Nominative);
            }

            Console.WriteLine();
            // Удаляем исправление
            // True если исправление было удалено успешно, false если исправление не найдено в бд.
            bool success = morpherClient.Russian.UserDict.Remove("Кошка");

            Console.WriteLine("Склонение после удаления исправления:");
            Russian.DeclensionResult spellWithoutCorrection = morpherClient.Russian.Parse("Кошка");
            Console.WriteLine("           Именительный падеж: {0}", spellWithoutCorrection.Nominative);
            Console.WriteLine("              Дательный падеж: {0}", spellWithoutCorrection.Dative);
            Console.WriteLine("Дательный падеж множсетвенное: {0}", spellWithoutCorrection.Plural.Dative);
            Console.WriteLine();

            Console.WriteLine("Обработка ошибок сервиса:");
            try
            {
                morpherClient.Russian.Parse("wuf");
            }
            catch (MorpherWebServiceException exc)
            {
                Console.WriteLine("Code: {0} Message: {1}", exc.Code, exc.Message);
            }
            Console.WriteLine();

            Console.WriteLine("Остаток запросов на сегодня: " + morpherClient.QueriesLeftForToday());
            Console.WriteLine();

            Console.WriteLine(premium + " означает, что функция доступна на платных тарифах. Подробнее http://morpher.ru/WebServiceV3.aspx#premium");
        }
 public WebExceptionDictionary(MorpherClient client)
 {
     _client = client.Russian;
 }
 public WebExceptionDictionary(MorpherClient client)
 {
     _client = client.Ukrainian;
 }