2017-01-06 12 views
3

Как создать горячее кодирование слов с каждым словом, представленным разреженным вектором размера словаря и индексом этого конкретного слова, приравненным к 1, используя тензорный поток?Одно горячее кодирование для слов из текстового тела

что-то вроде

oneHotEncoding (слова = [ 'а', 'б', 'с', 'd']) -> [[1,0,0,0], [0,1, 0,0], [0,0,1,0], [0,0,0,1]]?

+0

[здесь] (https://stackoverflow.com/questions/33681517/ tensorflow-one-hot-encoder) является объяснением того, как использовать одну горячую кодировку в Tensorflow – AAA

ответ

0

Scikits one hot encoder принимает встроенный массив (http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.OneHotEncoder.html). Основываясь на вашем примере вы могли бы нам словарь для отображения слов целых чисел и идти оттуда:

import numpy as np 
from sklearn.preprocessing import OneHotEncoder 
wdict = {'a': 0, 'b': 1, 'c': 2, 'd': 3} 
dictarr = np.asarray(wdict.values()).reshape(-1, 1) 
enc = OneHotEncoder() 
enc.fit(dictarr) 
enc.transform([[2]]).toarray() 

, который дает

array([[ 0., 0., 1., 0.]])