gpt4 book ai didi

python - 给定列表中指定项目的位置,逐渐将一个添加到索引列表

转载 作者:太空宇宙 更新时间:2023-11-03 14:36:06 25 4
gpt4 key购买 nike

给定 token 列表,输入:

>>> tokenized_text = "[CLS] my dog is cute [SEP] he likes slack ##ing [SEP]".split()
>>> tokenized_text
['[CLS]', 'my', 'dog', 'is', 'cute', '[SEP]', 'he', 'likes', 'slack', '##ing', '[SEP]']

目标是为直到每个 [SEP] 从左到右创建一个索引,找到 [SEP] 标记,然后在每个之后递增地添加 1 [SEP],因此上面的 tokenize_text 列表所需的输出索引是:

[0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1]

我试过:

# Find the indices of `[SEP]`.
>>> sep_indices = np.array(np.where(np.array(tokenized_text) == "[SEP]"))[0]
>>> sep_indices
array([ 5, 10])

>>> prev = 0
>>> out =[]
>>> for i, idx in enumerate(sep_indices):
... for _ in range(idx-prev):
... out.append(i)
... prev = idx
...
>>> out = [0] + out[:-1]
>>> out
[0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1]

但是有没有更简单的方法来获得正确的输出呢?

最佳答案

使用 NumPy 的更简单和矢量化的方式 -

In [116]: a = np.asarray(tokenized_text)

In [117]: m = a == "[SEP]"

In [118]: m.cumsum()-m
Out[118]: array([0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1])

关于python - 给定列表中指定项目的位置,逐渐将一个添加到索引列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58316410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com