Автоматическое склонение слов с использованием внешнего сервиса
В данной статье приведен пример сценария, использующего внешний сервис (http://morpher.ru) для склонения слов (в нашем случае – ФИО пользователя).
В примере создаётся GET-запрос к сервису https://ws3.morpher.ru/russian/declension?s="имя фамилия". В ответ приходит xml со склоненными ФИО, в которой ищется Родительный падеж.
Данный сервис позволяет бесплатно выполнять 1000 запросов в сутки.
Использование описанного ниже метода доступно для всех версий системы ELMA.
Затем в основном окне редактора сценариев добавьте следующий код сценария:
Пространство имен:
1 2 3 | using System.IO; using System.Net; using System.Web; |
Текст сценария:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | //Создаем метод private string GetGenetiveFromWeb( string str) str = context.InputString; var genitive = str; //отправлем запрос на сервер //время ожидания запроса 3 сек. request.Timeout = 300; WebResponse response; // Запрос отправлен try { response = request.GetResponse(); } // Ошибка отправки запроса на сервер catch (Exception e) { context.OutputString = "Ошибка отправки запроса на сервер" ; return genitive; Stream dataStream = response.GetResponseStream (); StreamReader reader = new StreamReader (dataStream); string responseFromServer = reader.ReadToEnd (); //Считать родительный падеж try { using (XmlReader Xreader = XmlReader.Create ( new StringReader (responseFromServer))) { Xreader.ReadToFollowing ( "Р" ); genitive = Xreader.ReadElementContentAsString(); context.OutputString = genitive; } //Ошибка считания родительного падежа catch (Exception e) { context.OutputString = "Не удалось считать родительный падеж" ; reader.Close (); response.Close (); return genitive; } } /// <summary> /// Вызов метода GetGenetiveFromWeb /// </summary> /// <param name="context">Контекст процесса</param> public virtual void ppr (Context context) //вызов метода GetGenetiveFromWeb context.Stroka = GetGenetiveFromWeb(context.Poljzovatelj.FullName.ToString()); // где: context.Stroka - тип переменной строка, // context.Poljzovatelj - тип переменной пользователь |