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