package Lingua::EN::Keywords::Yahoo; use strict; use LWP::UserAgent; use XML::Twig; use base qw(Exporter); our $VERSION = "0.5"; our @EXPORT_OK = qw(keywords); our $ua; our $uri = "http://api.search.yahoo.com/ContentAnalysisService/V1/termExtraction"; BEGIN { $ua = LWP::UserAgent->new(); }; =head1 NAME Lingua::EN::Keywords::Yahoo - Automatically extracts keywords from text using the Yahoo! API =head1 SYNOPSIS use Lingua::EN::Keywords::Yahoo qw(keywords); my @keywords = keywords($text); or my @keywords = keywords($text, $query); Where C<$query> is an optional term to help with the extraction process. =head1 DESCRIPTION This uses the Yahoo! keywords API to extract keywords from text. To quote the Yahoo! page: "The Term Extraction Web Service provides a list of significant words or phrases extracted from a larger content." =head1 EXPORT Can export the C subroutine. =head1 AUTHOR Original code by Simon Cozens, Packaged by Simon Wistow, =head1 COPYRIGHT Released under the same terms as Perl itself. =head1 SEE ALSO The Term Extraction API: http://developer.yahoo.net/search/content/V1/termExtraction.html L =cut sub keywords { my $content = shift; my $q = { appid => "Perl::Lingua::EN::Keywords::Yahoo", context => $content }; $q->{query} = shift if @_; my $resp = $ua->post($uri, $q); my @terms; if ($resp->is_success) { my $xmlt = XML::Twig->new( index => [ "Result" ] ); $xmlt->parse($resp->content); for my $result (@{ $xmlt->index("Result") || []}) { push @terms, $result->text; } } return @terms; } 1;