「私はパソコンを買った」という文章は、形態素解析すると、
「私」「は」「パソコン」「を」「買った」と分割されます。
「私」「は」「パソコン」「を」「買った」と文節にまとめると
「私は」「パソコンを」「買った」となります。
「私は」→「買った」という係り受け関係が抽出できます。
「パソコンを」→「買った」
「こんな」→「私の」となります。
「私の」→「故郷は」
「故郷は」→「場所なのです。」
「非常に」→「良い」
「良い」→「場所なのです。」
#!/usr/bin/perl
use strict;
use warnings;
use URI::Escape;
use LWP::Simple;
use XML::Simple;
my $appid = "YahooDemo";
while (<>) {
chomp;
my $xml_ref = dana($_);
next unless $xml_ref->{Result} and $xml_ref->{Result}->{ChunkList};
my @morphs;
my @froms;
my $base_id = -1;
foreach my $c (@{$xml_ref->{Result}->{ChunkList}->{Chunk}}) {
if ($c->{Dependency} >= 0) {
push @{$froms[$c->{Dependency}]}, $c->{Id};
} else {
$base_id = $c->{Id};
}
next unless $c->{MorphemList};
my $str = join("", map {$_->{Surface}}
@{$c->{MorphemList}->{Morphem}});
$morphs[$c->{Id}] = $str;
}
next if $base_id == -1;
print "$_\nSUMMARY: ", @morphs[@{$froms[$base_id]}],
$morphs[$base_id], "\n\n";
}
sub dana {
my ($key) = @_;
return {} unless $key;
my $url = "http://jlp.yahooapis.jp/DAService/V1/parse"
."?appid=$appid"
."&sentence=".URI::Escape::uri_escape($key);
my $response = get($url);
my $xmlsimple = XML::Simple->new(ForceArray => [ 'Chunk', 'Morphem' ]);
return $xmlsimple->XMLin($response);
}
$appid は自分で取得したものを使ってくださいね。「要約になってないじゃないか!」と言われても困ります。% cat a.txt こんな私の故郷は非常に良い場所なのです。 つまり、これはパソコンですが、こういうのは基本的に買うとダメ。 昨今の経済状況を考慮すると、セレブとの豪華なディナーはいかがなものか。 % ./youyaku.pl a.txt こんな私の故郷は非常に良い場所なのです。 SUMMARY: 故郷は良い場所なのです。 つまり、これはパソコンですが、こういうのは基本的に買うとダメ。 SUMMARY: パソコンですが、買うとダメ。 昨今の経済状況を考慮すると、セレブとの豪華なディナーはいかがなものか。 SUMMARY: 考慮すると、ディナーはいかがなものか。


