2016-03-28 3 views
0

Я работаю над «Идентификация сценария из двуязычных документов». Я хочу классифицировать страницы/блоки как Eng (класс 1), хинди (класс 2) или смешанные с использованием libsvm в matlab. но проблема в том, что данные обучения у меня состоят из образцов, соответствующих только хинди и английским страницам/блокам, но не смешанных страниц.Классификация многоклассы в SVM

Данные испытаний, которые я хочу предоставить, могут состоять из смешанных страниц/блоков, в этом случае я хочу, чтобы это было классифицировано как «смешанное». Я планирую сделать это с использованием оценки доверия или значений вероятности. например, если значение вероятности класса 1 больше порогового значения (скажем, 0,8), а значение вероятности класса 2 меньше порогового значения (0,05), то оно будет классифицироваться как класс 1, а класс 2 - наоборот. но если вышеупомянутые два условия не удовлетворяют, то я хочу классифицировать их как «Смешанные».

Третье возвращаемое значение из «libsvmpredict» - это prob_values, и я планировал продолжить этот prob_values, чтобы решить, являются ли testdata хинди, английским или смешанным. но в нескольких местах я узнал, что «libsvmpredict» не создает фактические значения prob_values.

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

+0

текст Hindi в латинских символах? Если нет, я не думаю, что вам нужен классификатор, поскольку компьютер явно распознает и отображает символы английского/хинди правильно. То есть вы можете определить этот язык, просмотрев кодированные символы (вероятно, UTF-8). –

+0

Документы, которые у меня есть, - это отсканированные изображения из хинди/английских книг при 300 dpi. Вся цель моего проекта - определить сценарий изображения входного документа, и на основе идентифицированного сценария он будет передан соответствующему OCR, который, в свою очередь, преобразует изображение в удобочитаемый формат. –

ответ

0

Это не modus operandi для SVM.
Ни в коем случае SVM не могут предсказать данный класс, не зная об этом, не зная, как отделить такой класс от всех других классов.

Функция svmpredict() в LibSVM на самом деле показывает оценки вероятности, и чем больше это значение, тем увереннее вы можете относиться к своему прогнозу. Но вы не можете полагаться на такие значения, если у вас есть только два класса, чтобы предсказать третий класс: действительно, svmpredict() вернет столько значений решения, сколько есть классов.

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

Мое предложение: вместо того, чтобы тратить время на установление порогов, с высокой вероятностью плохих действий, объединить некоторые из этих текстов или создать несколько новых файлов с некоторыми хинди и некоторыми английскими линиями, чтобы добавить к вашим данным обучения некоторые надлежащие смешанные документы и выполняют стандартную систему SVM с 3 классами.
Для создания таких файлов вы можете также использовать Matlab, который имеет довольно приличный файл функции ввода/вывода, такие как fread() написано, fwrite(), fprintf(), fscanf(), importdata() и так далее ...

Смежные вопросы