获取与字典匹配的列表的键/值

时间:2020-07-02 06:15:38

标签: python nlp

培训数据(data_tr->包含11300个doc,每个doc均以下面给出的数值编码为数组)。词汇表是由2000个最常用单词的键和值组成的词典。我的问题是使用整个训练数据(data_tr)的字典(key,values)对将data_tr(numeric)的数组转换为单词。我是python编程的新手。

data_tr= [array([ 700,  152,  572,  572,  619,  724,  326, 1571,  572,   99,  724,
        326, 1571,  276,    1,  281, 1232,  267,  267,  222,   11,    2,.......dtype=int64)
 array([ 331,  152,  397, ..., 1273,   89,  228], dtype=int64)...............

vocab = {'limited': 1481, 'child': 181, 'four': 586, 'sleep': 1714, 'hate': 1141, 'forget': 607, 'whose': 902, 'violate': 1945, 'bike': 370, 'swap': 1616, 'lord': 889, 'sorry': 480, 'worth': 625, 'risk': 911, 'rise': 1474, 'every': 119,...........}

我试图通过以下方式解决此问题:

    keys=list(vocab.keys())
    values=list(vocab.values())
    for e in data_tr[0]:
         print (keys[values.index(e)])

在这里它可以很好地处理一个文档(data_tr [0]),但无法为整个训练数据(data_tr)生成单词(data_tr)。我想找回所有文档的单词(11300 doc)

1 个答案:

答案 0 :(得分:0)

首先,我认为,如果您构造一个反向字典,这将是最简单的,以便您可以从数字中查找单词:

vocab_r = dict((v, k) for k, v in vocab.items())

根据进一步的讨论,似乎您可能想要以下内容:

for doc in data_tr:
    print([vocab_r[e] for e in doc])

或列表列表:

print([[vocab_r[e] for e in doc] for doc in data_tr])