package WWW::Yahoo::KeywordExtractor; use strict; use warnings; use LWP::UserAgent; use constant KEYWORD_API_URL => 'http://api.search.yahoo.com/ContentAnalysisService/V1/termExtraction'; our $VERSION = '0.5.2'; sub new { my ($class, %args) = @_; my $self = bless {%args}, $class; return $self; } sub extract { my ($self, $content) = @_; if (! $content) { die 'No content specified'; } my $ua = LWP::UserAgent->new(); my $response = $ua->post( KEYWORD_API_URL, { 'appid' => 'WWWYahooKeywordExtractor', 'query' => 'null', 'context' => $content, } ); if (! $response->is_success()) { die "Error getting data!\n"; } my $xml = $response->content(); my @results = (); while ($xml =~ m!([^<]*)!g) { push @results, $1; } return \@results; } 1; __END__ =pod =head1 NAME WWW::Yahoo::KeywordExtractor - Get keywords from summary text via the Yahoo API =head1 SYNOPSIS This module will submit content to the Yahoo keyword extractor API to return a list of relevant keywords. use WWW::Yahoo::KeywordExtractor; my $yke = WWW::Yahoo::KeywordExtractor->new(); my $keywords = $yke->extract('My wife and I love to cook together. Carolyn surprises me with new things to love about her everyday.'); print join q{}. 'Keyword 1: ', $keywords->[0], "\n"; =head1 SUBROUTINES/METHOD =head2 new The new subroutine creates and returns a WWW:Yahoo::KeywordExtractor object. =head2 extract This method will return a list of keywords based on sample data. It will die if there is no 'content' arg given. Note: In older versions this method would also cache the keywords returned, however this is no longer the case. =head1 AUTHOR Nick Gerakines, C<< >> =head1 BUGS Please report any bugs or feature requests to C, or through the web interface at L. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes. =head1 SUPPORT You can find documentation for this module with the perldoc command. perldoc WWW::Yahoo::KeywordExtractor You can also look for information at: =over 4 =item * WWW-Yahoo-KeywordExtractor SVN Repository L =item * AnnoCPAN: Annotated CPAN documentation L =item * CPAN Ratings L =item * RT: CPAN's request tracker L =item * Search CPAN L =back =head1 ACKNOWLEDGEMENTS Thanks to the bright developers at Yahoo for creating a nifty keyword API. Subbu Allamaraju ( http://www.subbu.org ) gave some good feedback and is also worth mentioning here. =head1 COPYRIGHT & LICENSE Copyright 2006 Nick Gerakines, all rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut