Настройки языка подпроцесса 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)
и посмотрим, работает ли это.