1

短い情報: 私は python 3.0 を実行していて、NLTK をインストールしています (NLTK は 3.3 をサポートしていないため、3.3 から切り替えましたが、私が持っている他のすべての拡張機能は 3.3 用であるため、最悪です)
名前付きエンティティを抽出しようとすると、次のエラーが発生します:

File "D:\UM\Programming\Thesis\Thesis\test.py", line 10, in <module>
   sentences = nltk.sent_tokenize(file)
File "C:\Python30\Lib\site-packages\nltk\tokenize\__init__.py", line 75, in sent_tokenize
   tokenizer = load('tokenizers/punkt/english.pickle')
File "C:\Python30\Lib\site-packages\nltk\data.py", line 630, in load
   resource_val = pickle.load(opened_resource)
File "C:\Python30\lib\pickle.py", line 1323, in load
   return Unpickler(file, encoding=encoding, errors=errors).load()
ImportError: No module named copy_reg

非バイナリファイルにダンプするときに発生することをどこかで読んだことがありImportErrorますが、この場合、既にダンプされたピクルファイルを読み取ろうとしています。エラーを解決する方法を知っている人はいますか?
上記の行の変数は、少量のテキストを含むfile単なるです。string

4

1 に答える 1

0

この投稿によると、nltk 3.x にはまだ大きな問題があります。2.x の nltk のモデルは、python 2.x を使用して保存されました。Python 3 の新しいユニコード対応 io システムでは、モデルを再トレーニングし、Python 3 で読み取り可能なファイルに保存する必要があります。投稿には、新しくトレーニングされたモデルを含むブランチへのリンクもありますが、まだ試していません。したがって、基本的に unpickle によって作成された nltk のエラー メッセージは、python 2 と 3 の間の互換性のない pickle バージョンが原因です

于 2013-08-14T10:57:23.863 に答える