Changeset 4062

Show
Ignore:
Timestamp:
01/05/08 22:34:33 (5 years ago)
Author:
hiroyukim
Message:

scan の実装を勘違いしていたので修正、それに伴い発生したバグの修正

Location:
lang/perl/Mezasi/trunk/lib/Mezasi
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • lang/perl/Mezasi/trunk/lib/Mezasi/Dictionary.pm

    r4029 r4062  
    116116    $result .= "\n"; 
    117117 
    118     %{$self->{occur}} = map { ( $_ =>  $self->{occur}->{$_} ) } grep { not ( scalar( @{$self->{occur}->{$_}} ) == 0 ) } keys %{$self->{occur}}; 
     118    %{$self->{occur}} = map { ( $_ =>  $self->{occur}->{$_} ) } grep { $self->{occur}->{$_} && ( not ( scalar( @{$self->{occur}->{$_}} ) == 0 ) ) } keys %{$self->{occur}}; 
    119119    
    120120    while( my ( $key , $value ) = each %{$self->{occur}} ) { 
    121         $self->{oocur}->{$key} = [ map { $value->[$_] } (-100..-1) ] if( scalar( @{$value} ) > 100 );  
     121        $self->{oocur}->{$key} = [ map { $value->[$_] } (-100..-1) ] if( $value && scalar( @{$value} ) > 100 );  
    122122    } 
    123123    
     
    224224 
    225225    my @new_terms = Mezasi::Freq->extract_terms( $lines, 30 ); 
    226     
     226 
    227227    for my $term ( @new_terms ) { 
    228228        $self->add_term($term); 
     
    239239 
    240240            for my $term (@words) { 
    241                 if( not  $self->{occur}->{$term}  || $num > $self->{occur}->{$term}->{-1} ) { 
     241                if( not  $self->{occur}->{$term}  || $num > ( $self->{occur}->{$term}->[-1] || 0 ) ) { 
    242242                    push @{$self->{occur}->{$term}} , $num; 
    243243                } 
     
    311311    my ($self, $word ) = @_; 
    312312 
    313     if( not $self->{rel}->{$word} || ($self->{rel}->{$word}->{sum}||0) == 0 ) { 
     313    if( ( not $self->{rel}->{$word} ) ||  ( not $self->{rel}->{$word}->{sum} ) || ( $self->{rel}->{$word}->{sum} || 0 ) == 0 ) { 
    314314        return 0; 
    315315    } 
  • lang/perl/Mezasi/trunk/lib/Mezasi/Freq.pm

    r4037 r4062  
    33use warnings; 
    44use utf8; 
     5use Data::Dumper; 
    56 
    67sub extract_terms { 
     
    1415 
    1516    return bless { 
    16         buf =>  $buf || [],  
     17        buf => ( $buf && ref $buf eq 'ARRAY' ) ? join("\0", @$buf ) : q{ }, 
    1718    }, $class; 
    1819} 
     
    2223 
    2324    my @terms = @{$self->extract_terms_sub($limit)}; 
     25 
    2426    # before: [["hello world", 1]] 
    2527    # after:  [["dlrow olleh", 1]] 
     
    4244    push @terms2, $terms[-1] if  @terms > 0 ; 
    4345 
    44     return  map { join '',reverse @{[split //, $_->[0]]} }  @terms2;  
     46    return map { join '',reverse @{[split //, $_->[0]]} }  @terms2 ;  
    4547 
    4648} 
     
    5052    $num ||= 1; 
    5153    my $h    = $self->freq($str); 
     54 
    5255    my $flag = ( scalar( keys %$h ) <= 4 ) ? 1 : 0 ; 
    5356 
     
    7477     
    7578    if( scalar(  @{[split(//,$str || '')]}  ) == 0 ) { 
    76         for my $buf (@{$self->{buf}}) { 
    77             if( $buf =~ /([!-~])[!-~]*|([ァ-ヴ])[ァ-ヴー]*|([^ー\0])/i ) { 
    78                 $freq->{ $1 || $2 || $3 } += 1; 
    79             } 
     79        while( $self->{buf} =~ /([!-~])[!-~]*|([ァ-ヴ])[ァ-ヴー]*|([^ー\0])/gi ) { 
     80            $freq->{ $1 || $2 || $3 } += 1; 
    8081        } 
    8182    } 
    8283    else { 
    83         for my $buf (@{$self->{buf}}) { 
    84             { 
    85                 if( $buf =~ /($str)[^\0]?/io ) { 
    86                     $freq->{$1} += 1; 
    87                 } 
    88             } 
     84        while( $self->{buf} =~ /($str)[^\n]?/gio ) { 
     85            $freq->{$1} += 1; 
    8986        } 
    9087    }