我正在使用NLP spacy
库,我创建了一个函数来返回文本中的标记列表。
import spacy
def preprocess_text_spacy(text):
stop_words = ["a", "the", "is", "are"]
nlp = spacy.load('en_core_web_sm')
tokens = set()
doc = nlp(text)
for word in doc:
if word.is_currency:
tokens.add(word.lower_)
elif len(word.lower_) == 1:
if word.is_digit and float(word.text) == 0:
tokens.add(word.text)
elif not word.is_punct and not word.is_space and not word.is_quote and not word.is_bracket and not in stop_words:
tokens.add(word.lower_)
return list(tokens)
这个函数是不正确的,因为删除停止字不工作。一切都是好的,只有当我删除最后一个条件and not in stop_words
。
如何升级此函数以根据定义的列表删除停止词以及所有其他条件语句?
3条答案
按热度按时间v8wbuo2f1#
你的代码看起来很好,有一个小的变化
在elif末尾放置和不在stop_words中的str(word)
iyr7buue2#
您的条件写错了。您的最后一个
elif
等价于:如果你试图执行这段代码,你会得到一个语法错误,要检查某个元素是否在某个可迭代对象中,你需要在关键字
in
的左边提供那个元素,你只需要写word
:rkkpypqq3#
您需要将stop_words添加到函数中,该函数将停止词列表作为输入,然后您需要修改向标记列表添加单词的条件,以检查单词是否在stop_words列表中
样品:
输出: