#!/usr/local/bin/perl -w # # ex_ICT.pl # # ファイルから ICTCLAS のI尖Y惚をiみ函り # 奮薦にT喘Zとその嶷勣業を卦すプログラム # # version 0.07 # # use TermExtract::ICTCLAS; #use strict; my $data = new TermExtract::ICTCLAS; my $InputFile = "ICT_out.txt"; # 秘薦ファイル峺協 # プロセスの械K阻rI尖 # (ロックディレクトリを聞喘した栽のみ $SIG{INT} = $SIG{QUIT} = $SIG{TERM} = 'sigexit'; # 竃薦モ`ドを峺協 # 1 ★ T喘Z嶷勣業、2 ★ T喘Zのみ # 3 ★ カンマ曝俳り my $output_mode = 1; # # 嶷勣業麻で、B俊Zの"决べ方"、"なり方"、"パ`プレキシティ"のい # ずれをとるかxk。パ`プレキシティは仝僥C嬬々を聞えない # また、"B俊Zの秤鵑鯤垢錣覆"xkもあり、この栽は喘Z竃F指方 # (とO協されていればIDFのMみ栽わせで嶷勣業麻を佩う # ┘妊侫ルトは"决べ方"をとる $obj->use_total) # #$data->use_total; # 决べ方をとる #$data->use_uniq; # なり方をとる #$data->use_Perplexity; # パ`プレキシティをとる(TermExtract 3.04 參貧) #$data->no_LR; # O俊秤鵑鯤垢錣覆 (TermExtract 4.02 參貧) # # 嶷勣業麻で、B俊秤鵑譴浦呂錣擦誡稚Z竃Fl業秤鵑鰡xkする # $data->no_LR; とのMみ栽わせで喘Z竃Fl業のみの嶷勣業も麻竃辛嬬 # ┘妊侫ルトは "Frequency" $data->use_frq) # TFはある喘Zが麿の喘Zの匯何に聞われていた栽にもカウント # Frequency は喘Zが麿の喘Zの匯何に聞われていた栽にカウントしない # #$data->use_TF; # TF (Term Frequency) (TermExtract 4.02 參貧) #$data->use_frq; # Frequencyによる喘Zl業 #$data->no_frq; # l業秤鵑鯤垢錣覆 # # 嶷勣業麻で、僥C嬬を聞うかどうかxk # ┘妊侫ルトは、聞喘しない $obj->no_stat) # #$data->use_stat; # 僥C嬬を聞う #$data->no_stat; # 僥C嬬を聞わない # # 嶷勣業麻で、仝ドキュメント嶄の喘Zのl業々と仝B俊Zの嶷勣業々 # のどちらに曳嶷をおくかをO協する。 # デフォルト、錬 # 、寄きいほど仝ドキュメント嶄の喘Zのl業々の曳嶷が互まる # #$data->average_rate(0.5); # # 僥C嬬喘DBにデ`タを們eするかどうかxk # 嶷勣業麻で、僥C嬬を聞うときは、セットしておいたほうが # oy。I尖鵑朴ЯC嬬喘DBに鞠hされていないZが根まれる # と屎しく嘛しない。 # ┘妊侫ルトは、們eしない $obj->no_storage # #$data->use_storage; # 們eする #$data->no_storage; # 們eしない # # 僥C嬬喘DBに聞喘するDBMをSDBM_Fileに峺協 # ┘妊侫ルトは、DB_FileのBTREE?皎`ド # #$data->use_SDBM; # # ^肇のドキュメントの拙eyを聞う栽のデ`タベ`スの # ファイル兆をセット # ┘妊侫ルトは "stat.db"と"comb.db" # $data->stat_db("statICT.db"); $data->comb_db("combICT.db"); # # デ`タベ`スの電麿ロックのための匯rディレクトリを峺協 # ディレクトリ兆が腎猟忖双┘妊侫ルトの栽はロックしない # #$data->lock_dir("lock_dir"); # # 瞳~タグ原けgみのテキストから、デ`タをiみzみ # T喘Zリストを塘双に卦す # ╂朷eyDB聞喘、ドキュメント嶄のl業聞喘にセット # #my @noun_list = $data->get_imp_word($str, 'var'); # 秘薦が篳 my @noun_list = $data->get_imp_word($InputFile); # 秘薦がファイル # # 念指iみzんだ瞳~タグ原けgみテキストファイルを圷に # モ`ドを笋┐董T喘Zリストを塘双に卦す #$data->use_stat->no_frq; #my @noun_list2 = $data->get_imp_word(); # また、そのY惚をeのモ`ドによるY惚と譴浦呂錣擦 #@noun_list = $data->result_filter (\@noun_list, \@noun_list2, 30, 1000); # # T喘Zリストと麻した嶷勣業を奮薦に竃す # foreach (@noun_list) { # 方、里澆榔輅召靴覆 next if $_->[0] =~ /^\d+$/; # 1猟忖(GB)のみは燕幣しない next if $_->[0] =~ /^[\x00-\x7F]$/; next if $_->[0] =~ /^[\x81-\xFE][\x40-\xFE]$/; next if $_->[0] =~ /^[\x81-\xEF][\x30-\x39][\x81-\xEF][\x30-\x39]$/; # Y惚燕幣 printf "%-60s %16.2f\n", $_->[0], $_->[1] if $output_mode == 1; printf "%s\n", $_->[0] if $output_mode == 2; printf "%s,", $_->[0] if $output_mode == 3; }