Настройки языка подпроцесса Python

При выполнении opennlp POSTagger с subprocess.call в питоне результат идет не так. Но когда я помещаю ту же команду в свой терминал, результат правильный.

После некоторого тестирования, я думаю, это потому, что opennlp не удалось загрузить файл модели правильно, так в чем же проблема? Модель обучена на китайском языке, и я использую Python 2.7.

OpenNLP работает без каких-либо предупреждений или ошибок, но он помечает входное предложение совершенно неверно. Это дает правильные теги в терминале. Я думаю, это проблема кодирования, но я не уверен.

Вот код Ничего особенного и содержит только символы ASCII. Распечатайте эту команду и скопируйте ее в терминал, результат верный.

Теперь я знаю, что это проблема локали / кодирования (отладка сценария с помощью strace). Но бесполезно устанавливать языковой стандарт Python на en_US.utf-8 или же zh_CN.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)

1 ответ

Сначала взгляните на http://docs.python.org/library/subprocess.html, прочитайте его один или два раза, затем попробуйте использовать call(pos_predict_cmd, shell=True) и посмотрим, работает ли это.

Другие вопросы по тегам