在 python 中执行opennlp POSTagger
withsubprocess.call
时,结果出错。但是当我将相同的命令放入终端时,结果是正确的。
经过一些测试,我认为这是因为opennlp
未能正确加载模型文件,所以问题是什么?该模型是用中文训练的,我使用python 2.7。
OpenNLP 运行时没有任何警告或错误,但它标记输入句子完全错误。它在终端中提供正确的标签。我想这是一个编码问题,但我不确定。
这是代码。它没什么特别的,只包含 ascii 字符。打印此命令并复制到终端,结果是正确的。
现在我知道这是语言环境/编码问题(通过 strace 调试脚本)。但是将 python 语言环境设置为en_US.utf-8
or是没有用的zh_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)