Веб-сервис предназначен для склонения слов и словосочетаний на русском языке.
Входная строка (s) должна быть в кодировке UTF-8 и перед вставкой в URL должна быть закодирована
при помощи URL Encoding.
Для зарегистрированных пользователей веб-сервис выдает также формы множественного числа и автоматически определенные род и число:
Если входное словосочетание не имеет множественного числа или уже стоит во множественном числе,
то строки 7-13 будут отсутствовать, т.е. массив будет содержать всего 7 строк.
Предлог «о» (строки 4 и 12) когда нужно заменяется на «об» в соответствии с правилами русского языка («об апельсинах»).
Предлог «в» (строки 5 и 13) может заменяться предлогом «на» так, чтобы получившаяся падежная форма корректно отвечала на вопрос «где?»:
в комнате – на кухне, на площади – в сквере, в Сибири – на Урале.
Тестовая форма и подробное описание форматов сообщений для вызовов через HTTP GET, HTTP POST и HTTP SOAP:
Кроме просто склонения, веб-сервис предоставляет также функцию согласования
единицы измерения, выраженной словом или словосочетанием в именительном падеже, с заданным числом.
Например:
Зарегистрированные пользователи этих ограничений не имеют.
Пошаговая инструкция создания минимальной программы на C#,
использующей веб-сервис, при помощи Visual Studio 2005/2008/2010:
За пример спасибо пользователю AlDelta.
Данко Алексеев
15.12.2008 15:02 UTC
Здравствуйте,
Есть ли ограничение на использование веб-сервиса? Проект весьма массивный, даже если кешировать результаты пожизненно, запросов будет много.
|
Сергей Слепов
15.12.2008 23:22 UTC
Здравствуйте,
Ограничений с моей стороны пока нет, время ответа и доступность сервиса сейчас определяется хостингом. Если параметры общедоступного сервиса Вас не устроят, можно подыскать более проворный хостинг – вплоть до выделенного, который удовлетворит Ваши аппетиты. На взаимовыгодной основе, конечно :) , обсудим.
С уважением, Сергей
|
Фокин Александр
04.02.2009 19:09 UTC
Здравствуйте.
Можно ли выложить сюда пример на Delphi?
|
Сергей Слепов
04.02.2009 21:50 UTC
Александр - похоже, Дельфи Вы знаете лучше меня, почему бы Вам самому не написать этот пример? В награду обещаю увековечить Ваше имя на этой странице вместе со ссылкой на Ваш ресурс.
|
Фокин Александр
04.02.2009 22:29 UTC
Я бы с удовольствием, но не получается...
Запрос на сервис - IDHttp1.Get('http://morpher.ru/webservices/Morpher.asmx/GetAll5?s=слово');
В ответ только это:
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://morpher.ru/webservices/" />
P.S.: Изаините за предыдущие дубли комментариев, обновлял страницу и как оказалось отсылал заполненную форму...
P.P.S.: Как видите Delphi знаю не лучше Вас...
|
Сергей Слепов
04.02.2009 23:04 UTC
Нужно закодировать русские буквы сначала в UTF-8, потом сделать URLEncode. В результате должно получиться:
http://morpher.ru/webservices/Morpher.asmx/GetAll5?s=%d1%81%d0%bb%d0%be%d0%b2%d0%be
Ссылка по теме:
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1165429197&n=4&p=2
|
AlDelta
04.02.2009 23:11 UTC
Приветствую, все гениальное просто (или нет):
///////////////////////////////////////////// ShowMessage(UTF8toANSI(IDHttp1.Get( 'http://morpher.ru/webservices/Morpher.asmx/GetAll5?s=' + AnsiToUTF8('слово')))); ////////////////////////////////////////////
|
Виктор
16.03.2009 14:46 UTC
Вебсервис перестал работать http://www.morpher.ru/webservices/Morpher.asmx/GetAll5?s=Отель
До этого склонял, теперь на все запросы отвечает <?xml version="1.0" encoding="utf-8" ?>
<ArrayOfString xmlns="http://morpher.ru/webservices/" .../ >
|
Сергей Слепов
16.03.2009 15:02 UTC
Извините, были временные неполадки. Сейчас все нормально, business as usual :)
|
Сергей Слепов
24.03.2009 12:20 UTC
Введено ограничение на бесплатное использование веб-сервиса: 1000 запросов в сутки с одного IP. Если вам нужны бОльшие объемы, . Появилась страница со статистикой использования веб-сервиса.
|
Izhik
10.06.2009 09:58 UTC
http://morpher.ru/WebService/Stats.aspx
Server Error in '/' Application.
Description: An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed remotely (for security reasons). It could, however, be viewed by browsers running on the local server machine.
Details: To enable the details of this specific error message to be viewable on remote machines, please create a <customErrors> tag within a "web.config" configuration file located in the root directory of the current web application. This <customErrors> tag should then have its "mode" attribute set to "Off".
<!-- Web.Config Configuration File -->
<configuration>
<system.web>
<customErrors mode="Off"/>
</system.web>
</configuration>
Notes: The current error page you are seeing can be replaced by a custom error page by modifying the "defaultRedirect" attribute of the application's <customErrors> configuration tag to point to a custom error page URL.
<!-- Web.Config Configuration File -->
<configuration>
<system.web>
<customErrors mode="RemoteOnly" defaultRedirect="mycustompage.htm"/>
</system.web>
</configuration>
|
Сергей Слепов
10.06.2009 10:29 UTC
Ошибка исправлена, спасибо!
|
Артем
16.06.2009 16:34 UTC
Спасибо! Отличный сервис. Жаль только, что нет перевода в множественную форму из веб-сервиса, хотя в демо есть.
|
Alexander
29.06.2009 08:21 UTC
Здравствуйте.
Веб-сервис склонения «Морфер» сейчас работает только для фразы "Васи Пупкина"? Возможно ли восстановление работоспособности на бесплатной основе?
|
Сергей Слепов
29.06.2009 12:32 UTC
Проблема решена с пользователем по email:
> О, спасибо я понял.. Дело было в том что я задавал запросы
> изменяя строку адреса в браузере firefox - а он как следствие
> менял кодировку, в IE все работает отлично.
> Спасибо вам!
>
> --
> alexander.
|
Сергей Слепов
29.06.2009 22:19 UTC
Внимание! Изменился API веб-сервиса. Функция GetAll5 в случае ошибки теперь возвращает не пустой массив, а массив из одной строки – описания ошибки. Функция GetAll5_Soap упразднена. Надеюсь, в таком виде веб-сервис будет проще и удобнее.
|
Александр
19.07.2009 18:35 UTC
хороший сервис!
есть пару вопросов:
1. ограничение на 1000 отращений с 1 ip. Значит ли это что есть у меня стоит обращение на моем сайте то при количестве посетителей больше 1000 оно работать перестанет? или как?
2. все конечно хорошо, но чтобы перекодировать utf-8 в URLEncode, уже роюсь в интернете полдня найти не могу, почему бы не сдлеать для win-1251? :)
|
Сергей Слепов
19.07.2009 18:54 UTC
Александр,
1. Если за одно посещение сайта вы делаете одно обращение к сервису, то да.
2. И UTF-8, и Windows-1251 перед помещением в URL должны быть закодированы при помощи URLEncode. Поэтому замена UTF-8 на Windows-1251 вашей проблемы не решит. URLEncode - простейший алгоритм, легко реализуемый на любом языке программирования. На каком языке вы пишете?
|
Kir
29.08.2009 08:31 UTC
Добрый день.
Пытаюсь подключится через php soap. Говорит, что "Программа не может просклонять это словосочетание". Хотя GETом всё прекрасно работает. Пробовал и в Windows-1251 и в UTF-8 - одна фигня. Вот сорц:
<?php
$client = new SoapClient("http://morpher.ru/Webservices/Morpher.asmx?wsdl");
$res = $client->GetAll5("слово");
echo var_dump($res);
?>
|
Юрий
30.08.2009 08:16 UTC
Сергей, вопрос чисто гипотетический (или нет :)). Есть возможность ввести слово, допустим, в родительном или дательном падеже (заранее неизвестно), а получить слово в И.п.?
Такая возможность была бы очень полезна для создания поискового индекса или выделения ключевых слов на сайте.
Если можно, ответьте на email. Спасибо!
|
Сергей Слепов
06.09.2009 23:24 UTC
Юрий - такой возможности в Морфере нет. По-хорошему на выходе такого алгоритма должна быть не одна форма, а набор возможных форм И.п. Например, форму предложного падежа "тесте" имеют слова тест, тесть и тесто. Эта задача решается морфанализаторами и леммерами-стеммерами (например, продукты группы АОТ) (для ограниченного словаря, естественно).
Если перед вами стоит задача выделения ключевых слов в тексте, то для этого совсем не обязательно иметь морфанализатор со словарем. Вполне хорошо работает метод отбрасывания гипотетических окончаний с подсчетом частоты встречаемости получившихся основ. Я когда-то писал подобный алгоритм для собственного интереса. Могу найти и доработать этот код.
|
Алексей Степанов
10.11.2009 21:34 UTC
Доброго всем здравия.
заметка для PHP-программистов. у меня заработал такой код:
<?php
$client = new SoapClient( "http://morpher.ru/WebServices/Morpher.asmx?WSDL" );
$returnValue=(array) $client->__soapCall('GetForms',array('parameters'=>array('s'=>'Иванов Иван Иваныч')));
$returnValue = (array) $returnValue['GetFormsResult'];
$returnValue = $returnValue['string'];
print_r($returnValue);
?>
возможно кому-то поможет.
всем удачи!
|
Shinan
06.12.2009 10:24 UTC
Сергей, а каким образом можно зарегистрироваться для полной версии веб-сервиса?
|
Владимир
03.03.2010 23:22 UTC
Морфер просто супер давно искал, спасибо авторам
но вот api уж слишком единообразное, падежи, склонения все в тегах string, может добавить атрибуты.
Статус об ошибке лучше вынести в отдельный тег к примеру
<status>ok или error</status>
так просто будет более юзабельнее
|
Владимир
04.03.2010 00:18 UTC
вот кстати пример для php5
$txt = urlencode(iconv( 'windows-1251', 'utf-8', 'тест') );
$url = curl_init();
curl_setopt($url, CURLOPT_URL, 'http://morpher.ru/Webservices/Morpher.asmx/GetForms?s='.$txt);
curl_setopt($url, CURLOPT_RETURNTRANSFER, 1);
$result = new SimpleXMLElement(curl_exec($url));
if ( sizeof($result->string)>1 ) {
echo $result->string[0] . '<br />';
echo $result->string[1] . '<br />';
echo $result->string[2] . '<br />';
echo $result->string[3] . '<br />';
echo $result->string[4] . '<br />';
}
|
Владимир
04.03.2010 00:48 UTC
и еще можно добавить, параметр к урлу, который будет указывать на требуемый падеж(и), чтобы не грузить сервер лишними склонениями, мне к примеру нужно было только одно склонение
очень хороший сервис у вас, так мне помог, респект
|
Юрий
18.06.2010 21:34 UTC
Скажите пожалуйста, есть ли возможность пакетного (множественного) склонения слов и словосочетаний. Нужно просклонять около 2000 слов, а по одному очень долго.
|
Сергей Слепов
19.06.2010 13:59 UTC
Да, конечно, для этого предназначена программа Склонятель.
|
Стасек
01.07.2010 10:00 UTC
А как можно зарегистрироваться для полной версии веб-сервиса?
|
administrating,.ru
05.07.2010 10:11 UTC
Ну можно еще проще:
$synonyms1 = simplexml_load_file("http://morpher.ru/Webservices/Morpher.asmx/GetForms?s=".urlencode(mb_strtolower($original)));
foreach($synonyms1 as $key => $val){
if ($key != 'original') { echo $val."<br>\n";}
}
|
Сергей Слепов
05.07.2010 19:57 UTC
Насчет mb_strtolower хочу заметить, что регистр имеет значение, например, Любовь и любовь склоняются по-разному.
|
seimei
22.09.2010 13:38 UTC
Пример на C# не рабочий, "Morpher ().GetAll5" Вообще не воспринимает, все ли точно описано, может произошли изменения или листинг для dll?
|
seimei
22.09.2010 13:54 UTC
m.MorpherSoapClient a = new MorpherSoapClient();
for (int i=0 ;i<5;i++) Console.WriteLine(a.GetForms("Иванов Иван Иванович")[i]);
Работающий вариант
|
Дмитрий Семенович
17.11.2010 06:26 UTC
Каким образом можно зарегистрироваться для использования расширенной версии веб-сервиса?
|
(аноним)
25.11.2010 13:32 UTC
Пример вызова через HTTP GET не работает
|
Сергей Слепов
25.11.2010 20:41 UTC
Спасибо, исправил!
|
Андрей
04.12.2010 21:15 UTC
И все-таки где и как можно зарегистрироваться для снятия ограничений?
|
Калита Марковвна
19.12.2010 14:27 UTC
Где бы найти халявный Morpher.dll ?
если кто распологает вышлите на мой емелй
а то 1000 обращений в сутки это вообще не серьезно.
|
Сергей Слепов
19.12.2010 14:35 UTC
Очень тронут Вашей непосредственностью. Предлагаю Morpher.dll бесплатно, если вы найдете 100 ошибок в склонении. Напишите мне, чтобы обсудить подробности.
|
Андрей
04.02.2011 19:15 UTC
Я так и не понял. Скажите пожалуйста:
1. В Web-сервисе есть возможность пропись суммы? (Как я понял - нет)
2. Пропись суммы бесплатна?
3. 3000 - это многовтенько, может скините :-)
4. Как можно получить библиотеку бесплатно?
Спасибо за ответы.
|
Sergey
18.04.2011 11:54 UTC
в согласовании с числом: (например пять) ампер, ват, вольт, аршин, герц, сервис выдает окончание "ов".
|
Андрей
07.06.2011 15:31 UTC
Вебсервис поддерживает украинский язык?
|
Сергей Слепов
10.06.2011 21:37 UTC
Sergey, спасибо - вольты, амперы и прочие аршины исправил.
|
Алексанр
18.06.2011 16:46 UTC
Что то не работает из 1С...
{Форма.Форма(3)}: Метод объекта не обнаружен (GetAll5)
Список=Морфер.GetAll5(Именительный);
|
Сергей Слепов
20.06.2011 07:04 UTC
@Александр: метод GetAll5 был переименован в GetForms. Для 1С теперь есть внешняя компонента - работает быстро и без ограничений, поддерживает украинский язык.
|
Алексей Трофименко
22.06.2011 07:05 UTC
Здравствуйте, Сергей.
Как и на каких условиях можно стать зарегистрированным пользователем вебсервиса?
интересует местный падеж с согласованием предлога для топонимов.
(на самом деле, неплохо бы иметь еще и формы "из/изо/с" родительного падежа и "в/во/на" винительного. Их можно вывести из предлога местного падежа, но может вы планируете добавить их тоже?)
P.S. https://rubygems.org/gems/morpher_inflect обертка бесплатной версии вебсервиса для ruby
|
Колесников О.В.
22.08.2011 07:56 UTC
Простой скрипт на пхп.
$nazv='Колесников Директор Генеральный';
$url=urlencode(mb_convert_encoding($nazv,'UTF-8','windows-1251'));
$getquery="GET http://morpher.ru/WebServices/Morpher.asmx/GetForms?s=".$url."\r\n"."Host: morpher.ru\r\n";
$socket=fsockopen('morpher.ru',80,$errno,$errstr,60); fwrite($socket,$getquery);
$fread=mb_convert_encoding(fread($socket, 3000),'windows-1251','UTF-8');
preg_match("#<string>(.*?)</string>#is", $fread, $echofread);
echo $echofread['1'];
fclose($socket);
выводит в род падеже, $echofread['2'] в дат. и т.д
|
Алексей Бородин
29.08.2011 12:08 UTC
Пример на VBS (Подходит для макросов в Excel - вставляете слова в первую колонку, скрипт - в макрос, и запускаете макрос
Sub Macro1()
Dim str
Set xmlParser = CreateObject("Msxml2.DOMDocument")
Set scr = CreateObject("MSScriptControl.ScriptControl")
scr.Language = "javascript"
For i = 1 To ActiveSheet.UsedRange.Rows.Count
str = "http://morpher.ru/Webservices/Morpher.asmx/GetForms?s=" + scr.Run("encodeURIComponent", Cells(i, 1).Value)
xmlParser.async = False
xmlParser.Load str
Set Nodes = xmlParser.GetElementsByTagName("ArrayOfString")
If Nodes.Length > 0 Then
If Nodes.Item(0).GetElementsByTagName("string").Length > 1 Then
Dim j
j = 2
For Each Node In Nodes.Item(0).GetElementsByTagName("string")
Cells(i, j).Value = Node.Text
j = j + 1
Next Node
End If
End If
Next i
End Sub
|
Андрей
22.09.2011 08:18 UTC
Здравствуйте.
А как же стать зарегистрированным пользователем))
|
Alzasr
25.04.2012 10:05 UTC
А чем продиктованы одинаковые теги для разных падежей? У Вас не фиксированное колличество возвращаемых строк, а именованное обращение не возможно.
|
Сергей Слепов
25.04.2012 10:08 UTC
Посмотрите новую версию веб-сервиса - там с этим все в порядке.
|
Alzasr
25.04.2012 10:39 UTC
Спасибо, обязательно воспользуюсь.
|