我有一个包含 8000 个字符串(停用词)的列表和一个包含 100,000 个不同长度的字符串的列表,其中包含数百万个单词。我正在使用该函数来标记 100,000 个字符串并从列表 stop_words 中排除非字母数字标记和标记。
def tokenizer(text):
return [stemmer.stem(tok.lower()) for tok in nltk.word_tokenize(text)/
if tok.isalpha() and tok.lower() not in stop_words]
我已经使用 600 个字符串测试了这段代码,耗时 60 秒。如果我删除排除停用词的条件,则在相同的 600 个字符串上需要 1 秒
def tokenizer(text):
return [stemmer.stem(tok.lower()) for tok in nltk.word_tokenize(text)/
if tok.isalpha()]
我希望有一种更有效的方法可以将一个列表中找到的项目从另一个列表中排除。
我很感激任何帮助或建议
谢谢
最佳答案
将 stop_words
设为一个集合,以便查找为 O(1)。
stop_words = set(('word1', 'word2', 'word3'))
关于python - 在 Python 中从另一个列表中排除一个列表中的项目的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14293610/