yahoo api(形態素解析)を利用して名詞抽出プログラムを作成してください.


使用言語:perl
環境:windows

よろしくおねがいします.

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2010/12/31 16:36:46
  • 終了:2011/01/07 16:40:02

回答(1件)

id:Galapagos No.1

Galapagos回答回数963ベストアンサー獲得回数892010/12/31 22:44:45

ポイント60pt

以下のようになります。

あらかじめ $sentence に解析したい文を、$appidにはあなたのアプリケーションIDをセットしてください。


Perlのバージョンやモジュール導入状況がよく分からないので、必要が応じてCSPANモジュールをインストールしてください。(「http://digit.que.ne.jp/work/wiki.cgi?Perl%E3%83%A1%E3%83%A2%2F%E...(CPAN):title=Perlメモ/モジュールのインストール(CPAN)]」参照)


#!/usr/bin/perl
use strict;
use warnings;
use utf8;
use Encode;
use LWP::UserAgent;
use HTTP::Request::Common qw(POST);
use XML::Simple;
use Data::Dumper;

my $url = 'http://jlp.yahooapis.jp/MAService/V1/parse';
my $referer = 'http://api.jlp.yahoo.co.jp/';
my $appid = 'あなたの';
my $sentence = '小惑星探査機が帰還しました。';   #解析したい文
my %params = (
  appid => $appid,
  sentence => $sentence,
  results => 'ma',
  filter => '9',    #名詞を抽出
);
my $request = POST($url, [%params]);
$request->referer($referer);

my $ua = LWP::UserAgent->new;
$ua->timeout(30);
$ua->agent('Mozilla');

my $response = $ua->request($request);

if ($response->is_success) {
    my $xs = new XML::Simple();
    my $ref = $xs->XMLin($response->content);
    my $i = 0;
    while (defined($ref->{ma_result}->{word_list}->{word}->[$i]->{surface})) {
         my $str = $ref->{ma_result}->{word_list}->{word}->[$i]->{surface};
        $str = encode('utf-8', $str);
        print "$str\n";
         $i++;
    }
} else {
    print $response->status_line, "\n";
}

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません