3

我正在尝试通过 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 语句中输出,而不是返回。

我错过了什么吗?

4

2 回答 2

3

2>&1 需要在命令中添加才能得到完整的输出。这解决了我的问题。

于 2012-04-15T18:45:02.540 回答
0

尝试使用shell_exec——或者,如果你想要更多的控制,proc_open——而不是 exec()。

于 2012-04-15T11:15:25.827 回答