使用spacy添加/删除停用词的最佳方法是什么?我正在使用token.is_stop函数,并希望对该集进行一些自定义更改 . 我正在查看文档,但找不到关于停用词的任何内容 . 谢谢!
您可以在处理文本之前编辑它们(请参阅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
注意:这似乎工作<= v1.8 . 对于较新的版本,请参阅其他答案 .
对于2.0版,我使用了这个:
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
这会将所有停用词加载到一个集合中 .
您可以将停用词修改为 STOP_WORDS 或首先使用您自己的列表 .
STOP_WORDS
使用Spacy 2.0.11,您可以使用以下方法之一更新其停用词集:
要添加单个停用词:
import spacy nlp = spacy.load("en") nlp.Defaults.stop_words.add("my_new_stopword")
要一次添加几个停用词:
import spacy nlp = spacy.load("en") nlp.Defaults.stop_words |= {"my_new_stopword1","my_new_stopword2",}
要删除单个停用词:
import spacy nlp = spacy.load("en") nlp.Defaults.stop_words.remove("whatever")
要一次删除几个停用词:
import spacy nlp = spacy.load("en") nlp.Defaults.stop_words -= {"whatever", "whenever"}
注意:要查看当前的一组停用词,请使用:
print(nlp.Defaults.stop_words)
对于2.0使用以下内容:
for word in nlp.Defaults.stop_words: lex = nlp.vocab[word] lex.is_stop = True
4 回答
您可以在处理文本之前编辑它们(请参阅this post):
注意:这似乎工作<= v1.8 . 对于较新的版本,请参阅其他答案 .
对于2.0版,我使用了这个:
这会将所有停用词加载到一个集合中 .
您可以将停用词修改为
STOP_WORDS
或首先使用您自己的列表 .使用Spacy 2.0.11,您可以使用以下方法之一更新其停用词集:
要添加单个停用词:
要一次添加几个停用词:
要删除单个停用词:
要一次删除几个停用词:
注意:要查看当前的一组停用词,请使用:
对于2.0使用以下内容:
for word in nlp.Defaults.stop_words: lex = nlp.vocab[word] lex.is_stop = True