| WebService-YahooJapan-WebMA documentation | Contained in the WebService-YahooJapan-WebMA distribution. |
WebService::YahooJapan::WebMA - Easy-to-use Interface for Yahoo! Japan Web MA Web Service
use WebService::YahooJapan::WebMA;
my $api = WebService::YahooJapan::WebMA->new(
appid => 'your_appid',
);
my $result = $api->parse(sentence => 'sentence here') or die $api->error;
my $ma_result = $result->{ma_result};
print $ma_result->{total_count};
print $ma_result->{filtered_count};
for my $word (@{$ma_result->{word_list}}) {
$word->{surface};
$word->{reading};
$word->{pos};
$word->{baseform};
}
This module priovides you an Object Oriented interface for Yahoo! Japan Web MA Web Service.
You can do Japanese language morphological analysis with this module.
Returns an instance of this module. The following option can be set:
appid # required ua # optional. LWP::UserAgent instance
Requests API with options and returns results. The following option can be set:
sentence # required results response filter ma_response ma_filter uniq_response uniq_by_baseform
See the official API documents about detail of options and return values.
Returns error message.
Jiro Nishiguchi <jiro@cpan.org>
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| WebService-YahooJapan-WebMA documentation | Contained in the WebService-YahooJapan-WebMA distribution. |
package WebService::YahooJapan::WebMA; use 5.008001; use strict; use warnings; use Carp; use URI; use LWP::UserAgent; use XML::Simple (); our $VERSION = '0.01'; our $APIBase = 'http://api.jlp.yahoo.co.jp/MAService/V1/parse'; sub new { my ($class, %args) = @_; my %self; $self{appid} = $args{appid} or croak 'appid is required.'; $self{ua} = $args{ua} || LWP::UserAgent->new(agent => __PACKAGE__ . "/$VERSION"); bless \%self, $class; } sub parse { my ($self, %args) = @_; croak 'sentence is required.' unless $args{sentence}; $self->error(''); my %param = map { exists $args{$_} ? ( $_ => $args{$_} ) : () } qw( sentence results response filter ma_response ma_filter uniq_response uniq_by_baseform ); utf8::is_utf8($param{$_}) and utf8::encode($param{$_}) for keys %param; my $uri = URI->new($APIBase); $uri->query_form(appid => $self->{appid}, %param); my $res = $self->{ua}->get($uri); unless ($res->is_success) { my $error = 'Request failed: ' . $res->status_line; if ($res->content) { my ($message) = $res->content =~ m!<Message>(.*)</Message>!; $error .= "\n$message" if defined $message; } $self->error($error); return; } XML::Simple::XMLin($res->content, GroupTags => { word_list => 'word' }); } sub error { my $self = shift; if (@_) { $self->{error} = $_[0]; } $self->{error}; } 1; __END__