/usr/share/perl5/Juman/Result.pm is in libjuman-perl 7.0-3.1ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 | # $Id: Result.pm,v 1.3 2011/07/01 04:02:15 kawahara Exp $
package Juman::Result;
require 5.004_04; # For base pragma.
use Juman::Morpheme;
use strict;
use base qw/ Juman::MList /;
use vars qw/ %DEFAULT /;
=head1 NAME
Juman::Result - 形態素解析結果オブジェクト in Juman
=head1 SYNOPSIS
$result = new Juman::Result( "解析...\n...\nEOS\n" );
=head1 DESCRIPTION
Juman による形態素解析の結果を保持するオブジェクト.
=head1 CONSTRUCTOR
=over 4
=item new ( RESULT )
Juman の出力を行を単位として格納されたリストに対するリファレンス RESULT
を引数として呼び出すと,その形態素解析結果を表すオブジェクトを生成する.
=item new ( OPTIONS )
以下の拡張オプションを指定してコンストラクタを呼び出す.
=over 4
=item result => RESULT
Juman の出力文字列,または,その文字列を行を単位として格納されたリスト
に対するリファレンスを指定する.
=item pattern => STRING
解析結果を終端するためのパターンを指定する.
=item mclass => NAME
形態素オブジェクトを指定する.無指定の場合は,C<Juman::Morpheme> を用
いる.
=cut
%DEFAULT = ( pattern => '^EOS$',
mclass => 'Juman::Morpheme' );
sub new {
my $class = shift;
my( %opt ) = %DEFAULT;
if( @_ == 1 ){
$opt{result} = shift;
} else {
while( @_ ){
my $key = shift;
my $val = shift;
$key =~ s/\A-+//;
$opt{lc($key)} = $val;
}
}
my $result = $opt{result};
my $pattern = $opt{pattern};
my $mclass = $opt{mclass};
return undef unless( $result and $pattern and $mclass );
# 文字列が直接指定された場合
$result = [ map( "$_\n", split( /\n/, $result ) ) ] unless ref $result;
my $this = {};
bless $this, $class;
my( $str );
while ( defined( $str = shift @$result ) ) {
if ( $str =~ m!$pattern! and @$result == 0 ) {
$this->{_eos} = $str;
last;
} elsif ( $str =~ m!\A\@ \@ \@ [^\@]! ){
# 「@」のみからなる未定義語を処理する
$this->push_mrph( $mclass->new( $str, scalar($this->mrph) ) );
} elsif ( $str =~ s!\A\@ !! ) {
# 「@」が先頭にあれば同形語
( $this->mrph )[-1]->push_doukei( $mclass->new( $str, scalar($this->mrph) ) );
} else {
$this->push_mrph( $mclass->new( $str, scalar($this->mrph) ) );
}
}
$this->set_readonly();
$this;
}
=back
=head1 METHODS
本オブジェクトは,形態素列オブジェクト C<Juman::MList> を継承するよう
実装されている.したがって,形態素列オブジェクトに対して有効な以下のメ
ソッドが利用可能である.
=over 4
=item mrph
=cut
=item spec
形態素列の全文字列を返す.Juman による出力と同じ形式の結果が得られる.
=cut
sub spec {
my( $this ) = @_;
sprintf( "%s%s",
$this->Juman::MList::spec(),
$this->{_eos} );
}
=back
=head1 SEE ALSO
=over 4
=item *
L<Juman::Morpheme>
=item *
L<Juman::MList>
=back
=head1 AUTHOR
=over 4
=item
土屋 雅稔 <tsuchiya@pine.kuee.kyoto-u.ac.jp>
=cut
# 後方互換性を保つためのメソッド
sub all {
my( $this ) = @_;
$this->spec();
}
1;
__END__
# Local Variables:
# mode: perl
# use-kuten-for-period: nil
# use-touten-for-comma: nil
# End:
|