检查令牌(在熊猫列上)是否在三元组的外部列表中



我有一个数据帧,其中有一列"标记",其中包含由多个文本提取的单个单词,例如:

text =  "hello it's me"

df['token'] 
0  hello
1  it
2  '
3  s
4  me

数据帧很长,因为我有 1000 个句子,并且所有句子都像我上面写的那样被拆分和分割。 现在我有一个三元组列表,比如['no way out', 'my life is', 'hello my name']我想检查这些句子是否以列表中的三元组之一开头,我该怎么做?

在我看来,代币更好的数据结构是一个set。通过定义df.token的集合,您可以将查找复杂度降低到O(1),并且由于您只需要迭代句子列表,这给我们留下了一个O(len(l))的方法:

tokens = set(df.token.values.tolist())
l = ['no way out', 'my life is', 'hello my name']
[i.split(maxsplit=1)[0] in tokens for i in l]
# [False, False, True]

最新更新