Python では、文字をその文字の定義済みの「ワンホット」表現にdict
マップするを生成する必要があります。例として、は次のようになります。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', # ...
}
アルファベットの文字ごとに 1 ビット (文字として表される) があります。したがって、各文字列には 25 個のゼロと 1 個の 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))
同じことを行うためのより効率的/クリーン/よりPythonicな方法はありますか?