我试图找到一种方法来计算Python中两个术语的相关性,但我只能找到计算相似度的方法。
我找到了 a Perl script似乎在做这项工作: use WordNet::Similarity::hso;
use WordNet::QueryData;
my $wn = WordNet::QueryData->new();
my $object = WordNet::Similarity::hso->new($wn);
my $value = $object->getRelatedness("car#n#1", "bus#n#2");
($error, $errorString) = $object->getError();
die "$errorString\n" if($error);
print "car (sense 1) <-> bus (sense 2) = $value\n";
我尝试围绕Perl脚本编写Python包装器:
import subprocess
set1 = 'church#n#1'
set2 = 'temple#n#1'
cmd = ['perl', './sample.pl', set1, set2]
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE)
for line in proc.stdout:
if 'Similarity' in line:
similarity = int(line.split("=")[-1])
print similarity
我已经从二进制文件中安装了perl v.5.26.1,但是当我运行我的Python脚本时,我得到了。
Traceback (most recent call last):
File "asdf/sshso.py", line 6, in <module> proc = subprocess.Popen(cmd, stdout=subprocess.PIPE)
File "C:\Python27\lib\subprocess.py", line 390, in __init__ errread, errwrite)
File "C:\Python27\lib\subprocess.py", line 640, in _execute_child startupinfo)
WindowsError: [Error 2] Das System kann die angegebene Datei nicht finden
我知道我的Python / Perl组合有错误,无法正常工作。
我可以理解,因为Perl代码看起来并不复杂。我正在寻找一种方法将我的Python单词解析为Perl脚本并获取我计算的相关性值。
我必须为44,000个项目执行此操作,因此性能非常重要。