Created
January 22, 2015 15:02
-
-
Save konoha81/91ff2e1e343da15b021e to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env perl | |
use strict; | |
use utf8; | |
use Encode; | |
# 出現確率ファイルを読み込む | |
# Like.txtの読み込み | |
open(LIKE, "Likeprob.txt") or die "$!"; | |
open(DISLIKE, "Dislikeprob.txt") or die "$!"; | |
my $like; | |
my $dislike; | |
my %like_hash = 0; | |
my %dislike_hash = 0; | |
while(<LIKE>){ | |
chomp; | |
my @list = split(/\t/); | |
$like_hash{$list[0]} = $list[1]; | |
} | |
close(LIKE); | |
while(<DISLIKE>){ | |
chomp; | |
my @list = split(/\t/); | |
$dislike_hash{$list[0]} = $list[1]; | |
} | |
close(DISLIKE); | |
# LIKE/DISLIKE判定後の配列 | |
my %judge; | |
my %judge_test; | |
# 解答データのLike/Dislikeを取得 | |
open(TEST, "train_id.txt") or die "$!"; | |
my @id; | |
while(<TEST>){ | |
chomp; | |
@_ = split("\t"); | |
push(@id,@_[0]); | |
if(@_[1] =~ /Like/){ | |
$judge_test{@_[0]} = "Like"; | |
}elsif(@_[1] =~ /Dislike/){ | |
$judge_test{@_[0]} = "Dislike"; | |
}else{ | |
print("ERROR!\n"); | |
} | |
} | |
close(TEST); | |
# クローズドテスト用タグの読み込み | |
# 教師データにはLikeが194個、Dislikeが96個存在する | |
my $like_num = 194; | |
my $dislike_num = 96; | |
my $total = $like_num + $dislike_num; | |
open(IN,"test.txt") or die "$!"; | |
while(<IN>){ | |
chomp; | |
my $like = log($like_num/$total); | |
my $dislike = log($dislike_num/$total); | |
my @list = split(/\t/); | |
my @taglist = split(",", @list[1]); | |
for(my $i=0; $i<$#taglist; $i++){ | |
if(defined($like_hash{$taglist[$i]})){ | |
$like += log($like_hash{$taglist[$i]}) | |
}else{ | |
$like += log(0.000001); | |
} | |
if(defined($dislike_hash{$taglist[$i]})){ | |
$dislike += log($dislike_hash{$taglist[$i]}); | |
}else{ | |
$dislike += log(0.000001); | |
} | |
} | |
# Like/Dislike判定 | |
if($like > $dislike){ | |
# print "@list[0] Like\n"; | |
$judge{@list[0]} = "Like"; | |
}elsif($dislike > $like){ | |
# print "$like $dislike Dislike\n"; | |
$judge{@list[0]} = "Dislike"; | |
}else{ | |
print "$like $dislike same\n"; | |
} | |
$like = 0; | |
$dislike = 0; | |
} | |
close(IN); | |
my $j=0; | |
my $k=0; | |
for(my $i=0; $i<=$#id; $i++){ | |
if($judge{$id[$i]} eq $judge_test{$id[$i]}){ | |
$j++; | |
}elsif($judge{$id[$i]} ne $judge_test{$id[$i]}){ | |
$k++; | |
}else{ | |
print("ERROR"); | |
} | |
} | |
print("correct: $j , incorrect: $k \n"); | |
my $p= $j/($j+$k)*100; | |
print("the precision is $p\%\n"); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment