2014-11-01 16 views
35

Tôi đang cố bắt đầu một dự án phân tích tình cảm và tôi sẽ sử dụng phương pháp dừng từ. Tôi đã thực hiện một số nghiên cứu và tôi thấy rằng nltk có stopwords nhưng khi tôi thực hiện lệnh có một lỗi.NLTK và Stopwords Fail #lookuperror

Những gì tôi làm là những điều sau đây, để biết đó là những từ mà NLTK sử dụng (giống như những gì bạn có thể tìm thấy ở đây http://www.nltk.org/book/ch02.html trong section4.1):

from nltk.corpus import stopwords 
stopwords.words('english') 

Nhưng khi tôi nhấn enter tôi có được

--------------------------------------------------------------------------- 
LookupError        Traceback (most recent call last) 
<ipython-input-6-ff9cd17f22b2> in <module>() 
----> 1 stopwords.words('english') 

C:\Users\Usuario\Anaconda\lib\site-packages\nltk\corpus\util.pyc in __getattr__(self, attr) 
66 
67  def __getattr__(self, attr): 
---> 68   self.__load() 
69   # This looks circular, but its not, since __load() changes our 
70   # __class__ to something new: 

C:\Users\Usuario\Anaconda\lib\site-packages\nltk\corpus\util.pyc in __load(self) 
54    except LookupError, e: 
55     try: root = nltk.data.find('corpora/%s' % zip_name) 
---> 56     except LookupError: raise e 
57 
58   # Load the corpus. 

LookupError: 
********************************************************************** 
    Resource 'corpora/stopwords' not found. Please use the NLTK 
    Downloader to obtain the resource: >>> nltk.download() 
    Searched in: 
- 'C:\\Users\\Meru/nltk_data' 
- 'C:\\nltk_data' 
- 'D:\\nltk_data' 
- 'E:\\nltk_data' 
- 'C:\\Users\\Meru\\Anaconda\\nltk_data' 
- 'C:\\Users\\Meru\\Anaconda\\lib\\nltk_data' 
- 'C:\\Users\\Meru\\AppData\\Roaming\\nltk_data' 
********************************************************************** 

Và, vì vấn đề này mọi thứ như thế này không thể chạy đúng (lấy các lỗi tương tự):

>>> from nltk.corpus import stopwords 
>>> stop = stopwords.words('english') 
>>> sentence = "this is a foo bar sentence" 
>>> print [i for i in sentence.split() if i not in stop] 

Bạn có biết điều gì có thể là vấn đề? Tôi phải sử dụng các từ trong tiếng Tây Ban Nha, bạn có gợi ý một phương pháp khác không? Tôi cũng nghĩ rằng sử dụng gói Goslate với bộ dữ liệu bằng tiếng Anh

Cảm ơn bạn đã đọc!

Đ .: Tôi sử dụng Ananconda

Trả lời

94

Dường như bạn không có tập hợp từ dừng trên máy tính của mình.

Bạn cần khởi động Trình tải xuống NLTK và tải xuống tất cả dữ liệu bạn cần.

Mở Python console và thực hiện như sau:

>>> import nltk 
>>> nltk.download() 
showing info http://nltk.github.com/nltk_data/ 

Trong cửa sổ giao diện mà mở ra bạn chỉ cần nhấn vào nút 'Download' để tải về tất cả corpora hoặc vào tab 'Corpora' và chỉ tải về những cái bạn cần/muốn.

+49

Hoặc, nếu bạn muốn tránh GUI và biết những gì bạn muốn tải xuống: '' 'nltk.download (" stopwords ")' '' – KLDavenport

1

Nếu bạn muốn cài đặt thủ công NLTK Corpus.

1) Chuyển đến http://www.nltk.org/nltk_data/ và tải xuống tệp NLTK Corpus bạn muốn.

2) Bây giờ trong một vỏ Python kiểm tra giá trị của nltk.data.path

3) Chọn một trong những con đường mà tồn tại trên máy tính của bạn, và giải nén các tập tin dữ liệu vào thư mục phụ corpora bên trong.

4) Bây giờ bạn có thể nhập dữ liệu từ nltk.corpos nhập các tệp từ dừng

tham khảo: https://medium.com/@satorulogic/how-to-manually-download-a-nltk-corpus-f01569861da9

-2
import nltk 
nltk.download() 

Bấm vào nút tải khi gui nhắc. (nltk.download('stopwords') không hoạt động đối với tôi)

3

Tôi đã thử từ thiết bị đầu cuối ubuntu và tôi không biết tại sao GUI không hiển thị theo câu trả lời tttthomasssss. Vì vậy, tôi đã theo dõi nhận xét từ KLDavenport và nó đã hoạt động. Dưới đây là tóm tắt:

Mở terminal/dòng lệnh của bạn và loại trăn sau đó

>>> import nltk .>>> nltk.download("stopwords")

này sẽ lưu trữ các tệp từ dừng corpus dưới nltk_data.Đối với trường hợp của tôi, nó là /home/myusername/nltk_data/corpora/stopwords.

Nếu bạn cần một kho lưu trữ khác, hãy truy cập nltk data và tìm kho văn bản có ID của họ. Sau đó, sử dụng ID để tải xuống giống như chúng tôi đã làm cho các từ dừng.

+0

Điều này làm việc tuyệt vời nhưng tôi ngạc nhiên rằng đây không phải là thứ bạn có thể làm với pip. Thay vào đó, bạn phải viết kịch bản để kéo các tài nguyên này trên mỗi môi trường. – timhysniu