0

従来の NLTK の代わりに NLTK を使用した POS タグ付けにHunpos タガーを使用しようとしていますpos_tag()が、バイナリenglish.modelまたはen_wsj.model.

実際、私はLinux Mintにいて、それらを に入れ/usr/local/bin、環境変数をこのパスに設定し、このパスをofファイルで使用されるHUNPOSパラメーターに渡そうとしましたが、ファイルを認識すると、このエラーがスローされます:path_to_bin__init__nltk/tag/hunpos.py

>>> ht = HunposTagger('en_wsj.model','/usr/local/bin/en_wsj.model')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/nltk-2.0.4-py2.7.egg/nltk/tag/hunpos.py", line 89, in __init__
    shell=False, stdin=PIPE, stdout=PIPE, stderr=PIPE)
  File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
    errread, errwrite)
  File "/usr/lib/python2.7/subprocess.py", line 1249, in _execute_child
    raise child_exception
OSError: [Errno 8] Exec format error

何が起こっているのか誰にもわかりませんか?

4

2 に答える 2

2

私はそれを行う方法を見つけたと思います。同じ問題を抱えていた人には、ソース コードをダウンロードしてビルドし、NLTK ドキュメントに記載されている方法とは異なる方法で呼び出すことをお勧めします。私にとっては些細なことではなかったので、ここに順を追って説明します。

Unix の場合:

1) Subversion SVN をお持ちでない場合はダウンロードし、プロジェクトのソース コードを確認してください。

svn checkout http://hunpos.googlecode.com/svn/trunk/ hunpos-read-only

これにより、trunkチェックアウトしたディレクトリが作成されます。

2) 次に、正常にビルドできるようにするにはocamlbuild、Objective Caml の自動コンパイルが必要になる場合があります。sudo apt-get install ocaml-noxこれを処理する必要があります。

3)ディレクトリ (Hunpos のソース コードをダウンロードした場所) に移動しcdtrunk

./build.sh build

4) この時点でtagger.native、ディレクトリにバイナリ ファイルが作成されますtrunk。ディレクトリ全体を自分のtrunkディレクトリに置きます/usr/local/bin(スーパーユーザーとして行う必要がある場合があります)。

5)ここen_wsj.model.gzからファイルをダウンロードし、解凍して、バイナリも に入れます。en_wsj.modelusr/local/bin

6) 最後に、Python スクリプトで、HunposTagger以前に作成した両方のファイルへのパスを渡すクラスのインスタンスを作成できます。

>>> from nltk.tag.hunpos import HunposTagger
>>> ht = HunposTagger(path_to_model='/usr/local/bin/en_wsj.model', \
                      path_to_bin=  '/usr/local/bin/trunk/tagger.native')
>>> ht.tag('I want to go to San Francisco next year'.split())
[('I', 'PRP'), ('want', 'VBP'), ('to', 'TO'), ('go', 'VB'), ('to', 'TO'),
 ('San', 'NNP'), ('Francisco', 'NNP'), ('next', 'JJ'), ('year', 'NN')]
>>> ht.close()

(閉じることを忘れないでください...閉じたくない場合は、withステートメントも使用できます)

7) それでも問題が解決しない場合は、環境変数HUNPOSをに設定してみてください/usr/local/bin/trunk。これを行うには、~/.bashrc(または~/.bash_profileMacOS で)次の行を追加します。

export HUNPOS=/usr/local/bin/trunk

端末を再起動します。

それは私にとってはうまくいきましたが、誰かがこれを設定するためのより良い、より短い、またはより簡単な方法を持っているなら、聞いてみたいです:)

于 2013-07-02T12:34:36.723 に答える
1

Linux で作業している場合、ソースからコンパイルせずにすぐに使用できるコンパイル済みバージョンの hunpos があります。

$ wget https://hunpos.googlecode.com/files/hunpos-1.0-linux.tgz
$ wget https://hunpos.googlecode.com/files/en_wsj.model.gz
$ tar xvfz hunpos-1.0-linux.tgz
$ gunzip en_wsj.model.gz
$ mv en_wsj.model hunpos-1.0-linux
$ python
>>> from nltk.tag import HunposTagger
>>> hpt = HunposTagger('hunpos-1.0-linux/en_wsj.model','hunpos-1.0-linux/hunpos-tag')
>>> hpt.tag('this is a foo bar sentence'.split())
[('this', 'DT'), ('is', 'VBZ'), ('a', 'DT'), ('foo', 'JJ'), ('bar', 'NN'), ('sentence', 'NN')]
于 2014-01-02T23:30:02.287 に答える