Net::WolframAlpha

| Нет комментариев

Wolfram|Alpha — это такой интересный сервис, который умеет парсить текстовые запросы, выделять из них смысловые части из разных областей знания и показывать все, что про это известно. (Совсем не обязательно, кстати, формулировать запрос вопросом.)

У Wolfram|Alpha существует недавно открывшийся API, к которому (за деньги) можно делать программные запросы. Работа с API представляет собой обращение к соответствующему адресу с GET-параметрами и ответ в виде XML.

На сайте опубликованы и модули для работы с API на языках платформы .NET, Perl, Python, PHP и Ruby, а в планах — C++ и Java.

По большому счету суть этих модулей сводится к тому, чтобы преобразовать полученный XML в удобную для программиста структуру данных, специфичную для языка. В Perl это многоуровневый хеш.

Ответ состоит из нескольких частей (контейнеров, так называемых pods), в каждой из которых данные представлены в одном из форматов, который считается приемлемым для обработанного запроса. Дополнительные секции предположений (assumptions) дают дополнительные ссылки, если выяснится, что запрос может быть понят иначе (пример из документации: pi — это и число π, и название фильма.

Более того, каждая панель обычно содержит несколько вариантов представления данных. Например, текстовые значения почти всегда дублируются картинками:

pi

Работа с модулем Net::WolframAlpha проста. Делаем запрос:

use Net::WolframAlpha;

my $wa = Net::WolframAlpha->new(appid => 'ABCDE');
my $query = $wa->query(
    'input' => 'pi',
    'scantimeout' => 3,
);

А затем методами, одноименными с XML-тегами разбираем ответ, который представляет собой объект класса Net::WolframAlpha::Query. Дамп ответа, полученного на запрос pi, — 85 килобайт текста :-) В этом же объекте хранятся и фрагменты полученного XML.

Ответ на запрос perl содержит четыре контейнера, правда с информацией, которая не относится к языку Perl. Впрочем, не обидно: другие языки программирования тоже отсутствуют :-)

Net::WolframAlpha поддерживает также две дополнительных возможности API — асинхронную обработку и проверку правильности запроса.

Разработчик модуля — Габриэль Вайнберг (Gabriel Weinberg) — говорит, что модуль обязательно появится на CPAN.

P. S. (Обновление на следующий день.) Модуль уже на спане: search.cpan.org/~yegg/Net-WolframAlpha-1.0/.

Комментировать

Страницы

  • img

Об этой записи

Сообщение опубликовано 17.11.2009 22:48. Автор — ash.

Предыдущая запись — Pre-conference meeting

Следующая запись — SOAP::WSDL

Смотрите новые записи на главной странице или загляните в архив, где есть ссылки на все сообщения.