【发布时间】:2014-02-11 07:04:08
【问题描述】:
我在这里发布一个 perl 程序,以使用 perl 程序查找两个同义词集之间的相似性:
#! /usr/bin/perl -w
use strict;
use warnings;
use WordNet::QueryData;
use WordNet::Similarity::random;
use WordNet::Similarity::lesk;
use WordNet::Similarity::vector;
use WordNet::Similarity::vector_pairs;
# Get the concepts.
my $wps1 = shift;
my $wps2 = shift;
unless (defined $wps1 and defined $wps2) {
print STDERR "Undefined input\n";
print STDERR "Usage: sample.pl synset1 synset2\n";
print STDERR "\tSynsets must be in word#pos#sense format (ex., dog#n#1)\n";
exit 1;
}
print STDERR "Loading WordNet... ";
my $wn = WordNet::QueryData->new;
die "Unable to create WordNet object.\n" if(!$wn);
print STDERR "done.\n";
# Create an object for each of the measures of semantic relatedness.
print STDERR "Creating lesk object... ";
my $lesk = WordNet::Similarity::lesk->new($wn, "config-files/config-lesk.conf");
die "Unable to create lesk object.\n" if(!defined $lesk);
my ($error, $errString) = $lesk->getError();
die $errString if($error > 1);
print STDERR "done.\n";
# Find the relatedness of the concepts using each of the measures.
my $value = $lesk->getRelatedness($wps1, $wps2);
($error, $errString) = $lesk->getError();
die $errString if($error > 1);
print "LESK Similarity = $value\n";
print "LESK ErrorString = $errString\n" if $error;
__END__
在终端上我将其用作:
coep@coep:~/WordNet-Similarity-2.05/samples$ perl sample.pl church#n#1 temple#n#1
Loading WordNet... done.
Creating lesk object... done.
LESK Similarity = 77
coep@coep:~/WordNet-Similarity-2.05/samples$
谁能告诉我如何为这个 perl 程序编写一个 python 包装器?
【问题讨论】:
-
此工具crazy-compilers.com/bridgekeeper 已在 python 站点上列出。有关更多信息,请尝试此链接的 Perl 部分:wiki.python.org/moin/IntegratingPythonWithOtherLanguages#Perl
-
@user3193087 - 哇,我希望我一个月前就知道疯狂编译器的事情了...我最近一直在将大量遗留的 perl 代码移植到 python.. 谢谢
标签: python perl wrapper integrate