【发布时间】:2012-04-15 05:57:19
【问题描述】:
我正在尝试通过 PHP 执行用于 POS 标记的 python 脚本。 但它没有返回完整的输出。
Python 脚本:
import nltk
import sys
text = sys.argv[1]
tokenize_into_words = nltk.word_tokenize(text)
print text
result = nltk.pos_tag(tokenize_into_words)
print result
print "Done!"
PHP 脚本
$cmd = 'python /Library/WebServer/Documents/varticle/vcmdpos.py ' . $string2;
$tmp = exec($cmd,$output);
print_r($output);
命令:
python /Library/WebServer/Documents/varticle/vcmdpos.py 科学家
观察到的输出:
数组([0] => 科学家)
预期输出:
数组 ([0] => 科学家 [1] => "[('Scientists', 'NNS')]" [2] => "完成!")
当我手动运行命令时,运行大约需要 5-10 秒。 [这可能是由于进行 POS 标记或导入 nltk 所需的时间。]
但是当通过 PHP 运行时,它在没有返回后立即从 nltk.pos_tag 或 print 语句返回和输出。
我错过了什么吗?
【问题讨论】:
-
$tmp 的值是多少,您确定 $string2 设置为“科学家”吗?如果你在 python 脚本的顶部打印出一些东西会发生什么?
-
@msgmash.com $tmp 不打印任何内容。顶部的任何内容,即在打印 nltk.pos_tag 之前。
-
2>需要在命令中加上&1才能得到完整的输出。
-
您是在命令行还是通过浏览器运行 php 文件?另外,@vaicidrewar 的建议有帮助吗?