В Python мне нужно сгенерировать dict
, который отображает букву в предопределенное представление " one-hot " этой буквы. В качестве иллюстрации, dict
должно выглядеть так:
{ 'A': '1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0',
'B': '0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0', # ...
}
Существует один бит (представленный в виде символа) на каждую букву алфавита. Следовательно, каждая строка будет содержать 25 нулей и один 1. Положение 1
определяется положением соответствующей буквы в алфавите.
Я придумал код, который генерирует это:
# Character set is explicitly specified for fine grained control
_letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
n = len(_letters)
one_hot = [' '.join(['0']*a + ['1'] + ['0']*b)
for a, b in zip(range(n), range(n-1, -1, -1))]
outputs = dict(zip(_letters, one_hot))
Есть ли более эффективный / чище / более питонический способ сделать то же самое?