File Coverage

blib/lib/Lingua/JA/Expand/Tokenizer/MeCab.pm
Criterion Covered Total %
statement 7 9 77.7
branch n/a
condition n/a
subroutine 3 3 100.0
pod n/a
total 10 12 83.3


line stmt bran cond sub pod time code
1             package Lingua::JA::Expand::Tokenizer::MeCab;
2              
3 1     1   613 use strict;
  1         2  
  1         29  
4 1     1   4 use warnings;
  1         2  
  1         22  
5 1     1   1569 use Lingua::JA::TFIDF;
  0            
  0            
6             use Carp;
7             use base qw(Lingua::JA::Expand::Tokenizer);
8              
9             __PACKAGE__->mk_accessors($_) for qw(_calc);
10              
11             sub tokenize {
12             my $self = shift;
13             my $text_ref = shift;
14             my $threshold = shift;
15              
16             if ( ref $text_ref ne 'SCALAR' ) {
17             carp("Tokenizer has no text") and return;
18             }
19              
20             my $config = $self->config;
21             $threshold ||= $config->{threshold};
22             $threshold ||= 100;
23             my %hash;
24             my $list = $self->calc->tfidf($$text_ref)->list($threshold);
25             for (@$list) {
26             my ( $word, $score ) = each(%$_);
27             $hash{$word} = $score;
28             }
29             return \%hash;
30             }
31              
32             sub _NG {
33             return (
34             '(',
35             ')',
36             '#',
37             ',',
38             '"',
39             '\'',
40             '`',
41             qw(! $ % & * + - . / : ; < = > ? @ [ \ ] ^ _ { | } ~),
42             qw(人 秒 分 時 日 月 年 円 ドル),
43             qw(一 二 三 四 五 六 七 八 九 十 百 千 万 億 兆),
44             qw(↑ ↓ ← → ⇒ ⇔ \ ^ ` ヽ),
45             qw(a any the who he she i to and in you is you str this ago about and new as of for if or it have by into at on an are were was be my am your we them there their from all its),
46             qw(検索 サイト ホームページ 情報 関連 一覧 運営 お ご ... gt amp lt ー ¥ !! jp com :// htm html),
47             qw(a b c d e f g h i j k l m n o p q r s t u v w x y z),
48             qw(A B C D E F G H I J K L M N O P Q R S T U V W X Y Z),
49             );
50             }
51              
52             sub calc {
53             my $self = shift;
54             $self->_calc or sub {
55             my $calc = Lingua::JA::TFIDF->new( %{ $self->config } );
56             $calc->ng_word( [ _NG() ] );
57             $calc;
58             }
59             ->();
60             }
61              
62             1;
63              
64             __END__