У меня есть большая (~ 2,5 млн записей) база данных метаданных изображений. Каждая запись представляет собой изображение и имеет уникальный идентификатор, поле описания, список ключевых слов, разделенных запятыми (скажем, 20-30 ключевых слов на изображение) и некоторые другие поля. Там нет реальной схемы базы данных, и я не могу узнать, какие ключевые слова существуют в базе данных, не перебирая каждое изображение и не считая их. Кроме того, метаданные поступают от нескольких разных поставщиков, у каждого из которых есть свое представление о том, как заполнять различные поля.
Есть некоторые вещи, которые я хотел бы сделать с этими метаданными, но, поскольку я совершенно не знаком с такого рода алгоритмами, я даже не знаю, с чего начать поиск.
- Некоторые из этих изображений имеют определенные ограничения на использование (указаны в тексте), но каждый поставщик формулирует их по-своему, и невозможно гарантировать согласованность. Я хотел бы иметь простой тест, который я мог бы применить к изображению, который указывает, свободен ли этот образ от ограничений или нет. Он не должен быть идеальным, просто «достаточно хорошим». Я подозреваю, что мог бы использовать для этого какой-то байесовский фильтр, верно? Я мог бы обучить фильтр с набором изображений, которые, как я знаю, либо ограничены, либо не ограничены, и тогда фильтр сможет делать прогнозы для остальных изображений? Или есть лучшие способы?
- Я также хотел бы иметь возможность индексировать эти изображения в соответствии с «сходством ключевых слов», чтобы, если у меня есть одно изображение, я мог быстро определить, с какими другими изображениями оно имеет наибольшее количество общих ключевых слов. В идеале алгоритм также должен учитывать, что некоторые ключевые слова более значимы, чем другие, и взвешивать их по-разному. Я даже не знаю, с чего начать поиск здесь, и был бы очень рад любым указателям :)
Я работаю в основном на Java, но выбор языка здесь не имеет значения. Я больше заинтересован в том, чтобы узнать, какие подходы лучше всего подходят для начала чтения. Заранее спасибо :)