2016-12-15 44 views
9

Cách tốt nhất để thêm/xóa từ dừng bằng spacy là gì? Tôi đang sử dụng chức năng token.is_stop và muốn thực hiện một số thay đổi theo yêu cầu đối với bộ này. Tôi đã nhìn vào tài liệu nhưng không thể tìm thấy bất cứ điều gì liên quan đến từ dừng. Cảm ơn!Thêm/xóa từ dừng bằng spacy

+2

Danh sách đầy đủ: 'từ spacy.en.word_sets nhập STOP_WORDS' – Xeoncross

Trả lời

11

Bạn có thể chỉnh sửa chúng trước khi xử lý văn bản của bạn như thế này (xem this post):

>>> import spacy 
>>> nlp = spacy.load("en") 
>>> nlp.vocab["the"].is_stop = False 
>>> nlp.vocab["definitelynotastopword"].is_stop = True 
>>> sentence = nlp("the word is definitelynotastopword") 
>>> sentence[0].is_stop 
False 
>>> sentence[3].is_stop 
True 

Lưu ý: Điều này dường như làm việc < = v1.8. Đối với các phiên bản mới hơn, hãy xem các câu trả lời khác.

+1

Ah tốt đẹp. Cảm ơn bạn! –

+1

Giải pháp này dường như không hoạt động nữa với phiên bản 1.9.0? Tôi nhận được 'TypeError: một số nguyên là bắt buộc' –

+0

@ E.K. Đã có cùng một vấn đề. Xem câu trả lời của tôi dưới đây. – petezurich

2

Đối với phiên bản 2.0 Tôi sử dụng này:

from spacy.lang.en.stop_words import STOP_WORDS 

print(STOP_WORDS) # <- set of Spacy's default stop words 

STOP_WORDS.add("your_additional_stop_word_here") 

for word in STOP_WORDS: 
    lexeme = nlp.vocab[word] 
    lexeme.is_stop = True 

này nạp tất cả các từ dừng vào một tập hợp.

Bạn có thể sửa đổi các từ dừng của mình thành STOP_WORDS hoặc sử dụng danh sách của riêng bạn ngay từ đầu.

+2

đã làm điều đó với phiên bản 2.0 và có "ImportError: No module named en.stop_words" ... gợi ý? – user1025852

+0

@ user1025852 Nếu có cập nhật câu trả lời của tôi. – petezurich

+1

'spacy.lang.en.stop_words' cũng đưa ra lỗi. – jxn

Các vấn đề liên quan