Обработка мультиклассовой классификации - PullRequest
0 голосов
/ 11 июля 2019

Я работаю с многоклассовым классификатором, чтобы выполнить тонкую настройку значений слов. По сути, я хочу получить, начиная с предложения, одно и то же предложение, помеченное с помощью смещения WordNet. Например:

#The starting sentence after preprocessing
long since reviewed objectives benefit service program 

#the output sentence
long_wn:00106124a since review_wn:00092618v objective_wn:00002179n benefit_wn:00009904n service_wn:00070654n program_wn:00064646n 

Как вы, наверное, понимаете, мне нужно обработать около 200000 меток, и, конечно, невозможно уместить в память, используя плотный слой и категорическую кроссентропию, даже с генераторами, поскольку после заполнения метки будут закодированы в горячем виде в массивы в форме [N, 60, 200000].

Модель:

Layer (type)                 Output Shape              
===============================================
embedding (Embedding)        (None, 60, 400)        
_______________________________________________
bi_lstm_1 (Bidirectional)    (None, 60, 256)               
_______________________________________________
bi_lstm_2 (Bidirectional)    (None, 60, 256)             
_______________________________________________
output (Dense)               (None, 60, 210633)

Полезные характеристики модели, которые могут помочь:

model_keras = Sequential()
#...
model_keras.add((Dense(len(wn2id), #210633
                 activation='softmax')))

model_keras.compile(optimizer='adadelta',
                    loss='categorical_crossentropy',
                    metrics=['acc'])

Тогда я хочу спросить: есть ли способ обработать такое большое количество ярлыков?

Есть ли возможность построить модель, которая в качестве выходной информации дает вектор, аналогичный вектору внедрения, вместо простого классификатора меток?

Есть ли какое-то решение, которое я не рассматривал?

...