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()); }
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>())); }
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()); }
public WebAnalyzer(MorpherClient client) { _client = client.Russian; }
public WebAnalyzer(MorpherClient client) { _client = client.Ukrainian; }
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; }