Python 根据条件从现有标记和元组创建新标记和元组
这与a非常相关,但我很难适应我的用例 我有一句话:Python 根据条件从现有标记和元组创建新标记和元组,python,loops,tuples,token,tokenize,Python,Loops,Tuples,Token,Tokenize,这与a非常相关,但我很难适应我的用例 我有一句话:“2011年福布斯亚洲500亿以下最佳200人” 我有这样的代币: oldTokens = [u'Forbes', u'Asia', u'200', u'Best', u'Under', u'500', u'Billion', u'2011'] newTokens = [u'ForbesAsia', u'200', u'Best', u'Under', u'500Billion', u'2011'] 以及前一个解析器已经计算出应该在哪里有位置
“2011年福布斯亚洲500亿以下最佳200人”
我有这样的代币:
oldTokens = [u'Forbes', u'Asia', u'200', u'Best', u'Under', u'500', u'Billion', u'2011']
newTokens = [u'ForbesAsia', u'200', u'Best', u'Under', u'500Billion', u'2011']
以及前一个解析器已经计算出应该在哪里有位置或数量插槽的索引:
numberTokenIDs = {(7,): 2011.0, (2,): 200.0, (5,6): 500000000000.00}
locationTokenIDs = {(0, 1): u'Forbes Asia'}
令牌ID对应于有位置或编号的令牌索引,目标是获得一组新的令牌,如:
oldTokens = [u'Forbes', u'Asia', u'200', u'Best', u'Under', u'500', u'Billion', u'2011']
newTokens = [u'ForbesAsia', u'200', u'Best', u'Under', u'500Billion', u'2011']
使用新的数字和位置标记ID(以避免索引越界异常):
基本上,我希望通过新的简化标记集,最终创建一个新句子,名为:
“位置\u插槽编号\u插槽最好在编号\u插槽编号\u插槽下”
通过检查新的令牌集并将正确的令牌ID替换为LOCATION\u SLOT
或NUMBER\u SLOT
。如果我使用当前的一组数字和位置令牌ID执行此操作,我将得到:
“位置\u插槽位置\u插槽编号\u插槽最好在编号\u插槽编号\u插槽编号\u插槽下”。
我该怎么做
另一个例子是:
Location token IDs are: (0, 1)
Number token IDs are: (3, 4)
旧样本代币[u'United',u'Kingdom',u'USD',u'1.240',u'十亿]
其中,我想删除令牌,并更改位置和数字令牌ID,以便能够替换以下句子:
sampleTokens[numberTokenID] = "NUMBER_SLOT"
sampleTokens[locationTokenID] = "LOCATION_SLOT"
这样被替换的令牌是[u'LOCATION\u SLOT',u'USD',u'NUMBER\u SLOT']
请注意,如果元组中有多个值(元组也可以包含>2个元素,例如美利坚合众国
),则连接应连接元组中的所有值。这应该有效(如果我理解正确):
要查找新的令牌ID,请执行以下操作:
new_index_by_token = dict(map(lambda (i, t): (t, i), enumerate(newTokens))
numberTokenIDs = {(new_index_by_token[token_by_index[group[0]]],): value
for group, value in numberTokenIDs.items()}
locationTokenIDs = {(new_index_by_token[token_by_index[group[0]]],): value
for group, value in locationTokenIDs.items()}
如何返回新的编号和位置标记ID以匹配这些新标记?e、 g.
numberTokenIDs={(5,):2011.0,(1,):200.0,(4,):500000000000.00}