Spacyを使用するコードベースで作業しています。以下を使用してspacyをインストールしました。
Sudo pip3 install spacy
その後
Sudo python3 -m spacy download en
この最後のコマンドの最後に、メッセージが表示されました。
Linking successful
/home/rayabhik/.local/lib/python3.5/site-packages/en_core_web_sm -->
/home/rayabhik/.local/lib/python3.5/site-packages/spacy/data/en
You can now load the model via spacy.load('en')
さて、コードを実行しようとすると、次の行で:
from spacy.en import English
次のエラーが表示されます。
ImportError: No module named 'spacy.en'
Stackexchangeを調べたところ、最も近いのは spacyでのインポートエラーです: "enという名前のモジュールはありません" これは私の問題を解決しません。
任意の助けをいただければ幸いです。ありがとう。
編集:私は以下を行うことでこれを解決したかもしれません:
Python 3.5.2 (default, Sep 14 2017, 22:51:06)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import spacy
>>> spacy.load('en')
<spacy.lang.en.English object at 0x7ff414e1e0b8>
そして次に使用:
from spacy.lang.en import English
他に答えがある場合に備えて、私はこれを開いたままにしています。
はい、ソリューションが正しいことを確認できます。 pipからダウンロードしたspaCyのバージョンはv2.0で、これには多くの新機能が含まれていますが、 APIへのいくつかの変更 も含まれています。その1つは、すべての言語データをサブモジュールspacy.lang
に移動して、物事を整理して整理することです。したがって、spacy.en
を使用する代わりに、spacy.lang.en
からインポートします。
- from spacy.en import English
+ from spacy.lang.en import English
ただし、spacy download en
を実行するときにダウンロードするものはspacy.lang.en
とは異なります。 spaCyに同梱されている言語データには、トークン化ルール、ストップワード、または見出し語化テーブルなどの静的データが含まれています。ダウンロードできるen
パッケージは、統計モデルen_core_web_sm
のショートカットです。これには、spaCyが品詞タグ、依存関係、および名前付きエンティティの予測を行うことを可能にするためのバイナリデータだけでなく、言語データも含まれています。
en
をダウンロードする代わりに、実際に完全なモデル名を使用することをお勧めします。
python -m spacy download en_core_web_sm
nlp = spacy.load("en_core_web_sm")
spacy.load
を呼び出すと、spaCyは次のことを行います。
"en_core_web_sm"
(パッケージまたはショートカットリンク)という名前のインストール済みモデルを見つけます。meta.json
を読んで、使用している言語(この場合はspacy.lang.en
)と、その処理パイプラインの外観(この場合はtagger
、parser
、ner
)を確認します。詳細については、 ドキュメントのこのセクション を参照してください。
次のコマンドを使用して、anacondaディストリビューションからspacyをインストールしました。
conda install -c conda-forge spacy
その後、次のコマンドを使用してエラーなしで英語をダウンロードできました。
python -m spacy download en
そのためにはenではなくen_core_web_smを使用しなければなりませんでした。許可の問題について不平を言っています。以下は完全に機能します:
import spacy
spacy.load('en_core_web_sm')
from spacy.lang.en import English
提供された回答には混乱があると思います。言及された正しいこと:
ただし:ファイルen_core_web_smは、spacy.lang.enからインポートするファイルとは異なります。実際、最初のファイルは、データセット内のスペイシートレインでトレーニングし、結果をパッケージ化した後、2番目から作成されます。 spacy.lang.enには、モデルの定義が含まれています:見出し語検索テーブル、stop_words、字句属性(など)。しかし、それだけです。依存関係グラフやその他の機能が機能するように、データセットでトレーニングされていません。
SpaCyを使用する場合、これは十分に明確であると思います。
en_core_web_smフォルダーは、spacyフォルダーの外部にダウンロードされました。私はそれをspacy/dataフォルダーにコピーし、spacyで文書化されているようにコードを実行できました
Windows 10およびAnacondaのインストールでこの問題に直面している方は、スクリプトを実行する前に、コマンドラインでwhere python
を使用してconda python実行可能ファイルを探してください。
私の場合、PATHのpythonは
C:\Users\XXX\.windows-build-tools\python27\python.exe
私が必要なのは
c:\Users\XXX\AppData\Local\Continuum\anaconda3\python.exe
パスに正しいpythonを追加するか、この場所に移動して実行します
python -m spacy download en
動作するはずです。