2017-11-14 16 views
6

मैं एक कोडबेस पर काम कर रहा हूं जो स्पासी का उपयोग करता है।आयात त्रुटि: 'spacy.en' नामक कोई मॉड्यूल नहीं

sudo pip3 install spacy 

और फिर

sudo python3 -m spacy download en 

यह पिछले आदेश के अंत में, मैं एक संदेश मिला:: मैं का उपयोग कर spacy स्थापित है, अब

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 पर देखा है और सबसे करीब है:: मुझे निम्न त्रुटि देता है Import error with spacy: "No module named 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 

मैं अभी भी मामले में किसी भी अन्य उत्तर देखते हैं इस खुला रखते हुए कर रहा हूँ।

+1

धन्यवाद, लाइन को बदलकर मेरी समस्या हल हो गई! आपने इसे कैसे समझ लिया? – yuqli

+1

@yuqli: मुझे बिल्कुल याद नहीं है, लेकिन मुझे लगता है कि मैं स्रोत के माध्यम से जा रहा था। – rayabhik

+0

जर्मन के लिए भी काम करता है 'सुडो पायथन 3-एम स्पासी डाउनलोड डी' – nik

उत्तर

8

हां, मैं पुष्टि कर सकता हूं कि आपका समाधान सही है। आपके द्वारा पाइप से डाउनलोड स्पासी का संस्करण v2.0 है, जिसमें कई नई सुविधाएं शामिल हैं, लेकिनभी शामिल हैं। उनमें से एक यह है कि चीज क्लीनर और बेहतर व्यवस्थित रखने के लिए सभी भाषा डेटा को एक सबमिशन spacy.lang में स्थानांतरित कर दिया गया है। तो spacy.en का उपयोग करने के बजाय, अब आप spacy.lang.en से आयात करते हैं।

बीटीडब्ल्यू, यह बिल्कुल स्पष्ट नहीं है कि आप अपने कोड में क्या करने की कोशिश कर रहे थे - लेकिन यदि आप एक अंग्रेजी मॉडल लोड कर रहे हैं, तो आमतौर पर English आयात और प्रारंभ करने की आवश्यकता नहीं है। स्पासी आपके लिए यह करेगा।

  1. स्थापित मॉडल 'en' नामित (एक पैकेज या शॉर्टकट लिंक) खोजें:

    nlp = spacy.load('en') # <-- an instance of `English` with data loaded in 
    doc = nlp(u"This is a text.") 
    

    असल में, spacy.load('en') के लिए एक शॉर्टकट है।

  2. अपने meta.json पढ़ें और जांचें कि यह कौन सी भाषा का उपयोग कर रही है, और इसकी प्रसंस्करण पाइपलाइन को कैसे दिखाना चाहिए।
  3. भाषा वर्ग आरंभ करें और इसमें पाइपलाइन जोड़ें।
  4. मॉडल डेटा से बाइनरी वजन में लोड करें ताकि पाइपलाइन घटक (जैसे टैगर, पार्सर या इकाई पहचानकर्ता) भविष्यवाणियां कर सकें।

अधिक जानकारी के लिए this section in the docs देखें।

+0

धन्यवाद एक गुच्छा इनस। हां, मैंने देखा कि अंग्रेजी आयात करने की कोई आवश्यकता नहीं थी। यह किसी और द्वारा लिखित कोड है, और मेरे पास अभी इसे साफ़ करने का समय नहीं है, लेकिन बाद में उम्मीद कर सकते हैं। – rayabhik

0

मैं एनen_core_web_sm बजाय उपयोग करने के लिए है कि काम करने के लिए किया था। यह अनुमति समस्या के बारे में शिकायत कर रहा है।निम्नलिखित पूरी तरह से काम करता है:

import spacy 
spacy.load('en_core_web_sm') 
from spacy.lang.en import English 
संबंधित मुद्दे