⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 align.pl

📁 about sound recognition.i want to downlod
💻 PL
📖 第 1 页 / 共 2 页
字号:
	if (@status_tmp) {	    &fukugougo;		# 剩圭胳借妄に掐る	}	($status_str2, $result_str2, $refer_str2);    }}sub dp {    local($i, $j, %g, %d, %r);    local($kx) = 0;    local($del, $ins, $sub, $cor);    for ($i = 1; $i <= $rcount; $i++) {	for ($j = 1; $j <= $hcount; $j++) {	    if ($result[$j-1] eq $refer[$i-1]) {		$d{$i,$j} = 0;	    } else {		$d{$i,$j} = 1;	    }	}    }    $g{0,0} = 0;    $r{0,0} = 0;    for ($i = 1; $i <= $rcount; $i++) {	$g{$i,0} = $i;	$r{$i,0} = 1;    }    for ($j = 1; $j <= $hcount; $j++) {	$g{0,$j} = $j;	$r{0,$j} = 2;    }    for ($i = 1; $i <= $rcount; $i++) {	for ($j = 1; $j <= $hcount; $j++) {	    ($g{$i,$j}, $r{$i,$j}) = 		&set_node($g{$i-1,$j}+1, 			  $g{$i,$j-1}+1, 			  $g{$i-1,$j-1}+$d{$i,$j});	}    }    $i = $rcount;    $j = $hcount;    $kx = 0;        for (;;) {	if ($r{$i,$j} == 1) {	    $status[$kx] = "D";	    $kekka_result[$kx] = "";	    $kekka_refer[$kx] = $refer[$i-1];	    $del++;	    $i--;	} elsif ($r{$i,$j} == 2) {	    $status[$kx] = "I";	    $kekka_result[$kx] = $result[$j-1];	    $kekka_refer[$kx] = "";	    $ins++;	    $j--;	} elsif ($r{$i,$j} == 3) {	    if ($d{$i,$j} == 1) {		$status[$kx] = "S";		$kekka_result[$kx] = $result[$j-1];		$kekka_refer[$kx] = $refer[$i-1];		$sub++;	    } elsif ($d{$i,$j} == 0) {		$status[$kx] = "C";		$kekka_result[$kx] = $result[$j-1];		$kekka_refer[$kx] = $refer[$i-1];		$cor++;	    } else {		print STDERR "error\n";	    }	    $i--;	    $j--;	} elsif ($i == 0 && $j == 0) {	    last;	}	$kx++;    }    ($kx, $cor, $sub, $del, $ins);}sub dp2 {    local($i, $j, %g, %d, %r);    for ($i = 1; $i <= $rcount2; $i++) {	for ($j = 1; $j <= $hcount2; $j++) {	    if ($res_lines[$j-1] eq $ref_lines[$i-1]) {		$d{$i,$j} = 0;	    } else {		$d{$i,$j} = 1;	    }	}    }    $g{0,0} = 0;    $r{0,0} = 0;    for ($i = 1; $i <= $rcount2; $i++) {	$g{$i,0} = $i;	$r{$i,0} = 1;    }    for ($j = 1; $j <= $hcount2; $j++) {	$g{0,$j} = $j;	$r{0,$j} = 2;    }    for ($i = 1; $i <= $rcount2; $i++) {	for ($j = 1; $j <= $hcount2; $j++) {	    ($g{$i,$j}, $r{$i,$j}) = 		&set_node($g{$i-1,$j}+1, 			  $g{$i,$j-1}+1, 			  $g{$i-1,$j-1}+$d{$i,$j});	}    }    $i = $rcount2;    $j = $hcount2;    $kx2 = 0;        for (;;) {	if ($r{$i,$j} == 1) {	    $status2[$kx2] = "D";	    $kekka_result2[$kx2] = "";	    $kekka_refer2[$kx2] = $ref_lines[$i-1];	    $del2++;	    $i--;	} elsif ($r{$i,$j} == 2) {	    $status2[$kx2] = "I";	    $kekka_result2[$kx2] = $res_lines[$j-1];	    $kekka_refer2[$kx2] = "";	    $ins2++;	    $j--;	} elsif ($r{$i,$j} == 3) {	    if ($d{$i,$j} == 1) {		$status2[$kx2] = "S";		$kekka_result2[$kx2] = $res_lines[$j-1];		$kekka_refer2[$kx2] = $ref_lines[$i-1];		$sub2++;	    } elsif ($d{$i,$j} == 0) {		$status2[$kx2] = "C";		$kekka_result2[$kx2] = $res_lines[$j-1];		$kekka_refer2[$kx2] = $ref_lines[$i-1];		$cor2++;	    } else {		print STDERR "error\n";	    }	    $i--;	    $j--;	} elsif ($i == 0 && $j == 0) {	    last;	}	$kx2++;    }    ($kx2);}sub set_node {    local($a, $b, $c) = @_;    if ($a <= $b) {	if ($a <= $c) {	    return ($a, 1);	} else {	    return ($c, 3);	}    } else {	if ($b <= $c) {	    return ($b, 2);	} else {	    return ($c, 3);	}    }}sub fukugougo {    local($i, $j, %flag_ref, %flag_res, %same_ref, %same_res);    local($count) = 0;    local($rscount, $rfcount) = 0;    local($prev_flag_ref, $prev_flag_res);    local($ref_line, $res_line);    local(@ref_lines, $res_lines);    local(@status2, @kekka_refer2, @kekka_result2);    $matubi = $#status_tmp;    # どの婶尸を冯圭すればよいかラベリングする    for ($i = 0; $i <= $matubi; $i++) {	$count++;	for ($j = 0; $j <= $matubi; $j++) {	    if ($kekka_refer_tmp[$i] =~ /$kekka_result_tmp[$j]/) {		$res_word = $kekka_result_tmp[$j];		if ($flag_res{$j}) {		    ;		}		else {		    if (!$same_res{$res_word}) {			$flag_res{$j} = $count;			$same_res{$res_word} = $count;		    }		    elsif ($same_res{$res_word} != $count) {			$flag_res{$j} = $count;			$same_res{$res_word} = $count;		    }		    else {			last;		    }			    		}	    }	}    }    # どの婶尸を冯圭すればよいかラベリングする    for ($i = 0; $i <= $matubi; $i++) {	$count++;	for ($j = 0; $j <= $matubi; $j++) {	    if ($kekka_result_tmp[$i] =~ /$kekka_refer_tmp[$j]/) {		$ref_word = $kekka_refer_tmp[$j];		if ($flag_ref{$j}) {		    ;		}		else {		    if (!$same_ref{$ref_word}) {			$flag_ref{$j} = $count;			$same_ref{$ref_word} = $count;		    }		    elsif ($same_ref{$ref_word} != $count) {			$flag_ref{$j} = $count;			$same_ref{$ref_word} = $count;		    }		    else {			last;		    }		}	    }	}    }    # ラベリング冯蔡に辫って、婶尸帽胳误を冯圭する    for ($i = 0; $i <= $matubi; $i++) {	if ($flag_res{$i}) {	    $rscount++;	    if ($rscount == 1 || $prev_flag_res == $flag_res{$i}) {		$res_line .= $kekka_result_tmp[$i];	    }	    elsif ($flag_res{$i} < $prev_flag_res) {		$res_line .= " " . $kekka_result_tmp[$i] . " ";	    }	    else {		$res_line .= " " . $kekka_result_tmp[$i];	    }	    $prev_flag_res = $flag_res{$i};	}	else {	    $rscount = 0;	    $res_line .= " " . $kekka_result_tmp[$i] . " ";	}	if ($flag_ref{$i}) {	    $rfcount++;	    if ($rfcount == 1 || $prev_flag_ref == $flag_ref{$i}) {		$ref_line .= $kekka_refer_tmp[$i];	    }	    elsif ($flag_ref{$i} < $prev_flag_ref) {		$ref_line .= " " . $kekka_refer_tmp[$i] . " " ; 	    }	    else {		$ref_line .= " " . $kekka_refer_tmp[$i];	    }	    $prev_flag_ref = $flag_ref{$i};	}	else {	    $rfcount = 0;	    $ref_line .= " " . $kekka_refer_tmp[$i] . " ";	}    }    @res_lines = split(' ', $res_line);    @ref_lines = split(' ', $ref_line);    $rcount2 = $#ref_lines + 1;    $hcount2 = $#res_lines + 1;    $ref2 += $rcount2;    $hyp2 += $hcount2;    ($kx2) = &dp2;		# 冯圭稿、浩びアラインメントを艰る    # 粕みでアラインメントを艰った冯蔡、驶淡粕みの婶尸で弥垂疙りに    # なっているところについて、赖豺冉年をやり木す。    # (驶淡の面に赖豺が崔まれていれば、OKとする。)    for ($i = $kx2 - 1; $i >= 0; $i--) {	if ($status2[$i] eq "S") {	    if ($kekka_result2[$i] =~ /\{.+\}/ &&		$kekka_refer2[$i] =~ /\{.+\}/) {		$kekka_result2[$i] =~ /(.*)\{(.+)\}(.*)/;		$result_head = $1;		$result_yomi = $2;		$result_tail = $3;		@resyomis = split('\/', $result_yomi);		$kekka_refer2[$i] =~ /(.*)\{(.+)\}(.*)/;		$refer_head = $1;		$refer_yomi = $2;		$refer_tail = $3;		@refyomis = split('\/', $refer_yomi);		foreach $resyomi (@resyomis) {		    if ($result_head) {			$resyomi = $result_head . $resyomi;		    }		    if ($result_tail) {			$resyomi = $resyomi . $result_tail;		    }		    foreach $refyomi (@refyomis) {			if ($refer_head) {			    $refyomi = $refer_head . $refyomi;			}			if ($result_tail) {			    $refyomi = $refyomi . $refer_tail;			}			$status2[$i] = "C" if $resyomi eq $refyomi;		    }		}	    }	    elsif ($kekka_result2[$i] =~ /\{.+\}/ &&		   $kekka_refer2[$i] !~ /\{.+\}/) {		$kekka_result2[$i] =~ /(.*)\{(.+)\}(.*)/;		$result_head = $1;		$result_yomi = $2;		$result_tail = $3;		@resyomis = split('\/', $result_yomi);		$ref_yomi = $kekka_refer2[$i];		foreach $resyomi (@resyomis) {		    if ($result_head) {			$resyomi = $result_head . $resyomi;		    }		    if ($result_tail) {			$resyomi = $resyomi . $result_tail;		    }		    $status2[$i] = "C" if $resyomi eq $ref_yomi;		}	    }	    elsif ($kekka_result2[$i] !~ /\{.+\}/ &&		   $kekka_refer2[$i] =~ /\{.+\}/) {		$res_yomi = $kekka_result2[$i];		$kekka_refer2[$i] =~ /(.*)\{(.+)\}(.*)/;		$refer_head = $1;		$refer_yomi = $2;		$refer_tail = $3;		@refyomis = split('\/', $refer_yomi);		foreach $refyomi (@refyomis) {		    if ($refer_head) {			$refyomi = $refer_head . $refyomi;		    }		    if ($refer_tail) {			$refyomi = $refyomi . $refer_tail;		    }		    $status2[$i] = "C" if $refyomi eq $res_yomi;		}	    }	    else {		;	    }	}    }    for ($i = $kx2 - 1; $i >= 0; $i--) {	local($hlen, $rlen, $lngth, $format2);	$hlen = length($kekka_result2[$i]);	$rlen = length($kekka_refer2[$i]);	$lngth = $hlen > $rlen ? $hlen : $rlen;	$format2 = "%-" . $lngth . "s ";	$status_str2 .= sprintf($format2, $status2[$i]);	$result_str2 .= sprintf($format2, $kekka_result2[$i]);	$refer_str2 .= sprintf($format2, $kekka_refer2[$i]);    }    $check_s = "";    undef(@status_tmp);    undef(@kekka_result_tmp);    undef(@kekka_refer_tmp);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -