Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 根据条件从现有标记和元组创建新标记和元组_Python_Loops_Tuples_Token_Tokenize - Fatal编程技术网

Python 根据条件从现有标记和元组创建新标记和元组

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'] 以及前一个解析器已经计算出应该在哪里有位置

这与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']
以及前一个解析器已经计算出应该在哪里有位置或数量插槽的索引:

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}