100分求一段perl代码改为python或.NET
#!/usr/bin/perl
( $words, $pos, $ngram, $lex, $hmm ) = @ARGV;
open WORDS, $words or die "Can not open the $words file!\n";
open POS, $pos or die "Can not open the $pos file!\n";
open NGRAM, $ngram or die "Can not open the $ngram file!\n";
open LEX, $lex or die "Can not open the $lex file!\n";
open HMM, " > $hmm " or die "Can not open the $hmm file\n";
%wordkey = {};
$wnum = 0;
while( <WORDS> )
{
chomp;
$wnum++;
@wk = split;
$wordkey{$wk[1]} = $wk[0];
}
print HMM "M= $wnum\n";
close WORDS;
%poskey = {};
$pnum = 0;
while( <POS> )
{
chomp;
$pnum++;
@pk = split;
$poskey{$pk[1]} = $pk[0];#4 vb
}
print HMM "N= $pnum\n";
close POS;
@unipos = ();
@bipos = ();
while ( <NGRAM> )
{
chmop;
@png = split;
$n = @png;
if ( $n == 2 )
{
$unipos[$poskey{$png[0]}] = $png[1];#vb 100
}
if ( $n == 3 )
{
$bipos[$poskey{$png[0]}][$poskey{$png[1]}] = $png[2];
}
}
close NGRAM;
print HMM "A:\n";
foreach $i ( 1..$pnum )
{
foreach $j ( 1..$pnum )
{
$p = ( $bipos[$i][$j] + 1 ) / ( $unipos[$i] + $pnum ) ;
printf HMM ("%5.4f ", $p);
}
print HMM "\n";
}
print HMM "B:\n";
@wordpos = ();
while ( <LEX> )
{
chmop;
@wpn = split;
$wordpos[$poskey{$wpn[1]}][$wordkey{$wpn[0]}] = $wpn[2];
}
close LEX;
foreach $i ( 1..$pnum )
{
foreach $j ( 1..$wnum )
{
$p = ( $wordpos[$i][$j] + 1 ) / ( $unipos[$i] + $wnum ) ;
printf HMM ("%5.4f ", $p);
}
print HMM "\n";
}
print HMM "pi:\n";
$sum = 0;
shift ( @unipos );
foreach $n ( @unipos )
{
$sum += $n;
}
foreach $n ( @unipos )
{
$p = $n / $sum;
printf HMM ("%5.4f ", $p);
}
print HMM "\n";大概100行左右的perl,因为需要了解这段代码的意思,可以改为python或.NET。主要不理解perl中%wordkey = {}指什么类型?
$poskey{$pk[1]} = $pk[0];又有什么用处,好像perl的数据也是用[]用表达的。
非常感谢!
...全文
相关推荐
Smbian 基础知识
尽管还可以使用Java、Python、.NET、Perl、OPL和Adobe Flash等其他语言,但Symbian OS C++提供了对操作系统功能的最大利用和最佳性能。
Symbian系统开发教程(1)
虽然还可以使用Java、Python、.NET、Perl、OPL和Adobe Flash等其他语言,但Symbian OS C++是最强大且高效的,因为它直接运行编译后的代码,无需运行时解释。
Python入门教程
由于Python语言的简洁性、易读性以及可扩展性,在国外用Python做科学计算的研究机构日益增多,一些知名大学已经采用Python来教授程序设计课程。例如卡耐基梅隆大学的编程基础、麻省理工学院的计算机科学及编程导论就使用Python语言讲授。
Symbian S60 入门宝典
尽管也可以使用Java、Python、.NET (包括Visual Basic 和带AppForge’s Crossfire 的C#)、Perl、OPL 和Adobe Flash等其他语言进行开发,但是
symbian系统开发教程
此外,虽然也可以使用Java、Python、.NET、Perl、OPL和Adobe Flash等语言,但Symbian OS C++是最强大且高效的,因为它能够充分利用操作系统功能,并以编译码直接运行,


