在Python中对frozenset进行二进制搜索的另一种选择。

问题描述 投票:0回答:1

我需要在frozenset上进行二进制搜索,但由于索引在frozenset上不工作,所以我不能使用 bisect 库。我想把frozenset转换为一个列表,以方便工作,但问题是转换(list(frozenset))打乱了顺序,然后我就不能进行二进制搜索了。你有什么解决办法?为了更清楚,让我解释一下我到底在做什么。在一个NLP任务中,我需要从我的文本中删除停顿词,所以我从scikit-learn中导入了停顿词(在我看来,它有比NLTK更好的停顿词集合)。from sklearn.feature_extraction.text import ENGLISH_STOP_WORDS 它返回了一个frozenset,其中的停止词是按字母顺序排列的。现在我想从我的文本中删除停止符,最好使用二进制搜索检查停止符中是否有标记(很明显,因为我的停止符是按字母顺序排列的,进行二进制搜索很有效)。所以,它是如下的。

import bisect

bisect.bisect(ENGLISH_STOP_WORDS, word)

这就是我被卡住的地方!我希望用上面的代码在 stopwords 列表中找到所需的索引,然后将我的词与列表中前后的词进行比较。但是我得到了这个错误。TypeError: 'frozenset' object does not support indexing.

顺便说一下,我没有尝试过其他库的stopwords list(spaCy,gensim等),所以我不知道它们在这种情况下是否更好用。但这里主要是学习处理frozenset上的二进制搜索.先谢谢了。

python binary-search stop-words bisect frozenset
1个回答
3
投票

如果你想知道这个词是否是停顿词,只需做。

if word in ENGLISH_STOP_WORDS:
    pass
© www.soinside.com 2019 - 2024. All rights reserved.