gpt4 book ai didi

python - 如果与当前标记相同,则删除句子中的前一个标记 python

转载 作者:太空宇宙 更新时间:2023-11-03 16:20:40 26 4
gpt4 key购买 nike

我有 2 个键值对字典,例如:

tokenIDs2number = {(6, 7): 1000000000.0, (22,): 700.0, (12,): 3000.0}

tokenIDs2number = {(27, 28): u'South Asia'}

键是句子中数字槽和位置槽的索引位置的元组:

GDP in 2007 totaled about $ 1 billion , or about $ 3,000 per capita -LRB- exceeding the average of about $ 700 in the rest of South Asia -RRB- .

我想循环遍历数字和位置的所有元组,并从元组中删除值(如果它们彼此相邻),例如制作它们:

tokenIDs2number = {(7,): 1000000000.0, (22,): 700.0, (12,): 3000.0}

tokenIDs2number = {(28,): u'South Asia'}

这样稍后我就可以用位置和数字槽填充这个句子标记,所以句子就变成了:

GDP in 2007 totaled about $ NUMBER_SLOT , or about $ NUMBER_SLOT per capita -LRB- exceeding the average of about $ NUMBER_SLOT in the rest of LOCATION_SLOT -RRB- .

而不是:

GDP in 2007 totaled about $ NUMBER_SLOT NUMBER_SLOT , or about $ NUMBER_SLOT per capita -LRB- exceeding the average of about $ 700 in the rest of LOCATION_SLOT LOCATION_SLOT -RRB- .

当前代码:

for locationTokenIDs, location in tokenIDs2location.items():
for numberTokenIDs, number in tokenIDs2number.items():
prevNoID=numberTokenIDs[0]
prevLocID=locationTokenIDs[0]
for numberTokenID in numberTokenIDs:
for locationTokenID in locationTokenIDs:
if numberTokenID==prevNoID+1:
numberTokenIDs.remove(numberTokenIDs[prevNoID])
if numberTokenID>0 and numberTokenID<(len(sampleTokens)-1):
prevNoID = numberTokenID
if locationTokenID==prevLocID+1:
locationTokenIDs.remove(locationTokenIDs[prevLocID])
if locationTokenID>0 and locationTokenID<(len(sampleTokens)-1):
prevLocID = locationTokenID

但是,我似乎不能只从元组中删除数字,所以我正在努力弄清楚如何做到这一点。

最佳答案

由于tuple(通常是dict键)是不可变的,因此您不能直接更改键。但是,您可以使用字典理解将您的字典转换为您需要的一行:

tokenIDs2number = {(6, 7): 1000000000.0, (22,): 700.0, (12,): 3000.0}
tokenIDs2number = {(k[-1],): v for k, v in tokenIDs2number.items()}

使用 k[-1] 始终访问最后一个元素可以让您以相同的方式处理任何长度的元组。

关于python - 如果与当前标记相同,则删除句子中的前一个标记 python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38506857/

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