Здравствуйте. Вроде сам для себя задачу простую сделал, а как ее в виде кода реализовать что-то не придумаю.
Суть - есть некий набор паттернов, шаблонов по которым ищем по файлам, может что-то находиться по паттерну, а что-то нет. В зависимости от того, какой паттерн нашелся (или их несколько), то указывать наиболее вероятный вариант.
Пример:
Список паттернов задан в виде
pattern1,image
pattern2,image
pattern3, image
pattern4, music
pattern5, music
pattern6, music
pattern7, text
pattern8, text
pattern9, text
Если к примеру нашлось pattern1,pattern3,pattern6, то считаем что найденное это image.
Типы файлов приведены просто как пример. Сами паттерны есть, поиск есть, а вот как сделать наиболее вероятный вариант -что-то туплю
Для правильного вопроса надо знать половину ответа
Есть утилита file, она определяет тип файла и некоторые его параметры. Можете посмотреть реализацию и наборы сигнатур в исходниках ( ftp://ftp.astron.com/pub/file/ ).
Сергей Бровко, Для вероятного можно, например, использовать систему весов, когда каждый сработавший паттерн добавляет вес к своему типу. Но подбирать коэффициенты - то ещё занятие.
А можно обучить перцептроны, каждый паттерн - вход, тип - выход перцептрона. Но, опять же, возможна ситуация, когда будут одновременно активны два выхода.
Но зачем нужен вероятный способ, когда есть точный? Практически каждый тип файла можно точно идентифицировать по набору сигнатур. Исключения составляют только файлы с RAW-данными, например беззаголовочные аудио-файлы (alaw, ulaw).
xmoonlight, да, это нечеткий поиск. Rsa97 поиск по файлам приведен только для примера, не более. По сути да, получается нечеткий поиск, но вот как сделать соответствие "если нашло больше кусков одного типа, то скорее всего этот тип и есть"
Сергей Бровко, Так я и говорю, считайте вес каждого типа. В простейшем случае, вес каждого паттерна равен 1. Если паттерн есть, добавляем вес к соответствующему типу. Какой тип набрал в конце анализа больший вес, тот и выбираем.
В более сложном случае, каждый паттерн имеет дробные положительные и отрицательные веса для каждого типа, тогда получается аналог однослойного перцептрона.