Унифицируйте классификацию текста и изображений (Python) - PullRequest
0 голосов
/ 04 февраля 2019

Я работаю над кодом для классификации текстов научных статей (используя заголовок и реферат).И для этого я использую SVM, который обеспечивает хорошую точность (83%).В то же время я использовал CNN для классификации изображений этих статей.Моя идея состоит в том, чтобы объединить классификатор текста с классификатором изображения, чтобы повысить точность.

Возможно?Если это так, у вас есть идея, как я могу это реализовать или какое-то руководство?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

Если вы получаете вероятность от обоих классификаторов, вы можете усреднить их и получить объединенный результат.Однако лучше использовать взвешенное среднее, и в этом случае вы можете использовать набор проверки, чтобы найти подходящее значение для веса.

prob_svm = probability from SVM text classifier
prob_cnn = probability from CNN image classifier
prob_total = alpha * prob_svm + (1-alpha) * prob_cnn  # fine-tune alpha with validation set

Если вы можете получить другой классификатор (возможно, другую версию любогоиз этих двух классификаторов), вы также можете сделать голосование большинством, т.е. взять класс, по которому соглашаются два или все три классификатора.

0 голосов
/ 04 февраля 2019

Вы можете использовать CNN, чтобы сделать оба.Для этого вам понадобится два (или даже три) входа.Один для текста (или два, где один для аннотации, а другой для заголовка) и второй вход для изображения.Тогда у вас будет несколько пульных слоев, прежде чем объединить их в одной точке.Затем вы подключаете некоторые дополнительные CNN или плотные слои.

В этой модели также может быть несколько выходов.Например, комбинированный, один для текста и один для изображений.Если вы используете keras, вам понадобится функциональный API. Изображение примера модели можно найти здесь (в этом примере они используют LSTM, но, думаю, вам следует придерживаться CNN.)

...