Python子进程区域设置

时间:2012-05-05 09:34:54

标签: python opennlp

在python中使用opennlp POSTagger执行subprocess.call时,结果出错了。但是当我将相同的命令放入我的终端时,结果是正确的。

经过一些测试,我认为这是因为opennlp无法正确加载模型文件,所以问题是什么?模型用中文训练,我使用python 2.7。

OpenNLP运行时没有任何警告或错误,但它标记输入句子完全错误。它在终端中提供正确的标签。我想这是一个编码问题,但我不确定。

这是代码。它没什么特别的,只包含ascii字符。 打印此命令并将其复制到终端,结果是正确的。

现在我知道它是语言环境/编码问题(通过strace调试脚本)。但是将python语言环境设置为en_US.utf-8zh_CN.utf-8是没有用的。我的shell语言环境设置为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)

1 个答案:

答案 0 :(得分:0)

首先,查看http://docs.python.org/library/subprocess.html#using-the-subprocess-module,阅读一次或两次,然后尝试使用call(pos_predict_cmd, shell=True),看看是否有效。