在python中使用subprocess.call
执行opennlp POSTagger
时,结果出错。但是当我把同样的命令放到我的终端,结果是正确的。在
经过一些测试,我认为这是因为opennlp
未能正确加载模型文件,那么问题是什么?这个模型是用中文训练的,我使用的是python2.7。在
OpenNLP运行时没有任何警告或错误,但它将输入语句标记为完全错误的。它在终端中给出正确的标签。我想是编码问题,但我不确定。在
这是密码。它没有什么特别的,只包含ascii字符。 打印此命令并将其复制到终端,结果是正确的。在
现在我知道是语言环境/编码问题(用strace调试脚本)。但是将python语言环境设置为en_US.utf-8
或{zh_CN.utf-8
。在
opennlp_path = './opennlp/bin/opennlp'
pos_model = 'train.pos.model'
pos_predict_cmd = [opennlp_path, 'POSTagger', pos_model]
subproc = call(pos_predict_cmd)
首先,看一下http://docs.python.org/library/subprocess.html#using-the-subprocess-module,读一两遍,然后尝试使用
call(pos_predict_cmd, shell=True)
看看是否有效。在相关问题 更多 >
编程相关推荐