python - 在 Python 中从另一个列表中排除一个列表中的项目的有效方法

标签 python string list tokenize stop-words

我有一个包含 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/

相关文章:

使用递归计算c中单词(字符串)中字母出现的次数

ios - 获取字符串的长度

python - 从listitembutton捕获值到textinput kivy/python

python - 获取Python列表的所有元素,包括子列表

c++ - 如何制作 ' i ' vector

python - 用 pandas 搜索并返回匹配子串的索引

Python:使用先前出现的索引进行映射

java swing- 可以在应用程序图标/标题旁边添加 JLabel 吗?

python - SQLAlchemy 错误?我不知道

python - 根据日期范围合并行