1

Pythonで実行するopennlp POSTaggerと、結果がうまくいきません。subprocess.callしかし、同じコマンドを端末に入力すると、結果は正しいです。

opennlpいくつかのテストの後、これはモデル ファイルを正しく読み込めなかったことが原因だと思いますが、何が問題なのですか? モデルは中国語でトレーニングされており、Python 2.7 を使用しています。

OpenNLP は警告やエラーなしで実行されますが、入力文に完全に間違ったタグを付けます。ターミナルで正しいタグを提供します。エンコーディングの問題だと思いますが、よくわかりません。

これがコードです。特別なものではなく、ASCII 文字のみが含まれています。このコマンドを出力して端末にコピーすると、正しい結果が得られます。

これで、ロケール/エンコーディングの問題であることがわかりました (strace でスクリプトをデバッグします)。しかし、python ロケールをen_US.utf-8orに設定しても意味がありません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)
4

1 に答える 1

0

まず、http://docs.python.org/library/subprocess.html#using-the-subprocess-moduleを見て、1、2 回読んでから、使用してみてcall(pos_predict_cmd, shell=True)、それが機能するかどうかを確認してください。

于 2012-05-05T11:07:53.313 に答える